我正在做一些测试,想用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有什么遗漏?
你需要调用 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();
}
演示提琴 此处.