如何使用 Json.NET 将 XML 序列化为 JSON 对象
Posted
技术标签:
【中文标题】如何使用 Json.NET 将 XML 序列化为 JSON 对象【英文标题】:How to Serialize XML to a JSON object with Json.NET 【发布时间】:2011-10-15 06:11:59 【问题描述】:我可以像这样将 XML 序列化为 JSON 字符串:
var xml = new XmlDocument();
xml.LoadXml("<person><name>John</name></person>");
string jsonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xml, Newtonsoft.Json.Formatting.None);
Response.ContentType = "application/json";
Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(jsonString));
这会给我:
"\"person\":\"name\":\"John\""
但是如何将其序列化为 JSON 对象?像这样:
"person":"name":"John"
【问题讨论】:
【参考方案1】:有时我们只是想让它变得更难......
var xml = new XmlDocument();
xml.LoadXml("<person><name>John</name></person>");
Response.ContentType = "application/json";
Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(xml));
我做错的是将 XML 序列化为字符串,然后再次序列化。
【讨论】:
在我的情况下,我有一个 wcf 方法,我需要从中返回 json 字符串。数据集> xml> json,但是当我转换为json字符串时,我遇到了同样的问题。我的方法签名: [WebGet(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/methosnamenamespoace?querystring")] string mthodname(args);如果在另一端获得正确的 json,我应该返回什么。请指导。 可以使用本地 .xml 文件代替 Loadxml() 中的 xml 字符串吗? @cardiac7 是的,您可以为此使用任何XmlDocument
。对象如何填充 XML 并不重要。【参考方案2】:
当您将访问数据时 / 自动不显示。 我正在访问 AJAX post 的 html5 帮助。 结果显示
在 C# 中结果显示 "\"person\":\"name\":\"John\""
但在 HTML5 中,它工作正常 "person":"name":"John"
【讨论】:
以上是关于如何使用 Json.NET 将 XML 序列化为 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
如何将字典的值序列化为json(使用json.net)[重复]
使用 Json.net 将 JSON 对象反序列化为动态对象