2017-09-16 40 views
1

我使用JSON.NET將一些XML轉換爲JSON。強制JSON.NET將xml轉換爲json數組

我的XML看起來是這樣的:

<Root> 
    <Product> 
     <Name /> 
     <Id /> 
    </Product> 
    <Product> 
     <Name /> 
     <Id /> 
    </Product> 
</Root> 

進出口使用這種方法轉換XML:

private string ConvertToJson(string xml) 
{ 
    XmlDocument XmlDoc = new XmlDocument(); 
    XmlDoc.LoadXml(xml); 

    var JsonString = JsonConvert.SerializeXmlNode(XmlDoc); 
    return JsonString; 
} 

這隻要有一個以上的產品做工精細,JSON.NET將創建一個JSON數組。 但是,如果只有一個產品JSON.NET不會創建一個JSON數組,但我需要它。

任何方式強制它創建一個JSON數組?

+0

這裏的節點強制陣列代是專門針對一個答案'XmlDocument':[JSON.Net Xml序列化誤解數組](https://stackoverflow.com/a/26505198/3744182)。 – dbc

回答

3

如果您知道XML模式事先可以通過附加json:Array="true"到要轉換爲數組

static string convertToJson(string what) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(what); 

    var products = doc.GetElementsByTagName("Product"); 

    if (products.Count == 1) 
    { 
     var attribute = doc.CreateAttribute("json", "Array", "http://james.newtonking.com/projects/json"); 
     attribute.InnerText = "true"; 
     var node = products.Item(0) as XmlElement; 
     node.Attributes.Append(attribute); 
    } 

    string json = JsonConvert.SerializeXmlNode(doc); 

    return json; 
} 
0

如果您從您的XML文檔(您需要知道內容結構並使用POCO對象)在您的代碼中創建一個對象數組,然後使用json序列化該列表,它不應該影響您的性能。在你的情況下有意義嗎?