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中有复杂的对象,您可以使用它来编写反序列化到的对象。