C#에서 줄로 구분된 JSON(LDJSON) 직렬화 및 역직렬화
객체를 행으로 구분된 JSON(LDJSON) 형식(Google BigQuery 데이터 준비에 일반적으로 사용됨)으로 직렬화 및 역직렬화해야 하는 경우 이 프로세스를 이해하는 것이 중요합니다. LDJSON은 데이터를 줄 바꿈으로 구분된 일련의 JSON 개체로 나타냅니다.
LDJSON 데이터 수동 구문 분석
Json.NET의 JsonTextReader는 LDJSON 데이터를 수동으로 구문 분석하는 방법을 제공합니다. JsonTextReader는 SupportMultipleContent 플래그를 true로 설정하여 연속 JSON 개체를 처리할 수 있습니다.
첫 번째 JSON 예(단순 객체)
다음 LDJSON 데이터를 고려하세요.
<code>{"some":"thing1"} {"some":"thing2"} {"some":"thing3"}</code>
분석 방법은 다음과 같습니다.
<code class="language-csharp">var json = "{\"some\":\"thing1\"}\r\n{\"some\":\"thing2\"}\r\n{\"some\":\"thing3\"}"; var jsonReader = new JsonTextReader(new StringReader(json)) { SupportMultipleContent = true // 允许多个JSON对象 }; var jsonSerializer = new JsonSerializer(); while (jsonReader.Read()) { var foo = jsonSerializer.Deserialize<foo>(jsonReader); }</code>
두 번째 JSON 예(중첩 객체)
더 복잡한 JSON:
<code class="language-json">{"kind": "person", "fullName": "John Doe", "age": 22, "gender": "Male", "citiesLived": [{ "place": "Seattle", "numberOfYears": 5}, {"place": "Stockholm", "numberOfYears": 6}]} {"kind": "person", "fullName": "Jane Austen", "age": 24, "gender": "Female", "citiesLived": [{"place": "Los Angeles", "numberOfYears": 2}, {"place": "Tokyo", "numberOfYears": 2}]}</code>
동일한 접근 방식을 사용하여 역직렬화된 각 개체를 목록에 추가합니다.
<code class="language-csharp">var json = "{...}"; // 定义JSON字符串 var jsonReader = new JsonTextReader(new StringReader(json)) { SupportMultipleContent = true }; var jsonSerializer = new JsonSerializer(); var listOfPeople = new List<person>(); while (jsonReader.Read()) { listOfPeople.Add(jsonSerializer.Deserialize<person>(jsonReader)); }</code>
참고: Json.Net 10.0.4 이상에서는 쉼표로 구분된 JSON 항목도 지원하여 추가적인 유연성을 제공합니다.
위 내용은 C#에서 줄로 구분된 JSON(LDJSON)을 직렬화 및 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!