Сериализация списка объектов в JSon без имени родительского объекта - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть список объектов и вывод их с использованием кода ниже в моем приложении MVC.

 public JsonResult ConversionInfo(string srcFormat)
        {
            return Json(MetadataDbService.FindBySourceFormat(srcFormat).Select(m => new
            {
                m.ConversionMeta
            }), JsonRequestBehavior.AllowGet);
        }

Код дает такой результат.Каждая строка / элемент начинается с имени родительского объекта ConversionMeta.

[
{"ConversionMeta":{"Id": "delete", "Name": "delete page from PDF", "Description": "You can delete any page from PDF blah blah...",…}},
{"ConversionMeta":{"Id": "delete", "Name": "delete page from PDF", "Description": "You can delete any page from PDF blah blah...",…}}
]

Хотелось бы получить такой результат, есть идеи как изменить код?

[
{"Id": "delete", "Name": "delete page from PDF", "Description": "You can delete any page from PDF blah blah...",…},
{"Id": "delete", "Name": "delete page from PDF", "Description": "You can delete any page from PDF blah blah...",…}
]

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я бы порекомендовал создать класс, содержащий все свойства, и сериализовать класс в json, используя JSON.NET

. Вы можете установить JSON.NET через Nuget

PM> Install-Package Newtonsoft.Json

.создайте массив класса и заполните его всеми вашими записями

Затем вы можете использовать метод JsonConvert.SerialzeObject для создания Json

Вот мой код:

static void Main(string[] args)
{
    ConversionMeta[] conversionMetaArray = new ConversionMeta[3];
    conversionMetaArray[0] = new ConversionMeta()
    {
        Id = "deleted",
        Name = "delete page from PDF",
        Description = "You can delete any page from PDF blah blah..."
    };
    conversionMetaArray[1] = new ConversionMeta()
    {
        Id = "deleted",
        Name = "delete page from PDF",
        Description = "You can delete any page from PDF blah blah..."
    };
    conversionMetaArray[2] = new ConversionMeta()
    {
        Id = "deleted",
        Name = "delete page from PDF",
        Description = "You can delete any page from PDF blah blah..."
    };

    string json = JsonConvert.SerializeObject(conversionMetaArray);
}

Это класс:

class ConversionMeta
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

И это вывод:

[
{"Id":"deleted","Name":"delete page from PDF","Description":"You can delete any page from PDF blah blah..."},
{"Id":"deleted","Name":"delete page from PDF","Description":"You can delete any page from PDF blah blah..."},
{"Id":"deleted","Name":"delete page from PDF","Description":"You can delete any page from PDF blah blah..."}
]
0 голосов
/ 25 сентября 2018

Вы оборачиваете свой объект в объект-обертку, выбирая его с помощью new { }.

Отключите обертку new { } и выберите само свойство ConversionMeta.

public JsonResult ConversionInfo(string srcFormat)
{
    return Json(MetadataDbService.FindBySourceFormat(srcFormat).Select(m => m.ConversionMeta), JsonRequestBehavior.AllowGet);
}
...