Как вернуть объект JSon

Я использую плагин jQuery, которому нужен объект JSON со следующей структурой (я буду извлекать значения из базы данных):

{ results: [ { id: "1", value: "ABC", info: "ABC" }, { id: "2", value: "JKL", info: "JKL" }, { id: "3", value: "XYZ", info: "XYZ" } ] } 

Вот мой class:

 public class results { int _id; string _value; string _info; public int id { get { return _id; } set { _id = value; } } public string value { get { return _value; } set { _value = value; } } public string info { get { return _info; } set { _info = value; } } } 

Так я его сериализую:

 results result = new results(); result.id = 1; result.value = "ABC"; result.info = "ABC"; string json = JsonConvert.SerializeObject(result); 

Но это вернет только одну строку. Не могли бы вы помочь мне в возвращении более чем одного результата? Как я могу получить результат в формате, указанном выше?

Прежде всего, нет такой вещи, как объект JSON . То, что у вас есть в вашем вопросе, является литералом объекта JavaScript (см. Здесь, чтобы получить отличное обсуждение этой разницы). Вот как вы собираетесь сериализовать то, что у вас есть в JSON, хотя:

Я бы использовал анонимный тип, заполненный вашим типом results :

 string json = JsonConvert.SerializeObject(new { results = new List() { new Result { id = 1, value = "ABC", info = "ABC" }, new Result { id = 2, value = "JKL", info = "JKL" } } }); 

Также обратите внимание, что сгенерированный JSON имеет элементы результата с id s типа Number вместо строк. Я сомневаюсь, что это будет проблемой, но было бы достаточно легко изменить тип id на string в C #.

Я также подберу тип results и избавлюсь от полей поддержки:

 public class Result { public int id { get ;set; } public string value { get; set; } public string info { get; set; } } 

Кроме того, classы обычно являются PascalCased а не camelCased .

Вот сгенерированный JSON из приведенного выше кода:

 { "results": [ { "id": 1, "value": "ABC", "info": "ABC" }, { "id": 2, "value": "JKL", "info": "JKL" } ] } 

У вас есть только одна строка для сериализации. Попробуйте что-то вроде этого:

 List resultRows = new List resultRows.Add(new results{id = 1, value="ABC", info="ABC"}); resultRows.Add(new results{id = 2, value="XYZ", info="XYZ"}); string json = JavaScriptSerializer.Serialize(new { results = resultRows}); 
  • Изменить в соответствии с исходным исходным кодом json

** Редактировать 2: извините, но я пропустил, что использовал JSON.NET. Используя JavaScriptSerializer приведенный выше код дает следующий результат:

 {"results":[{"id":1,"value":"ABC","info":"ABC"},{"id":2,"value":"XYZ","info":"XYZ"}]} 
  • Как создать JSON.NET Date to String custom Converter
  • Дезициализация свойств самореференции не работает
  • Deserialize json, который имеет некоторое имя свойства, начиная с числа
  • Как программно выбирать конструктор во время десериализации?
  • Как я могу зашифровать выбранные свойства при сериализации моих объектов?
  • Как использовать Json.NET для JSON-моделирования в проекте MVC5?
  • Разбор JSON в C #
  • Как сериализовать словарь как часть его родительского объекта с помощью Json.Net
  • Может ли Json.NET сериализовать / десериализовать в / из streamа?
  • Json.NET (Newtonsoft.Json) - Два «свойства» с таким же именем?
  • Ошибка десериализации Newtonsoft JSON.net, где поля в порядке изменения JSON
  • Interesting Posts

    Стеки растут вверх или вниз?

    Сохранение дополнительных данных с заказом в Magento

    Получить координаты при нажатии на карту в android

    Почему я чувствую напряжение на глазах, когда смотрю на 19-дюймовый матовый дисплей?

    Как отправить dispatch_sync, dispatch_async, dispatch_after и т. Д. В Swift 3, Swift 4 и дальше?

    Получение проводника Windows 7 для отображения окна поиска без включения поиска в Windows

    Как передать словарь в качестве параметра методу ActionResult из jQuery / Ajax?

    Как сделать Notepad ++ удалять строки, подобные Eclipse?

    Как реализовать OnFragmentInteractionListener

    Преимущества и недостатки #define против констант?

    Удалить внедренный документ во вложенном массиве документов

    Настраивать DataSource программно в Spring Boot

    Загрузка больших изображений с помощью Picasso и настраиваемого объекта Transform

    Повышение точности решения трансцендентного уравнения

    Как добавить пользовательские атрибуты html в JSX

    Давайте будем гением компьютера.