Xmldictionaryreader reader = jsonreaderwriterfactory. createjsonreader (encoding. utf8.getbytes (sjson), xmldictionaryreaderquotas. max );
Xmldocument Doc = new xmldocument ();
Doc. Load (Reader );
Add it to favorites.
I tried it. The JSON string needs to be key-added.
For example: {name: "AAA", value: 1} Here, name and value are keys, and an error is reported during conversion.
To be written
{"Name": "AAA", "value": 1}
This is the second method. If this key is not added, the translation is normal.
//
// convert a JSON string to an XML Object
///
//
//
Public static xmldocument json2xml (string sjson)
{< br> // xmldictionaryreader reader = jsonreaderwriterfactory. createjsonreader (encoding. utf8.getbytes (sjson), xmldictionaryreaderquotas. max);
// xmldocument Doc = new xmldocument ();
// Doc. load (Reader);
Javascriptserializer oserializer = new javascriptserializer ();
Dictionary <string, Object> DIC = (Dictionary <string, Object>) oserializer. deserializeobject (sjson );
Xmldocument Doc = new xmldocument ();
Xmldeclaration xmldec;
Xmldec = Doc. createxmldeclaration ("1.0", "gb2312", "yes ");
Doc. insertbefore (xmldec, Doc. documentelement );
Xmlelement nroot = Doc. createelement ("root ");
Doc. appendchild (nroot );
Foreach (keyvaluepair <string, Object> item in DIC)
{
Xmlelement element = Doc. createelement (item. Key );
Keyvalue2xml (element, item );
Nroot. appendchild (element );
}
Return Doc;
}
Private Static void keyvalue2xml (xmlelement node, keyvaluepair <string, Object> source)
{
Object kvalue = source. value;
If (kvalue. GetType () = typeof (Dictionary <string, Object> ))
{
Foreach (keyvaluepair <string, Object> item in kvalue as Dictionary <string, Object>)
{
Xmlelement element = node. ownerdocument. createelement (item. Key );
Keyvalue2xml (element, item );
Node. appendchild (element );
}
}
Else if (kvalue. GetType () = typeof (object [])
{
Object [] O = kvalue as object [];
For (INT I = 0; I <O. length; I ++)
{
Xmlelement xitem = node. ownerdocument. createelement ("item ");
Keyvaluepair <string, Object> item = new keyvaluepair <string, Object> ("item", O [I]);
Keyvalue2xml (xitem, item );
Node. appendchild (xitem );
}
}
Else
{
Xmltext text = node. ownerdocument. createtextnode (kvalue. tostring ());
Node. appendchild (text );
}
}