如何从我的响应httpwebreponse读取json响应

本文关键字:响应 httpwebreponse json 读取 我的 | 更新日期: 2023-09-27 17:49:41

这是我的示例字符串

{
"aaa": "0",
"nnn": "Ok",
"rrr": [
    {
        "id": "0",
        "name": "Reserved",
        "desc": "Reserved",
        "shortdesc": "",
        "price": "07.80",
        "isvariableprice": "0",
        "taxcategoryid": "0",
        "istaxinclusive": "0",
        "brandid": "1",
        "isnetsalesexempt": "0",
        "itemtype": "0",
        "skus": [],
        "modifiergroups": [],
        "prices": [],
        "pricerules": [],
        "categories": [],
        "nutrition": [
            {
                "id": "1",
                "amount": "10.0000"
            }
        ]
    }
    ]
}

我只想从样本json响应中检索"id"answers"price"。JSON不止于此,它有多个id和价格……我怎么用一个循环来检索数组中的所有元素。请帮助。

这就是我现在的位置。

if (response.StatusCode == HttpStatusCode.OK)
                {
                    Stream receiveStream = response.GetResponseStream();
                    StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
                    Console.WriteLine("Response stream received.");
                    string resultString = readStream.ReadToEnd();
                    //var ser = new DataContractJsonSerializer(typeof(RootObject));
                    var stream = new MemoryStream(Encoding.Unicode.GetBytes(resultString));
                    dynamic data = JsonObject.Parse(resultString);
                    Console.WriteLine(data.id); //??????????
                    readStream.Close();
                }

这段代码给了我上面的字符串在"数据",但我想拉"id"answers"价格"

提前感谢各位大师

如何从我的响应httpwebreponse读取json响应

Json。Net将使您在使用JSON时更轻松http://json.codeplex.com/

与Json。网就位

你可以用动态方式或强类型方式来实现。

动态:

var dynJson = JsonConvert.DeserializeObject<dynamic>(yourJsonString);
    //for simple values
    Console.WriteLine(dynJson.aaa);
    Console.WriteLine(dynJson.nnn);
    //for list values
    foreach(var r in dynJson.rrr){
        //for simple values in rrr
        Console.WriteLine(r.id);
        //for list values in rrr
        foreach(var price in rrr.prices)
          Console.WriteLine(price)
    }