動的jsonプロパティの逆シリアル化

Aug 20 2020

動的プロパティ(たとえば、-UserRequest :: 567)を持つjsonを逆シリアル化する方法を理解するのに苦労しています。プロパティ名は任意の値にすることができ、UserRequestオブジェクトには興味のある他のjsonプロパティが含まれています

私はクラスを書くのに疲れていて、そのプロパティをどうしたらいいのかわかりません。このような問題に対処するためのベストプラクティスは何ですか?

{
    "objects": {
        "UserRequest::567": {
            "code": 0,
            "message": "created",
            "class": "UserRequest",
            "key": "567",
            "fields": {
                "ref": "R-000567",
                "org_id": "4"
            }
        }
    }
}

問題は、この種のjson文字列を読むためのベストプラクティスは何ですか?

ありがとうございました

回答

1 janzen Aug 20 2020 at 23:23

Deserializeこの使用してNewtonsoft.Json、ここで、クラスは次のとおりです。

public class CreateRequest
{
    public long code { get;set; }
    public string message { get; set; }

    [JsonProperty("class")]
    public string class1 { get; set; }

    public string key { get; set; }
    public Fields fields { get; set; }
}

public class Fields
{
    [JsonProperty("ref")]
    public string refe { get; set; }
    public string org_id { get; set; }
}

public class Root
{
    public Dictionary<string, CreateRequest> objects { get; set; }
    //The 'string' key in the dictionary is the 'UserRequest::567'
}

次にDeserialize使用するには:

var x = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(jsonObject).objects.Values;