Enr*_*one 7 c# json .net-core system.text.json
在 .NET 6 中,基本上有两种使用 JSON DOM 的方法:
我问自己是否可以从 的实例转换JsonDocument为 的实例JsonNode,反之亦然。基本上我正在寻找这样的东西:
using System.Text.Json;
using System.Text.Json.Nodes;
const string jsonText = "{\"name\": \"Bob\"}";
var jsonNode = JsonNode.Parse(jsonText);
// This code doesn't compile. This is just an example to illustrate what I'm looking for
JsonDocument jsonDocument = jsonNode!.ToJsonDocument();
Run Code Online (Sandbox Code Playgroud)
只是为了添加更多上下文,我问自己这个问题,因为JsonDocument它具有不可变的优点,同时JsonNode提供了一种改变 JSON DOM 片段的方法。
我喜欢尽可能使用不可变对象,但同时我需要改变我正在使用的 JSON DOM。执行此操作的可能策略如下:
JsonDocument从字符串(或 JSON 的任何来源)获取 的实例JsonDocument在代码中始终使用不可变实例JsonNode从实例中获取 的实例JsonDocument,执行所有突变,然后获取 的新的不可变实例JsonDocument。这可以封装在负责执行所有突变的私有方法中JsonDocument实例我在官方文档中没有找到任何线索表明这是可能的,所以这可能是不可能的,并且这些类并未设计为以这种方式工作。
您可以使用Deserialize在两者之间进行转换:
const string jsonText = "{\"name\": \"Bob\", \"inner\": {\"names\": [\"Bob\"]}}";
var jsonNode = JsonNode.Parse(jsonText);
using var deserializeDoc = jsonNode.Deserialize<JsonDocument>();
var deserializeNode = deserializeDoc.Deserialize<JsonNode>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4506 次 |
| 最近记录: |