我正在做一个项目,在那里我必须提出一个API请求。当我向服务器发送JSON请求时,我得到以下XML作为响应:
"<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的代码:
var response = JsonConvert.DeserializeXmlNode(xmlResponse);我怎样才能做到这一点?
发布于 2018-04-24 11:04:23
任何将JSON作为输入并返回XML作为响应的webapi都会让我非常困惑。但是,如果这正是您所要看到的,那么您需要采取将该XML响应序列化为XmlDocument或更新的XDocument/XNode的方法,然后将其中一个实例序列化为JSON。
XmlDocument类型有一个使用XmlReader的加载方法。(它还提供了一个LoadXml。
XDocument类型有一个使用XML的字符串的解析方法。
根据示例输入,可以使用两种方法:
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这将是一个结果:

发布于 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
我还建议多读一些关于序列化的内容,因为这个问题实际上是毫无意义的。
发布于 2018-04-26 11:02:08
我已经解决了这个问题。rene的回答有助于理解如何从xml转换到json。但问题在于我的反应。我能够通过从响应中删除/“和不必要的双引号来修复它。
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);https://stackoverflow.com/questions/49999401
复制相似问题