简体   繁体   English

在没有父对象名称的情况下将对象列表序列化为JSon

[英]Serialize objects list to JSon without Parent object name

I have objets list and output them using code below in my MVC application. 我有objets列表,并在下面的MVC应用程序中使用以下代码输出它们。

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

The code produce such result. 代码产生这样的结果。 Every line/item starts with parent object name ConversionMeta . 每行/每个项目均以父对象名称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...",…}}
]

I would like to have such result, any ideas how to modify the code? 我想得到这样的结果,有什么想法如何修改代码?

[
{"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...",…}
]

You're wrapping your object in a wrapper object by selecting it using new { } . 您可以使用new { }将对象包装到包装对象中。

Ditch the new { } wrapper, and select the ConversionMeta property itself. 抛开new { }包装器,然后选择ConversionMeta属性本身。

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

I would recommend to create a class which contains all the properties and the serialize the class to json using JSON.NET 我建议创建一个包含所有属性的类,并使用JSON.NET将类序列化为json

You can install JSON.NET via Nuget 您可以通过Nuget安装JSON.NET

PM> Install-Package Newtonsoft.Json

The create a array of the class and fill it with all your entries 创建一个类的数组,并用所有条目填充它

Then you can use the JsonConvert.SerialzeObject Method to create the Json 然后,您可以使用JsonConvert.SerialzeObject方法创建Json

Here is my code: 这是我的代码:

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);
}

This is the class: 这是课程:

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

And this is the output: 这是输出:

[
{"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..."}
]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM