C#:如何解析HttpWebResponse对象?

C#:如何解析HttpWebResponse对象?,c#,C#,我可以用代码和示例更好地解释这个问题。这是我目前的代码: url = "x"; // create the request req = WebRequest.CreateHttp(url); req.ClientCertificates.Add(Program.GetCert(thumbprint)); result = (HttpWebResponse)req.GetResponse(); using (Stream data = result.GetResponseStream()) {

我可以用代码和示例更好地解释这个问题。这是我目前的代码:

url = "x";

// create the request
req = WebRequest.CreateHttp(url);
req.ClientCertificates.Add(Program.GetCert(thumbprint));
result = (HttpWebResponse)req.GetResponse();

using (Stream data = result.GetResponseStream())
{
    if (data != null)
    {
        TextReader tr = new StreamReader(data);
        json = tr.ReadToEnd();
    }
}

System.Diagnostics.Debug.WriteLine(json);
这是代码的输出:

{“field1”:“blah”,“field2”:[ { Id:“1”,“姓名:”“Jon” },{ “Id”:“2”,“Name”:“Mark”}]}

我想做的--> 访问json的field2并遍历ID和名称(我根本不关心field1)。我该怎么做?这和序列化有什么关系吗

与适当的DataContract类()一起使用,将JSON数据反序列化为对象


然后,您可以遍历数据。

首先安装Json.NET并尝试以下操作:

 dynamic stuff = JObject.Parse(json);
 var field2 = (JArray)stuff["field2"];

 var field2Dict = field2.ToDictionary(k => (string)k["Id"], x => (string)x["Name"]);
 foreach (var item in field2Dict)
 {
    System.Diagnostics.Debug.WriteLine("Id: {0}  Nam: {1}", item.Key, item.Value);
 }

一个可能的解决办法是:

        var o = (JArray)(JObject.Parse(json)["field2"]);
        foreach (JToken token in o)
        {
            Console.WriteLine(token["Id"]);
            Console.WriteLine(token["Name"]);
        }
或者,您可以创建强类型C#对象并将其作为列表访问-

static void Main(string[] args)
    {
        var o = JsonConvert.DeserializeObject<RootObject>(json).field2;// list - count = 2
    }

public class Field2
{
    public string Id { get; set; }
    public string Name { get; set; }
}

public class RootObject
{
    public string field1 { get; set; }
    public List<Field2> field2 { get; set; }
}
static void Main(字符串[]args)
{
var o=JsonConvert.DeserializeObject(json).field2;//list-count=2
}
公共类字段2
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
}
公共类根对象
{
公共字符串字段1{get;set;}
公共列表字段2{get;set;}
}

只需使用JSON反序列化器-理想情况下,将其转换为类型化对象,但如果您愿意,也可以使用字典或
动态
。提示:如果JSON中有复杂的对象,您可以使用它来编写反序列化到的对象。