저는 JSON을 처음 접했고 API가 제공하는 일부 구문을 분석해야합니다. 빠른 Google 검색은 JSON.NET으로 바뀌 었으므로 이제이 JSON을 구문 분석하여 목록 개체로 사용하려고합니다. 우선, 은 JSON.NET이 최고의 라이브러리는이에요?JSON.NET을 사용하여 일부 JSON을 비 직렬화
이것은 내가하려고하는 것입니다. 예를 들어이라는 클래스가 있습니다. json에는 많은 "요소"(호출되는 경우)가 있으며 각 에는 id라는 정수, name이라는 문자열 및 creationTime이라는 datetime이라는 세 개의 필드이 들어 있습니다. json 의 모든 항목 "요소"를 Item 객체의 목록으로 파싱하고 싶습니다. Item 클래스에 JSON과 일치하는 3 개의 필드를 만들었습니다. 어떻게 JSON.NET을 사용하여이 작업을 수행 할 수 있습니까?
List<Item> fav = (List<Item>)new JsonSerializer().Deserialize(new JsonReader((TextReader)new StreamReader(response.GetResponseStream())));
을했지만 작동하지 않는 것 :
나는 시도했습니다. 캐스팅 오류가 발생합니다. 단지 목록 인클로저로 처리 할 수 없지만 JSON을 하나의 Item 클래스로 처리 할 수 있는지 여부는 확실하지 않습니다 (JSON.NET은 문서화가 잘되어 있지 않지만, 내일 심하게 디버깅 할 것입니다.)
JSON.NET으로 구문 분석 할 수있는 방법을 설명하는 샘플 코드를 제공 할 수 있습니까?
감사합니다.
업데이트 : 그건 그렇고, 내 프로젝트는 .NET Framework 2.0을 대상으로하므로 JSON.NET : 1.3.1의 레거시 버전을 사용하고 있습니다. 최소한의 시스템 요구 사항을 손상시키지 않으면 서 프로젝트를 .NET 3.5로 변환할만한 큰 이점이 있습니까?
업데이트 # 2 : 내가 대신 JSON.NET의 System.Web.Extensions.dll에 JavascriptSerializer 클래스를 사용하기로 결정했고, 그것에 대해 질문 here을 게시됩니다. 감사!
"보이지 않습니다. 일 "은 매우 자세하지 않습니다. 무슨 일이야? 그리고 그렇습니다. LINQ는 .NET 3.5의 전반적인 장점이자 JSON.NET의 최신 버전을 사용할 수 있음을 의미합니다. –
@Jon 글쎄 우선, 내가 아는 한, 이것이 내 게시물 중 하나에 답장을 한 것은 처음이므로 감사합니다! 불행히도 LINQ를 모르지만 그것을 배우고 싶습니다! 최신 버전을 사용하려고합니다. 무엇이 작동하지 않는 것은 캐스팅 오류가 발생한다는 것입니다. 캐스팅 오류는 단지 목록 인클로저로 변환 할 수 없습니다. 적어도 JSON.NET은 잘 문서화되지 않았으므로 이것이 의미한다고 생각합니다. 이전에 JSON.NET을 사용한 사람이 있습니까? 그런 경우 어떻게 이러한 문제에 접근 할 수 있는지 설명 할 수 있습니까?감사! ;) –
문제는 이전 버전의 JSON.NET에 대한 도움을 요청하고 있다는 것입니다. 많은 사람들이 최신 버전에만 익숙 할 것입니다. –