JsonConvert.DeserializeXmlNode - 必须以对象开头

时间:2012-06-12 17:51:13

标签: c# json json.net

我在JSON数据上调用DeserializeXmlNode()得到一个JsonSerializationException,该数据以[[(即它是一个数组数组)开头。

什么是最好的

  1. 将此转换为XML的方法?
  2. 是否还有其他无法转换为XML的JSON模式?
  3. 更新: XML的显示方式是一个有趣的问题。拥有一个数组数组意味着没有根节点(这很简单 - 插入),但子节点集也没有名称。我不确定这里有什么意义。这可能是在JSON上使用XPath的交易杀手。所以在这一部分也有任何建议吗?

    更新2 - JSON数据:

    [["P0010001","NAME","state"],
    ["4779736","Alabama","01"],
    ["710231","Alaska","02"],
    ["6392017","Arizona","04"],
    ["2915918","Arkansas","05"],
    ["37253956","California","06"],
    ["5029196","Colorado","08"],
    ["3574097","Connecticut","09"],
    ["897934","Delaware","10"],
    ["601723","District of Columbia","11"],
    ["18801310","Florida","12"],
    ["9687653","Georgia","13"],
    ["1360301","Hawaii","15"],
    ["1567582","Idaho","16"],
    ["12830632","Illinois","17"],
    ["6483802","Indiana","18"],
    ["3046355","Iowa","19"],
    ["2853118","Kansas","20"],
    ["4339367","Kentucky","21"],
    ["4533372","Louisiana","22"],
    ["1328361","Maine","23"],
    ["5773552","Maryland","24"],
    ["6547629","Massachusetts","25"],
    ["9883640","Michigan","26"],
    ["5303925","Minnesota","27"],
    ["2967297","Mississippi","28"],
    ["5988927","Missouri","29"],
    ["989415","Montana","30"],
    ["1826341","Nebraska","31"],
    ["2700551","Nevada","32"],
    ["1316470","New Hampshire","33"],
    ["8791894","New Jersey","34"],
    ["2059179","New Mexico","35"],
    ["19378102","New York","36"],
    ["9535483","North Carolina","37"],
    ["672591","North Dakota","38"],
    ["11536504","Ohio","39"],
    ["3751351","Oklahoma","40"],
    ["3831074","Oregon","41"],
    ["12702379","Pennsylvania","42"],
    ["1052567","Rhode Island","44"],
    ["4625364","South Carolina","45"],
    ["814180","South Dakota","46"],
    ["6346105","Tennessee","47"],
    ["25145561","Texas","48"],
    ["2763885","Utah","49"],
    ["625741","Vermont","50"],
    ["8001024","Virginia","51"],
    ["6724540","Washington","53"],
    ["1852994","West Virginia","54"],
    ["5686986","Wisconsin","55"],
    ["563626","Wyoming","56"],
    ["3725789","Puerto Rico","72"]]
    

1 个答案:

答案 0 :(得分:1)

我有一个对象数组,形状如下:

[{foo:bar}, {foo:bar2}]

...我解决这个问题的方法是首先包装文本:

public XmlDocument JsonArrayToXml(string json)
{
    var wrappedDocument = string.Format("{{ item: {0} }}", json);
    var xDocument = JsonConvert.DeserializeXmlNode(wrappedDocument, "collection");
    return xDocument;
}

这不会引发错误。 XML的形状类似于:

<?xml version="1.0" encoding="UTF-8"?>
<collection>
    <item>
        <foo>bar</foo>
    </item>
    <item>
        <foo>bar2</foo>
    </item>
</collection>