如何使用 Utf8JsonWriter 编写字符串数组?
How to write a string array with a Utf8JsonWriter?
我正在做一些测试,想使用 Utf8JsonWriter
而不是 JsonSerializer
.
手动将 JSON 对象写入文件
我有以下代码:
writer.WriteStartObject();
writer.WriteStartObject("InformationObject");
writer.WriteString("Name", "Info Name");
writer.WriteString("Details", "Info Details");
writer.WriteStartArray("Tags");
在 Tags
数组中 属性 我想写一个字符串数组,但是如果我尝试在 WriteStartArray
之后使用 WriteString
或任何其他方法调用,代码在运行时失败。
没有 "WriteArrayContents" 方法或类似的方法,所以我很好奇你打算在 WriteStartArray
之后调用什么方法来实际写入数组内容?
我只是误解了 JSON 的工作方式,还是我错过了 MS API 的某些内容?
您需要调用WriteStringValue()
将字符串值写入数组:
Writes a string text value (as a JSON string) as an element of a JSON array.
而且,更一般地说,您需要使用 Write*Value()
methods of Utf8JsonWriter
(such as WriteBooleanValue()
or WriteNumberValue()
) 之一来编写适当类型的数组元素。
因此您的 Write()
方法应该如下所示:
public override void Write(Utf8JsonWriter writer, InformationObject value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WriteStartObject("InformationObject");
writer.WriteString("Name", "Info Name");
writer.WriteString("Details", "Info Details");
writer.WriteStartArray("Tags");
// Write some dummy values here
writer.WriteStringValue("value1");
writer.WriteStringValue("value2");
writer.WriteEndArray();
writer.WriteEndObject();
writer.WriteEndObject();
}
演示 fiddle here.
我正在做一些测试,想使用 Utf8JsonWriter
而不是 JsonSerializer
.
我有以下代码:
writer.WriteStartObject();
writer.WriteStartObject("InformationObject");
writer.WriteString("Name", "Info Name");
writer.WriteString("Details", "Info Details");
writer.WriteStartArray("Tags");
在 Tags
数组中 属性 我想写一个字符串数组,但是如果我尝试在 WriteStartArray
之后使用 WriteString
或任何其他方法调用,代码在运行时失败。
没有 "WriteArrayContents" 方法或类似的方法,所以我很好奇你打算在 WriteStartArray
之后调用什么方法来实际写入数组内容?
我只是误解了 JSON 的工作方式,还是我错过了 MS API 的某些内容?
您需要调用WriteStringValue()
将字符串值写入数组:
Writes a string text value (as a JSON string) as an element of a JSON array.
而且,更一般地说,您需要使用 Write*Value()
methods of Utf8JsonWriter
(such as WriteBooleanValue()
or WriteNumberValue()
) 之一来编写适当类型的数组元素。
因此您的 Write()
方法应该如下所示:
public override void Write(Utf8JsonWriter writer, InformationObject value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WriteStartObject("InformationObject");
writer.WriteString("Name", "Info Name");
writer.WriteString("Details", "Info Details");
writer.WriteStartArray("Tags");
// Write some dummy values here
writer.WriteStringValue("value1");
writer.WriteStringValue("value2");
writer.WriteEndArray();
writer.WriteEndObject();
writer.WriteEndObject();
}
演示 fiddle here.