相关疑难解决方法(0)

System.Text.Json 中是否可以进行多态反序列化?

我尝试从 Newtonsoft.Json 迁移到 System.Text.Json。我想反序列化抽象类。Newtonsoft.Json 为此具有 TypeNameHandling。有没有办法通过.net core 3.0 上的 System.Text.Json 反序列化抽象类?

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

60
推荐指数
6
解决办法
3万
查看次数

System.Text.Json 和动态解析多态对象

我不相信我正在考虑如何在解析 json 结果时正确使用 JsonConverter 进行多态性。

在我的场景中,我的目标是 TFS 中的 Git 策略配置。策略配置:


"value": [
{
        "createdBy": {
            "displayName": "username",
            "url": "url",
            "id": "id",
            "uniqueName": "user",
            "imageUrl": "url"
        },
        "createdDate": "2020-03-21T18:17:24.3240783Z",
        "isEnabled": true,
        "isBlocking": true,
        "isDeleted": false,
        "settings": {
            "minimumApproverCount": 1,
            "creatorVoteCounts": false,
            "allowDownvotes": false,
            "resetOnSourcePush": true,
            "scope": [{
                    "refName": "refs/heads/master",
                    "matchKind": "Exact",
                    "repositoryId": "id"
                }
            ]
        },
        "_links": {
            "self": {
                "href": "url"
            },
            "policyType": {
                "href": "url"
            }
        },
        "revision": 1,
        "id": 974,
        "url": "url",
        "type": {
            "id": "id",
            "url": "url", …
Run Code Online (Sandbox Code Playgroud)

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

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

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
查看次数