Преобразование списка в словарь с использованием JsonConvert.SerializeObject, но сохранение ключа как int?

Есть ли способ сохранить ключ как 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.

Я знаю, что могу просто написать быструю функцию, чтобы получить соответствующий элемент и преобразовать только ключ в этой функции, но я подумал, что спрошу, поскольку сохранение типа ключа в исходном формате кажется более чистым и правильным.

Спасибо.

какая-то конкретная причина, по которой вы выполняете сериализацию вручную? Если вы возвращаете эти данные клиенту (браузеру), MVC может автоматически сериализовать их для вас.

ADyson 01.05.2018 11:59

Я устанавливаю переменную Javascript при рендеринге моей страницы (fields = @Html.Raw(@Model.ClientData); через Razor, чтобы я мог получить доступ к этой информации через клиентскую сторону, и мне не нужно было делать отдельный запрос, поскольку эти данные необходимы при создании моей страницы.

Thierry 01.05.2018 12:34

Чтобы быть ясным, моя @ Model.ClientData - это функция, вызывающая код, упомянутый в исходном вопросе.

Thierry 01.05.2018 12:35

Разве вы не можете просто сделать this.Fields.Select(f => new { Id = f.Id }) и сериализовать его? Почему вам нужно сначала выбрать (а затем немедленно отбросить) другие поля, если вы сразу после идентификатора, и почему вам нужно превратить его в словарь?

ADyson 01.05.2018 12:43
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
4
31
0

Другие вопросы по теме