Есть ли способ сохранить ключ как int
при преобразовании списка в словарь с помощью JsonConvert.SerializeObject
.
Я вызываю следующий код из своего веб-приложения asp.net mvc:
var jsonString = JsonConvert.SerializeObject(this.Fields.Select(f => new
{
Id = f.Id,
Name = f.Name,
Type = f.Type,
...
}).ToDictionary(x => x.Id));
Приведенный выше код работает хорошо, но он преобразует мое поле Id в строку вместо того, чтобы сохранять его в исходном типе, то есть int
. Есть ли способ сохранить его как int
, чтобы мне не приходилось преобразовывать ключ в int
каждый раз, когда мне нужно получить доступ к моему словарю со стороны клиента при использовании javascript.
Я знаю, что могу просто написать быструю функцию, чтобы получить соответствующий элемент и преобразовать только ключ в этой функции, но я подумал, что спрошу, поскольку сохранение типа ключа в исходном формате кажется более чистым и правильным.
Спасибо.
Я устанавливаю переменную Javascript при рендеринге моей страницы (fields = @Html.Raw(@Model.ClientData);
через Razor, чтобы я мог получить доступ к этой информации через клиентскую сторону, и мне не нужно было делать отдельный запрос, поскольку эти данные необходимы при создании моей страницы.
Чтобы быть ясным, моя @ Model.ClientData - это функция, вызывающая код, упомянутый в исходном вопросе.
Разве вы не можете просто сделать this.Fields.Select(f => new { Id = f.Id })
и сериализовать его? Почему вам нужно сначала выбрать (а затем немедленно отбросить) другие поля, если вы сразу после идентификатора, и почему вам нужно превратить его в словарь?
какая-то конкретная причина, по которой вы выполняете сериализацию вручную? Если вы возвращаете эти данные клиенту (браузеру), MVC может автоматически сериализовать их для вас.