如何使用 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.