我需要一个从JsonDocument获取JSON字符串的示例。我可以使用RootElement.GetProperty("ItemName")
获取属性,然后调用.GetString()
,但看不到一种仅将根元素作为JSON字符串获取的方法吗?
答案 0 :(得分:1)
这里有个例子:
this.className = (this.className != 'selected') ? 'unselected' : 'selected';
为便于使用,您可以将其放在扩展方法中,例如:
JsonDocument jdoc = JsonDocument.Parse("{\"a\":123}");
using(var stream = new MemoryStream())
{
Utf8JsonWriter writer = new Utf8JsonWriter(stream, new JsonWriterOptions { Indented = true });
jdoc.WriteTo(writer);
writer.Flush();
string json = Encoding.UTF8.GetString(stream.ToArray());
}
并像这样使用它:
public static string ToJsonString(this JsonDocument jdoc)
{
using (var stream = new MemoryStream())
{
Utf8JsonWriter writer = new Utf8JsonWriter(stream, new JsonWriterOptions { Indented = true });
jdoc.WriteTo(writer);
writer.Flush();
return Encoding.UTF8.GetString(stream.ToArray());
}
}
答案 1 :(得分:0)
为记录起见,{@ 3}}的官方doco中有2个代码段
以下示例显示如何从JsonDocument写入JSON:
(surprisingly long code snippet here)
前面的代码:
- 读取JSON文件,将数据加载到JsonDocument中,然后将格式化(漂亮打印)的JSON写入文件中。
- 使用JsonDocumentOptions指定允许但忽略输入JSON中的注释。
- 完成后,在编写器上调用Flush。另一种选择是让编写器在处理后自动刷新。
下面的示例演示如何使用Utf8JsonWriter类:
(...)
已调整的片段可以使用JsonDocument.Parse
:
using var stream = new System.IO.MemoryStream();
using (var writer = new Utf8JsonWriter(stream, new JsonWriterOptions { Indented = true }))
{
var jsonDocument = JsonDocument.Parse(content);
jsonDocument.WriteTo(writer);
}
var formatted = System.Text.Encoding.UTF8.GetString(stream.ToArray());