2017-09-16 11 views
1

私はJSON.NETを使用してXMLをJSONに変換しています。XMLをjson配列に変換するようにJSON.NETを強制する

私の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配列 しかし、製品が1つしかない場合、JSON.NETはJSON配列を作成しませんが、私はそれを必要とします。

JSON配列を強制的に作成する方法はありますか?

+0

に変換すると、ここで、具体的XmlDocument' 'に合わせた答えであるノードにjson:Array="true"を取り付けることにより、配列生成を強制することができます:[JSON.Net Xmlシリアル化は配列を誤解しています(https://stackoverflow.com/a/26505198/3744182)。 – dbc

答えて

3

あなたが事前にXMLスキーマを知っている場合、あなたは、配列

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でそのリストを直列化すると、パフォーマンスにあまり影響しません。あなたの場合には意味がありますか?

関連する問題