编辑:我昨天在.Net 运行时 repo 上提出了一个问题,该问题已被“layomia”关闭,并带有以下消息:“添加这样的扩展点会在较低级别的读取器和写入器上带来性能成本,并且不会带来良好的性能性能和功能/好处之间的平衡。提供这样的配置不在 System.Text.Json 路线图上。”
当设置 JsonSerializerOptions.WriteIndented = true 缩进在编写 json 时看起来像这样......
{
"TILESET": "tilesets/HOW_TO_GET_TILESET_NAME_?",
"TILES": {
"TILE_1": {
"NAME": "auto_tile_18",
"TEXTURE_BOUNDS": [
304,
16,
16,
16
],
"SCREEN_BOUNDS": [
485,
159,
64,
64
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将自动缩进更改为这样的......
{
"TILESET": "tilesets/HOW_TO_GET_TILESET_NAME_?",
"TILES":
{
"TILE_1":
{
"NAME": "auto_tile_18",
"TEXTURE_BOUNDS": [304, 16, 16,16],
"SCREEN_BOUNDS": [485, 159, 64, 64]
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想知道ToObject<>()Json.NET中System.Text.Json 的等效方法。
使用Json.NET,您可以使用任何JToken一个并将其转换为类。例如:
var str = ""; // some json string
var jObj = JObject.Parse(str);
var myClass = jObj["SomeProperty"].ToObject<SomeClass>();
Run Code Online (Sandbox Code Playgroud)
.NET Core 3的新功能我们将如何做到这一点 System.Text.Json
var str = ""; // some json string
var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty"). <-- now what??
Run Code Online (Sandbox Code Playgroud)
最初,我以为只是将JsonElement返回的内容jDoc.RootElement.GetPRoperty("SomeProperty")转换为字符串,然后反序列化该字符串。但是我觉得这可能不是最有效的方法,而且我真的找不到以其他方式进行操作的文档。