繁体   English   中英

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

[英]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.

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