xml - Json格式转xml格式

标签 xml json vb.net json.net

我有选择数据的查询:

Public Function GetStaffList(StaffCode As String) As IEnumerable
   Dim query = (From c In Staff Where c.StaffID= StaffCode Select c)
   Return query
End Function

之后我使用下面的代码返回 Json:

Public Function GetPersonListJson(PersonCode As String) As String 
   Return JsonConvert.SerializeObject(GetStaffList(StaffCode))
End Function

Json格式如下:

"[{\"$id\":\"1\",\"PersonID\":10001.0,\"PersonName\":\"Staff1\"}]"

如果我想以 XML 格式返回,我该怎么做?谢谢

更新:我尝试使用以下代码返回 xml

   Public Function GetPersonListJson(PersonCode As String) As String 
       Dim json = JsonConvert.SerializeObject(GetStaffList(StaffCode))
       Dim rootJson = "{""root"":" & json & "}"
       Dim xml = JsonConvert.DeserializeXNode(rootJson)
       Return xml.ToString()
    End Function

调试时xml的值为:

<root xmlns:json="http://james.newtonking.com/projects/json" json:id="1"><PersonID>10001</PersonID><PersonName>Staff1</PersonName> <EntityKey json:id="2"><EntitySetName>tblPerson</EntitySetName><EntityContainerName>PersonEntities</EntityContainerName><EntityKeyValues><Key>PersonID</Key><Type>System.Decimal</Type><Value>10001</Value></EntityKeyValues></EntityKey></root>

添加.ToString()后,返回结果如下:

"\u000d\u000a \u000d\u000a 10001<\/PersonID>\u000d\u000a Staff1<\/PersonName>\u000d\u000a \u000d\u000a 

但这不是xml格式。请再次帮助。谢谢

最佳答案

您可以使用 DeserializeXNode method .根据您的 JSON,您可能需要为 XML 元素指定根元素名称。下面我使用“Staff”作为根名称。

Dim xml = JsonConvert.DeserializeXNode(json, "Staff")

上面的代码返回了一个XDocument。要将 XML 作为字符串返回,请在其末尾添加 .ToString()。根据您的评论,您似乎正在尝试将此代码添加到现有的 GetPersonListJson 方法中。所以你可以在上面那行之后添加这一行:

Return xml.ToString()

也就是说,您的方法名称不再与您实际执行的操作相匹配。它被命名为 GetPersonListJson 但现在您将 XML 作为字符串返回,而不是 JSON。为了清楚起见,我建议重命名它。

更新:您的示例字符串是一个 json 数组,这就是为什么上面给出了 XmlNodeConverter can only convert JSON that beginning with an object 错误的原因。要解决此问题,您需要手动向 JSON 添加根元素:

Public Function GetPersonListJson(PersonCode As String) As String 
   Dim json = JsonConvert.SerializeObject(GetStaffList(StaffCode))

   ' this step adds a root to the json (you can rename "root" to anything)'
   Dim rootJson = "{""root"":" & json & "}"

   Dim xml = JsonConvert.DeserializeXNode(rootJson)
   Return xml.ToString()
End Function

关于xml - Json格式转xml格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985867/

相关文章:

python - 如何将 SqlAlchemy 连接查询序列化为 JSON?

vb.net - 检查FTP是否在线/离线

vb.net - 在案例结构中使用 Like

html - 使用 XPath 或类似调用仅从网站返回一个元素?

java - jackson 序列号 : Different formats for XML and JSON

c# - 如何从多个嵌套级别发生的 XMLDocument 中删除 XMLNode

xml - 关于 JAXP、XSLT 和 XML 保留字符

javascript - 将 JS 变量名传递给函数

json - 如何从 java 客户端使用 JSON Webservice?

vb.net - 在 Visual Studio 2017 中使用 .wid 文件