将没有父对象名称的对象列表序列化为 JSon
Serialize objects list to JSon without Parent object name
我有对象列表并在我的 MVC 应用程序中使用下面的代码输出它们。
public JsonResult ConversionInfo(string srcFormat)
{
return Json(MetadataDbService.FindBySourceFormat(srcFormat).Select(m => new
{
m.ConversionMeta
}), JsonRequestBehavior.AllowGet);
}
代码产生这样的结果。每个 line/item 都以父对象名称 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...",…}
]
您通过使用 new { }
.
select 将对象包装在包装器对象中
丢弃 new { }
包装器,select ConversionMeta
属性 本身。
public JsonResult ConversionInfo(string srcFormat)
{
return Json(MetadataDbService.FindBySourceFormat(srcFormat).Select(m => m.ConversionMeta), JsonRequestBehavior.AllowGet);
}
我建议创建一个包含所有属性的 class,并使用 JSON.NET
将 class 序列化为 json
您可以通过 Nuget 安装 JSON.NET
PM> Install-Package Newtonsoft.Json
创建 class 的数组并用您的所有条目填充它
然后你可以使用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:
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..."}
]
我有对象列表并在我的 MVC 应用程序中使用下面的代码输出它们。
public JsonResult ConversionInfo(string srcFormat)
{
return Json(MetadataDbService.FindBySourceFormat(srcFormat).Select(m => new
{
m.ConversionMeta
}), JsonRequestBehavior.AllowGet);
}
代码产生这样的结果。每个 line/item 都以父对象名称 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...",…}
]
您通过使用 new { }
.
丢弃 new { }
包装器,select ConversionMeta
属性 本身。
public JsonResult ConversionInfo(string srcFormat)
{
return Json(MetadataDbService.FindBySourceFormat(srcFormat).Select(m => m.ConversionMeta), JsonRequestBehavior.AllowGet);
}
我建议创建一个包含所有属性的 class,并使用 JSON.NET
将 class 序列化为 json您可以通过 Nuget 安装 JSON.NET
PM> Install-Package Newtonsoft.Json
创建 class 的数组并用您的所有条目填充它
然后你可以使用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:
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..."}
]