我正在使用一个返回Json数组的服务。 (基本上它是一个Web请求,输出是json数组的文本。)有没有办法可以得到结果,找到我需要的东西而不用自己的类来映射它?
即
[TestMethod]
public void Successfully_Parse_Json_Items_From_URL()
{
var content = GetHttpContent(new Uri("", "application/json"); //returns HttpContent
string json = content.ReadAsAsync<string>().Result; //Not sure what to do here. id want this maybe to be an array of keyvalue pairs or something?
//...code
}
如果我的阵列是:
[{item1: "value", item2: "value"}]
我只对第2项感兴趣。我不关心其他项目是什么。
修改
所以我发现我正在寻找的是一种从“
”中提取“item2”的方法[{item1: "value", fields: { item2: "value2"}}]
我尝试过:
JArray jsonArray = content.ReadAsAsync<JArray>().Result;
foreach(JObject obj in jsonArray){
JArray jArray = (JArray)obj.SelectToken("fields"); //This throws an error about unable to case JObject to JArray.
}
更新 我设法让这个工作。
foreach(var obj in jsonArray){
string item2 = (string)obj["fields"].SelectToken("item2");
}
答案 0 :(得分:-1)
您还可以使用类似Json.Net(http://json.codeplex.com/)的库来读取收到的Json字符串。
Json.Net允许您解析任意Json字符串并将其视为动态类型。然后你就可以这样编写你的测试:
var jObject = JObject.Parse(json);
Assert.IsTrue(jObject.item2 == "value");