[英]Convert JSON to XML using JavaScriptSerializer in c#
I have a JSON structure like below.我有一个像下面这样的 JSON 结构。
json={
"page": {
"mode": "2",
"ref": "user"
}
}
I am using the following code for converting JSON to XML.我正在使用以下代码将 JSON 转换为 XML。
Reference: http://www.flowgearcoder.net/2013/04/03/convert-between-json-and-xml参考: http : //www.flowgearcoder.net/2013/04/03/convert-between-json-and-xml
var dynamicObject = new System.Web.Script.Serialization.JavaScriptSerializer().DeserializeObject(Json);
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(dynamicObject.GetType());
MemoryStream ms = new MemoryStream();
serializer.Serialize(ms, dynamicObject);
Xml = System.Text.Encoding.UTF8.GetString(ms.ToArray());
I am getting the following error while executing the xmlSerializer conversion.执行 xmlSerializer 转换时出现以下错误。
The type System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089], [System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] is not supported because it implements IDictionary.类型 System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089], [System.Object, mscorlib, Version=2.0.0.0, Culture=neutral , PublicKeyToken=b77a5c561934e089]] 不受支持,因为它实现了 IDictionary。
Can anyone help me figure out this issue?谁能帮我解决这个问题?
它可以使用Json.Net轻松转换为 xml
string xml = JsonConvert.DeserializeXNode(json).ToString();
JavaScriptSerializer.DeserializeObject cast json string to Dictionary<String, Object>
. JavaScriptSerializer.DeserializeObject 将 json 字符串转换为Dictionary<String, Object>
。
Dictionary is not supported by XMLSerializer. XMLSerializer 不支持字典。 So if you're creating json yourself, you might want to change its structure and use JavaScriptSerializer.Deserialize<T>
method to cast it to specific class and latter serialize it to XML.因此,如果您自己创建 json,您可能希望更改其结构并使用JavaScriptSerializer.Deserialize<T>
方法将其转换为特定类,然后将其序列化为 XML。
As an alternative to the JavaScriptSerializer
, you may use Json.NET :作为JavaScriptSerializer
的替代方案,您可以使用Json.NET :
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Xml;
public class Test
{
public static void Main()
{
var json = @"{""page"": {""mode"": ""2"", ""ref"": ""user""}}";
var xmlDocument = new XmlDocument();
var d= xmlDocument.CreateXmlDeclaration("1.0","utf-8","yes");
xmlDocument.AppendChild(d);
var xml = JsonConvert.DeserializeXmlNode(json);
var root = xmlDocument.ImportNode(xml.DocumentElement,true);
xmlDocument.AppendChild(root);
Console.WriteLine(xmlDocument.OuterXml);
}
}
Outputs:输出:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<page><mode>2</mode><ref>user</ref></page>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.