如何用Utf8JsonWriter写一个字符串数组?

问题描述 投票:0回答:1

我正在做一些测试,想用Utf8JsonWriter手动写一个JSON对象到文件。Utf8JsonWriter 而非 JsonSerializer.

我有以下代码。

writer.WriteStartObject();
writer.WriteStartObject("InformationObject");
writer.WriteString("Name", "Info Name");
writer.WriteString("Details", "Info Details");
writer.WriteStartArray("Tags");

在... Tags 数组属性,我想写一个字符串数组,但是如果我尝试使用 WriteString 或任何其他方法 WriteStartArray 调用,代码在运行时失败。

没有 "WriteArrayContents "方法或类似的东西,所以我很好奇你是要在 WriteStartArray 来实际写入数组内容?

是我误解了JSON的工作方式,还是我对MS API有什么遗漏?

c# arrays .net json serialization
1个回答
2
投票

你需要调用 WriteStringValue() 将一个字符串值写入一个数组中。

写一个字符串文本值(作为JSON字符串)。作为JSON数组的一个元素.

而且,更普遍的是,你需要使用其中的一个。Write*Value() 方法 Utf8JsonWriter 诸如 WriteBooleanValue()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();
}

演示提琴 此处.

© www.soinside.com 2019 - 2024. All rights reserved.