0

我正在使用返回 Json 数组的服务。(本质上它是一个 Web 请求,输出是一个 json 数组的文本。)有没有一种方法可以让我得到结果,并找到我需要的东西而不用自己的类来映射它?

IE

    [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");
}
4

1 回答 1

-1

您还可以使用 Json.Net ( http://json.codeplex.com/ ) 之类的库来读取接收到的 Json 字符串。

Json.Net 允许您解析任意 Json 字符串并将其视为动态类型。然后你可以这样写你的测试:

var jObject = JObject.Parse(json);
Assert.IsTrue(jObject.item2 == "value");
于 2013-05-22T19:28:14.340 回答