我想从XML响应中获取JSON数据。实际上Web服务正在返回响应如下:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[
{
"id": 1,
"name": "paresh",
},
{
"id": 2,
"name": "jacob",
},
{
"id": 3,
"name": "color",
},
{
"id": 4,
"name": "Adil color",
}
]</string>
我已经提到了一些文章。如果响应只是XML,那么我可以实现如下:
MyListBox.ItemsSource = from tweet in xmlTweets.Descendants("student")
select new StudentItem
{
ID = tweet.Element("id").Value,
Name = tweet.Element("name").Value,
};
但是我的问题是获取内部的JSON,还要显示在ListBox中?
答案 0 :(得分:1)
您可以通过使用ScriptMethod属性修改web方法来定义Web方法响应格式。 代码就像这样。
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
一旦你将获得json格式字符串中的代码,你可以在json中解析它。
如果您有任何疑惑,请告诉我。
因此,您必须从substring方法手动删除<string>
代码。
这是你的代码。
string Header = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">";
string str = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">[{\"id\": 1,\"name\": \"paresh\"}]</string>";
string TempStr = str.Remove(0, Header.Length);
string FinalStr = TempStr.Substring(0, TempStr.Length - 9);
FinalStr是你的json字符串。
答案 1 :(得分:0)
您可能希望使用在Scala中编写的twitter的finagle将xml转换为json:
val xmlResponse = <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[
{
"id": 1,
"name": "paresh",
},
{
"id": 2,
"name": "jacob",
},
{
"id": 3,
"name": "color",
},
{
"id": 4,
"name": "james bond",
}
]</string>
val properties = (xmlResponse \\ "string") //parse the xml
val responseContent = xmlResponse.toSeq.toJson.toString()
您可以查看:
println(responseContent)
在选择finagle之前,尝试使用scala中的一个简单示例,然后您可能想要探索finagle库。它可以用来处理来自众多服务器的不同类型的响应(电子邮件,asp.net,SQL,短信,仅举几例)。
答案 2 :(得分:0)
我将使用您发布的初始XML,然后使用诸如JSON.Net之类的库来操作XML,提取JSON并将其存储在对象中,然后再将其绑定到ListBox。
以下是JSON.Net上的几个要点(摘自网站)