首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将XML响应解析回JSON

将XML响应解析回JSON
EN

Stack Overflow用户
提问于 2018-04-24 10:29:12
回答 3查看 5.1K关注 0票数 0

我正在做一个项目,在那里我必须提出一个API请求。当我向服务器发送JSON请求时,我得到以下XML作为响应:

代码语言:javascript
运行
复制
"<response>
    \r\n  
    <data>
       \r\n   
        <status no=\"0\" substatus=\"0\">
           Connection succeeded
        </status>\r\n 
    </data>
        \r\n
</response>"

我需要将响应转换回JSON。但是当我试图解析它的时候,我得到了一个错误

解析值时遇到的意外字符:<. Path‘,第0行,位置为0’

我使用NewtonSoftJSON进行转换。

这是我用来将XML字符串转换回JSON的代码:

代码语言:javascript
运行
复制
var response = JsonConvert.DeserializeXmlNode(xmlResponse);

我怎样才能做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-24 11:04:23

任何将JSON作为输入并返回XML作为响应的webapi都会让我非常困惑。但是,如果这正是您所要看到的,那么您需要采取将该XML响应序列化为XmlDocument或更新的XDocument/XNode的方法,然后将其中一个实例序列化为JSON。

XmlDocument类型有一个使用XmlReader的加载方法。(它还提供了一个LoadXml

XDocument类型有一个使用XML的字符串的解析方法。

根据示例输入,可以使用两种方法:

代码语言:javascript
运行
复制
var xml = @"<response>
    <data>
        <status no=""0"" substatus=""0"">
           Connection succeeded
        </status>
    </data>
</response>";

// xmldocument
var xmlReader = XmlReader.Create(new StringReader(xml));
var doc = new XmlDocument();
doc.Load(xmlReader);
var response = JsonConvert.SerializeXmlNode(doc);

response.Dump("XMLDoc to Json "); // LINQPad output

// or XDOcument

response = JsonConvert.SerializeXNode(XDocument.Parse(xml));

response.Dump("XDocument to Json");// LINQPad output

这将是一个结果:

票数 3
EN

Stack Overflow用户

发布于 2018-04-24 10:40:33

没有从XML到JSON的直接转换。对于这个响应,您应该使用XML解析器。

解析XML (C#)

https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/parsing-xml

我还建议多读一些关于序列化的内容,因为这个问题实际上是毫无意义的。

票数 2
EN

Stack Overflow用户

发布于 2018-04-26 11:02:08

我已经解决了这个问题。rene的回答有助于理解如何从xml转换到json。但问题在于我的反应。我能够通过从响应中删除/“和不必要的双引号来修复它。

代码语言:javascript
运行
复制
 response = response.Replace("<response>\"", "<response>")
                 .Replace("\"<response>", "<response>")
                 .Replace("\\", "")
                 .Replace("rn", string.Empty);

var xmlReader = XmlReader.Create(new StringReader(response));
var doc = new XmlDocument();
doc.Load(xmlReader);

var jsonResponse = JsonConvert.SerializeXmlNode(doc);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49999401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档