使用Json服务而不映射到类

时间:2013-05-22 19:19:38

标签: c#

我正在使用一个返回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");
}

1 个答案:

答案 0 :(得分:-1)

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

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

var jObject = JObject.Parse(json);
Assert.IsTrue(jObject.item2 == "value");