2013-07-16 1 views
0

나는 TONS 필드가있는 json을 외부 소스에서 가져옵니다. 나는 그들 대부분을 신경 쓰지 않고, 단지 그들 중 일부가 필요하다. (다른 어린이 수준에 있음).JSON에서 일부 필드 만 가져 오는 방법은 무엇입니까?

그래서 "강한 유형"을 가질 필요가 없습니다. 로 시도 :

JavaScriptSerializer js = new JavaScriptSerializer(); 
var obj = jss.Deserialize(myJson); 

하지만 난 그 일을 할 수없는 것? 내가 어떻게 해?

사용 :

jss.Deserialize<dynamic>(objectText); 

내가

답변

1

Newtonsoft Json.NET를 사용해보십시오 ... 필드를 검색 할 수 LINQ를 사용할 수있는 것보다, 그것은 경우도 거의 아무것도 해석 할 수있는 동적하는 jobject있다 LINQ를 사용하여 하위 값 목록을 쿼리 할 수 ​​있습니다.

3

JSON.Net을 사용하면 정의한 객체로 직렬화 해제 할 수 있습니다. 정의한 객체는 부분 일치 일 수 있습니다. DeserializeObject<>은 다른 모든 JSON 필드를 무시합니다. 예를 들어, JSON 들어

:

{ 
    Cat: "Tom", 
    Mouse: "Jerry", 
    Duck: "Donald" 
} 

이 사용 :

public class LooneyTunes 
{ 
    public string Cat { get; set; } 
    public string Mouse { get; set; } 
} 

var looneyTunes = JsonConvert.DeserializeObject<LooneyTunes>(json); 

이이 Duck 속성을 무시하고 제대로 나머지를 역 직렬화됩니다. 따라서이 기술을 사용하면 을 선택하여 원하는 JSON 메시지의 부분을 지정할 수 있습니다.

+1

당신이 JavaScriptSerializer과 함께 할 수있는 동일. –

0

필요하지 않은 클래스를 만들고 생략 할 수 있습니다.

하지만 (드) 직렬화에 대한 더 많은 제어 권한을 갖는 클래스를 제안합니다.

이미 제안 된 것처럼 JSON.NET은 이러한 유형의 작업에 가장 적합한 라이브러리 중 하나입니다. 값을 반대하고 얻을 수 JSON을 역 직렬화하는 방법을 보여줍니다 아래 링크

체크 아웃 :

https://stackoverflow.com/a/5502317/309395

관련 문제