我可以用代码和例子更好地解释这个问题。到目前为止,这是我的代码:
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","Name":"Jon" },{ "Id":"2","Name":"Mark"}] }
我想做的--> 访问该 json 的 field2 并遍历 ID 和名称(我根本不关心 field1)。我怎样才能做到这一点?这与序列化有什么关系吗?
请您参考如下方法:
一个可能的解决方案是——
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; }
}
