programing

LINQ를 JSON으로 설정할 수 있습니까?

luckcodes 2023. 4. 3. 23:35

LINQ를 JSON으로 설정할 수 있습니까?

이것은 의 요청에서 얻은 JSON입니다.네트워크:

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

(아마도)를 사용하여 "url" 필드를 잡고 싶습니다.LINQ. 제가 이런 부탁을 많이 하는데 좀 달라요.그래서 매번 C# 클래스를 만들고 역직렬화하지 않습니다.

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

Linq는 필요 없습니다. 그냥 사용하세요.dynamic(Json 사용).네트워크)

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에서 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에 있는 샘플에서 복사되었습니다.

바인드에서는 항상 JSON을 역직렬화하고 XML로 시리얼화하여 XML을 XDocument에 로드할 수 있습니다.그런 다음 기존 Linq to XML을 사용할 수 있습니다. 작업이 완료되면 XML을 가져와 역직렬화한 다음 JSON to JSON으로 다시 직렬화합니다.이 기술을 사용하여 원래 XML용으로 빌드된 애플리케이션에 JSON 지원을 추가했습니다.이 기술을 사용하면 거의 0에 가까운 수정을 통해 실행이 가능해졌습니다.

이렇게 LINQ로 쉽게 문의할 수 있습니다.

이 JSON을 생각하면

{
    "items": [
        {
            "id": "10",
            "name": "one"
        },
        {
            "id": "12",
            "name": "two"
        }
    ]
}

이것을 변수 안에 넣어 봅시다json이것처럼.

JObject json = JObject.Parse("{'items':[{'id':'10','name':'one'},{'id':'12','name':'two'}]}");

이름이 다음과 같은 항목에서 모든 ID를 선택할 수 있습니다."one"다음 LINQ 쿼리 사용

var Ids =
    from item in json["items"]
    where (string)item["name"] == "one"
    select item["id"];

그러면 IEnumberable 목록에 결과가 표시됩니다.

언급URL : https://stackoverflow.com/questions/18758361/can-i-linq-a-json