IT이야기

JSON을 LINQ할 수 있습니까?

cyworld 2021. 9. 17. 21:32
반응형

JSON을 LINQ할 수 있습니까?


이것은 .NET에 대한 요청에서 얻은 JSON입니다.

{
  "id": "110355660738", 
  "picture": {
    "data": {
      "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/1027085_12033235063_5234302342947_n.jpg", 
      "is_silhouette": false
    }
  }
}

그리고 (아마도?) LINQ를 사용하여 "url" 필드를 잡고 싶습니다. 나는 이것으로 많은 요청을합니다. 조금 다릅니다. 따라서 C# 클래스를 만들고 매번 역직렬화하지 않을 것입니다.

단일 필드를 추출하는 방법입니까? 감사합니다!


Linq에 대한 필요, 그냥 사용하지 dynamic(사용 Json.Net )

dynamic obj = JObject.Parse(json);
Console.WriteLine((string)obj.picture.data.url);

Linq 버전은 잘 읽히지 않을 것입니다.

JObject jObj = JObject.Parse(json);
var url = (string)jObj.Descendants()
                    .OfType<JProperty>()
                    .Where(p => p.Name == "url")
                    .First()
                    .Value;

문서: LINQ to JSON


나는 LINQ를 추천하지 않을 것입니다. newtonsoft.json과 같은 JSON 라이브러리를 추천합니다.

그래서 당신은 이것을 할 수 있습니다:

string json = @"{
  ""Name"": ""Apple"",
  ""Expiry"": "2008-12-28T00:00:00",
  ""Price"": 3.99,
  ""Sizes"": [
    ""Small"",
    ""Medium"",
    ""Large""
  ]
}";

JObject o = JObject.Parse(json);

string name = (string)o["Name"];

// Apple
JArray sizes = (JArray)o["Sizes"];
string smallest = (string)sizes[0];

// Small

참고:- 이 코드는 프로젝트 사이트 http://james.newtonking.com/pages/json-net.aspx 에 있는 샘플에서 복사되었습니다.


In a bind you could always deserialize the JSON and serialize it to XML, and load the XML in a XDocument. Then you can use the classic Linq to XML. When you are done take the XML, deserialize it, and serialize it back to JSON to JSON. We used this technique to add JSON support to an application that was originally built for XML, it allowed near-zero modifications to get up and running.

ReferenceURL : https://stackoverflow.com/questions/18758361/can-i-linq-a-json

반응형