我有选择数据的查询:
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/