C# 从嵌套的JSON数组中获取值
如何从这个JSON中获取单个值?例如SSN?此外,有些项目是可以容纳多个(地址、电话)的阵列。解析这个的最佳方法是什么?我尝试过使用JArray.Parse(数据),但仍然无法“找到”单个项目。谁能给我指出正确的方向吗C# 从嵌套的JSON数组中获取值,c#,json,.net-core,C#,Json,.net Core,如何从这个JSON中获取单个值?例如SSN?此外,有些项目是可以容纳多个(地址、电话)的阵列。解析这个的最佳方法是什么?我尝试过使用JArray.Parse(数据),但仍然无法“找到”单个项目。谁能给我指出正确的方向吗 [{ "firstName": "test", "middleName": "test", "lastName": "test" }, { "addresses": [{ "street": "test",
[{
"firstName": "test",
"middleName": "test",
"lastName": "test"
},
{
"addresses":
[{
"street": "test",
"city": "test",
"state": "test",
"zip": "test"
}]
},
{
"DOB": ""
},
{
"SSN": "123123123"
},
{
"occupation": "test",
"typeOfOccupation": "test"
},
{
"phones":
[{
"phone": "",
"type": ""
}]
},
{
"Email": ""
},
{
"typeOfId": "",
"idNumber": "",
"expirationDate": ""
}]
您说过您使用了
JArray.Parse
,但您是否将其用作动态
?有
目前,该缔约方方的代码>变异变异变异JSJS服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服服键入\“:\”\“}]}、{\“电子邮件\“:\”}、{\“typeOfId\”:\“\”、\“idNumber\”:\“\”、\“expirationDate\”:\“}];
var data=JArray.Parse(json);
JToken ssn=data.SelectToken($…ssn)
如果(ssn!=null){
Console.WriteLine(ssn.Value());
}
正在工作。显示您的实际代码。在c#中解析JSON是一个反复和广泛讨论的主题。这可能会有所帮助。谢谢你,马蒂亚斯。在不知道数据位置的情况下,有没有办法做到这一点?例如,有时SSN可能出现在DOB之前(或者结构可能有其他变化)?我能“找到”SSN吗?因为它是一个数组而不是一个对象,不,除非你在整个数组中循环寻找所述属性,否则你不认为你能找到,这不是很有效;JToken ssn=arr.SelectToken($…ssn);有意思的是,从未尝试过SelectToken方法上的点,使用
Value()
var json = "[{ \"firstName\": \"test\", \"middleName\": \"test\", \"lastName\": \"test\" }, { \"addresses\": [{ \"street\": \"test\", \"city\": \"test\", \"state\": \"test\", \"zip\": \"test\" }] }, { \"DOB\": \"\" }, { \"SSN\": \"123123123\" }, { \"occupation\": \"test\", \"typeOfOccupation\": \"test\" }, { \"phones\": [{ \"phone\": \"\", \"type\": \"\" }] }, { \"Email\": \"\" }, { \"typeOfId\": \"\", \"idNumber\": \"\", \"expirationDate\": \"\" }]";
var data = JArray.Parse(json);
JToken ssn = data.SelectToken("$..SSN")
if(ssn!=null){
Console.WriteLine(ssn.Value<string>());
}