![](/img/trans.png)
[英]Why is Newtonsoft.Json.JsonConvert.SerializeObject adding “_repository” to each item in my list?
[英]Newtonsoft.Json.JsonConvert.SerializeObject single item vs multiple item
发现序列化具有单个项目和多个项目的XML对象会给我不同的格式,因此访问它会有所不同。
例如,对于单个项目:
{
"schemalist": {
"schema": {
"fieldid": "email",
"displayname": "email",
}
}
}
和
{
"schemalist": {
"schema": [
{
"fieldid": "name",
"displayname": "name",
},
{
"fieldid": "email",
"displayname": "email",
}
]
}
}
所以当我解析它们jQuery.ParseJSON时,我必须以不同的方式访问它们
schemalist.schema.fieldid和schemalist.schema [0] .fieldid
有没有一种方法甚至可以将单个项目转换为json,所以我甚至可以在单个,多个项目之间使用schemalist.schema [0] .fieldid?
谢谢!
编辑:这是我的xml输入:
<schemalist>
<schema>
<fieldid><![CDATA[name]]></fieldid>
<displayname><![CDATA[name]]></displayname>
</schema>
<schema>
<fieldid><![CDATA[email]]></fieldid>
<displayname><![CDATA[email]]></displayname>
</schema>
但有时返回可能只有一个模式:
<schemalist>
<schema>
<fieldid><![CDATA[email]]></fieldid>
<displayname><![CDATA[email]]></displayname>
</schema>
</schemalist>
那么我将像这样进行转换:
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
return Newtonsoft.Json.JsonConvert.SerializeObject(doc);
好吧,我最终要做的是删除该属性,然后再次添加它。
// run the code below with $(schemalist.schemalist.schema).length == 1
// create a schema array
var schema = [];
schema.push(schemalist.schemalist.schema);
// delete the property
delete schemalist.schemalist.schema;
schemalist['schema'] = schema;
因此,无需访问属性fieldid:schemalist.schema.fieldid,
我可以使用schemalist.schema [i] .fieldid
即使只有一个元素,哈!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.