相关疑难解决方法(0)

在 System.Text.Json 中是否可以指定自定义缩进规则?

编辑:我昨天在.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)

c# indentation system.text.json

7
推荐指数
1
解决办法
1097
查看次数

System.Text.Json.JsonElement ToObject解决方法

我想知道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")转换为字符串,然后反序列化该字符串。但是我觉得这可能不是最有效的方法,而且我真的找不到以其他方式进行操作的文档。

c# .net-core-3.0 system.text.json

5
推荐指数
4
解决办法
335
查看次数

标签 统计

c# ×2

system.text.json ×2

.net-core-3.0 ×1

indentation ×1