0

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

1 回答 1

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

即使只有一个元素,哈!

于 2013-04-14T14:43:36.127 回答