Zin*_*tom 3 .net c# serialization json system.text.json
我正在做一些测试,并且想使用而Utf8JsonWriter不是JsonSerializer.
我有以下代码:
writer.WriteStartObject();
writer.WriteStartObject("InformationObject");
writer.WriteString("Name", "Info Name");
writer.WriteString("Details", "Info Details");
writer.WriteStartArray("Tags");
Run Code Online (Sandbox Code Playgroud)
在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();
}
Run Code Online (Sandbox Code Playgroud)
演示小提琴在这里。
| 归档时间: |
|
| 查看次数: |
7432 次 |
| 最近记录: |