首页 >后端开发 >C++ >如何使用 JSON.NET 在 C# 中反序列化行分隔 JSON?

如何使用 JSON.NET 在 C# 中反序列化行分隔 JSON?

Susan Sarandon
Susan Sarandon原创
2025-01-22 16:52:10633浏览

How to Deserialize Line-Delimited JSON in C# using JSON.NET?

C#中换行分隔JSON数据的序列化和反序列化

在C#中,您可以利用JSON.NET库来处理换行分隔的JSON数据。这种格式的JSON数据对于与Google BigQuery等服务交互至关重要。

序列化和反序列化过程

您可以使用JsonTextReader来解析换行分隔的JSON数据。具体步骤如下:

  1. 创建一个POCO类(例如FooPerson)来表示JSON数据结构。
  2. 使用SupportMultipleContent标志设置为true来初始化JsonTextReader对象。这对于处理单个流中的多个JSON对象至关重要。
  3. 使用JsonSerializer反序列化每个JSON对象。

如果需要将反序列化结果存储为列表,请在循环中将每个反序列化的项目添加到列表中。

示例一:简单JSON数据

对于以下JSON数据:

<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
};

var jsonSerializer = new JsonSerializer();
var fooList = new List<Foo>();

while (jsonReader.Read())
{
    fooList.Add(jsonSerializer.Deserialize<Foo>(jsonReader));
}</code>

示例二:复杂JSON数据

对于更复杂的JSON数据:

<code>{"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>

创建一个Person POCO类,并使用与示例一相同的方法进行反序列化。

需要注意的是,此技术也支持使用Json.Net 10.0.4及更高版本进行逗号分隔的JSON条目。

以上是如何使用 JSON.NET 在 C# 中反序列化行分隔 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn