programing

JObject를 통해 어떻게 계산합니까?

linuxpc 2023. 3. 22. 20:47
반응형

JObject를 통해 어떻게 계산합니까?

JObject에 있는 데이터에 액세스하는 방법을 결정하려고 하는데 사용 방법을 아무리 생각해도 결정할 수 없습니다.

JObject Object = (JObject)Response.Data["my_key"];

콘솔을 사용하여 콘솔에 인쇄할 수 있습니다.WriteLine(오브젝트)에 데이터가 표시되며 다음과 같습니다.

{
 "my_data" : "more of my string data"
...
}

근데 어떻게 반복해야 할지 모르겠어요.생각나는 사람 있어요?저는 지금 너무 막막해요.

메뉴얼을 참조하면, 실장되어 있는 것을 알 수 있습니다.IEnumerable<KeyValuePair<string, JToken>>. 따라서, 단순히 v-in-in-in-in-in-in-in-in-in-in-inforeach:

foreach (var x in obj)
{
    string name = x.Key;
    JToken value = x.Value;
    …
}

JProperty 오브젝트를 JToken에 캐스팅함으로써 JProperty 오브젝트를 통해 JObject를 열거할 수 있습니다.

foreach (JProperty x in (JToken)obj) { // if 'obj' is a JObject
    string name = x.Name;
    JToken value = x.Value;
}

다른 JObject 내부에 네스트된 JObject가 있는 경우 접근자가 JToken을 반환하기 때문에 캐스트를 할 필요가 없습니다.

foreach (JProperty x in obj["otherObject"]) { // Where 'obj' and 'obj["otherObject"]' are both JObjects
    string name = x.Name;
    JToken value = x.Value;
}

그 대답은 나에게 통하지 않았다.나는 그것이 어떻게 그렇게 많은 표를 얻었는지 모르겠다.그래도 방향을 알려주는 데는 도움이 되긴 했지만요

이 답변은 저에게 효과가 있었습니다.

foreach (var x in jobj)
{
    var key = ((JProperty) (x)).Name;
    var jvalue = ((JProperty)(x)).Value ;
}

나 같은 사람, 린크 중독자, 그리고 svick의 대답에 따르면, 린크 접근법은 다음과 같습니다.

using System.Linq;
//...
//make it linq iterable. 
var obj_linq = Response.Cast<KeyValuePair<string, JToken>>();

이제 다음과 같은 linq 식을 만들 수 있습니다.

JToken x = obj_linq
          .Where( d => d.Key == "my_key")
          .Select(v => v)
          .FirstOrDefault()
          .Value;
string y = ((JValue)x).Value;

아니면 그냥:

var y = obj_linq
       .Where(d => d.Key == "my_key")
       .Select(v => ((JValue)v.Value).Value)
       .FirstOrDefault();

또는 모든 데이터에 대해 반복할 수 있습니다.

obj_linq.ToList().ForEach( x => { do stuff } ); 

언급URL : https://stackoverflow.com/questions/10543512/how-do-i-enumerate-through-a-jobject

반응형