Json.NET을 사용하여 json http 응답을 구문 분석하고 작업중인 코드가 있지만 지나치게 복잡한 방식으로이 코드를 작성하려고합니다. 내 질문은 경로를 통해 자식 jToken을 가져 오는 더 직접적인 방법이 있거나 모든 수준을 경고하지 않고 역 직렬화하는 경우입니다. Json.NET은 중첩 된 jToken 값을 얻습니다.
나는이 방법을 시도했지만는 null를 돌려 :JObject jObj = JObject.Parse(text);
foreach(var kv in jObj) {
if(kv.Key == "response") {
foreach(JToken jt in kv.Value) {
if(jt.Path == "response.docs") {
JEnumerable<JToken> children = jt.Children();
foreach(JToken t in children) {
//THIS WORKS BUT IS NOT ELEGANT
Solr_User[] su = t.ToObject<Solr_User[]>();
}
}
}
}
}
그리고 여기 단지 참조를 위해 JSON 원시 응답입니다 : 여기
JObject jObj = JObject.Parse(text);
JToken myVal;
jObj.TryGetValue("response.docs", out myVal);
내이 해제 직렬화를 포함하여 지나치게 복잡한 코드를 작동 :
{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"indent":"on",
"wt":"json"}},
"response":{"numFound":4,"start":0,"docs":[
{
"id":3,
"first_name":"Bob",
"_version_":"1558902640594649088"},
{
"id":4,
"first_name":"Sam",
"_version_":"1558902640613523456"},
{
"id":2,
"first_name":"Fred",
"_version_":"1558902640613523457"},
{
"id":1,
"first_name":"Max",
"_version_":"1558902640613523458"}]
}}
환상적이고 정확하게 내가 찾고 있었던 것, 감사합니다! – edencorbin