我正在使用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 :(得分: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;
}
答案 1 :(得分:0)
如果您从XML文档中创建代码中的对象数组(您需要知道内容结构并使用POCO对象),然后使用json序列化该列表,那么它不会对您的性能产生太大影响。在你的情况下有道理吗?