如何使用 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.net 将 JSON 对象反序列化为动态对象

JSON.Net 将集合序列化为数组数组

csharp 使用Newtonsoft JSON.NET将任何对象序列化/反序列化为JSON

Json.NET:将嵌套数组反序列化为强类型对象