代码之家  ›  专栏  ›  技术社区  ›  LorneCash

ServiceStack将Json(带类型)反序列化为特定类型的列表

  •  0
  • LorneCash  · 技术社区  · 4 年前

    我有一个json:

        {
        "$type": "System.Collections.Generic.List<MyType>",
        "$values": [
            {
                "$type": "MyType",
                "o": 7.54,
                "t": 1619002800000,
                "n": 3
            },
            {
                "$type": "MyType",
                "o": 7.53,
                "t": 1619005140000,
                "n": 3
            }
        ]
    }
    

    我想把它反序列化为 List<MyType> . 我想有个简单的方法可以做到:

    var myList = json.FromJson<MyType>();
    

    但这行不通。

    var myListOfObject = (List<object>)((Dictionary<string, object>)JSON.parse(json))["$values"];
    var myTypes = myListOfObject.ConvertAll(x => JSON.stringify(x).FromJson<MyType>());
    

    0 回复  |  直到 4 年前
        1
  •  1
  •   mythz    4 年前

    您应该使用用于序列化负载的序列化程序来反序列化负载。ServiceStack.Text使用 __type

    这可能使用了JSON.NET,您应该使用它来反序列化它,否则您可以使用ServiceStack的 JS Utils 反序列化任意JSON。