Newtonsoft.Json.JsonConvert.SerializeObject单项与多项

时间:2013-04-14 13:16:16

标签: c# json

发现用单个项目和多个项目序列化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);

1 个答案:

答案 0 :(得分:0)

好吧,我最终做的是删除属性然后再添加它。

// 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

即使有一个元素,哈哈!