强制JSON.NET将xml转换为json数组

Cat*_*lMF 1 .net c# json json.net

我正在使用JSON.NET将一些XML转换为JSON.

我的XML看起来像这样:

<Root>
    <Product>
        <Name />
        <Id />
    </Product>
    <Product>
        <Name />
        <Id />
    </Product>
</Root>
Run Code Online (Sandbox Code Playgroud)

我使用这种方法转换xml:

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

    var JsonString = JsonConvert.SerializeXmlNode(XmlDoc);
    return JsonString;
}
Run Code Online (Sandbox Code Playgroud)

只要有多个产品,JSON.NET就会创建一个JSON数组.但是,如果只有一个产品,JSON.NET将不会创建JSON数组,但我需要它.

有什么方法可以强制它创建一个JSON数组?

orh*_*ej2 7

如果您事先知道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;
}
Run Code Online (Sandbox Code Playgroud)