Json.net을 사용하여 JSON 데이터 구문 분석
소개
JSON 데이터를 구문 분석하는 것은 어려운 작업일 수 있으며, 특히 복잡한 구조를 다룰 때 더욱 그렇습니다. 이 문서의 목적은 Json.net을 사용하여 JSON을 구문 분석하는 프로세스를 명확히 하고 지침을 제공하며 일반적인 방법을 강조하는 것입니다.
JSON을 구문 분석하는 방법
JsonTextReader
JsonTextReader는 JSON 텍스트를 스트리밍 방식으로 읽으므로 개발자가 데이터를 점진적으로 읽을 수 있습니다. 그러나 JSON 구문에 대한 철저한 이해가 필요하며 효과적으로 사용하기 어려울 수 있습니다.
직렬화 및 역직렬화
직렬화는 객체를 JSON 문자열로 변환하는 반면, 역직렬화는 JSON 표현에서 객체를 재구성합니다. 이 방법을 사용하려면 JSON 구조와 일치하고 데이터 조작을 단순화할 수 있는 클래스를 만들어야 합니다.
사용자 정의 파서
사용자 정의 파서를 구축하면 파싱 프로세스를 완전히 제어할 수 있어 개발자가 자신의 규칙과 처리 논리를 정의할 수 있습니다. 그러나 이를 위해서는 많은 개발 작업과 JSON 구문에 대한 깊은 이해가 필요합니다.
JavaScriptSerializer 사용(지원 중단됨)
JavaScriptSerializer는 System.Web.Extensions 라이브러리에서 제공되는 또 다른 방법입니다. JSON을 처리할 수 있지만 Microsoft에서는 공식적으로 지원하지 않으며 이후 버전의 .NET에서는 더 이상 사용되지 않습니다.
권장 방법: 직렬화 및 역직렬화
대부분의 경우 JSON을 직렬화 및 역직렬화하는 것이 선호되는 방법입니다. 개발자는 JSON 구조와 일치하는 클래스를 정의함으로써 효율적인 데이터 조작 및 쿼리를 위해 개체 지향 프로그래밍 및 LINQ의 기능을 활용할 수 있습니다.
예: 복잡한 JSON 구문 분석
다음 JSON 구조를 고려하세요.
<code>{ "displayFieldName" : "OBJECT_NAME", "fieldAliases" : { "OBJECT_NAME" : "OBJECT_NAME", "OBJECT_TYPE" : "OBJECT_TYPE" }, "positionType" : "point", "reference" : { "id" : 1111 }, "objects" : [ { "attributes" : { "OBJECT_NAME" : "test name", "OBJECT_TYPE" : "test type" }, "position" : { "x" : 5, "y" : 7 } } ] }</code>
직렬화 및 역직렬화를 사용하여 이 JSON을 구문 분석하려면 다음 클래스를 정의합니다.
<code class="language-csharp">public class NameTypePair { public string OBJECT_NAME { get; set; } public string OBJECT_TYPE { get; set; } } public class Ref { public int id { get; set; } } public class SubObject { public NameTypePair attributes { get; set; } public Position position { get; set; } } public class Position { public int x { get; set; } public int y { get; set; } } public class Foo { public Foo() { objects = new List<SubObject>(); } public string displayFieldName { get; set; } public NameTypePair fieldAliases { get; set; } public string positionType { get; set; } // 修改为string类型 public Ref reference { get; set; } public List<SubObject> objects { get; set; } }</code>
그런 다음 JSON을 Foo 객체로 역직렬화합니다.
<code class="language-csharp">string json = ...; Foo foo = JsonConvert.DeserializeObject<Foo>(json);</code>
이제 foo 객체에는 구문 분석된 데이터가 포함되어 있으며 객체 지향 기술을 사용하여 조작할 수 있습니다.
예제 JSON 데이터를 기반으로 positionType
유형이 PositionType
에서 string
으로 수정되었습니다. 이렇게 하면 코드가 실제 상황과 더 관련성이 높아집니다. 실제 애플리케이션에서 positionType
이 열거형인 경우 이에 맞게 코드를 수정해야 합니다.
위 내용은 C#에서 Json.net을 사용하여 복잡한 JSON 데이터를 효율적으로 구문 분석하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!