JSON派生类型反序列化困难

时间:2017-07-20 11:12:28

标签: c# json deserialization restsharp

我有一个解决方案,我使用提供JSON数据的RestSharp来使用WebService。我有这样的类模型,匹配收到的数据:

public class PBase
{
    public string Name { get; set; }

    public virtual string GetValue()
    {
        return string.Empty;
    }
}

public class PDouble : PBase
{
    public double DoubleValue { get; set; }
    public string Scale { get; set; }

    public override string GetValue()
    {
        return DoubleValue.ToString(CultureInfo.InvariantCulture);
    }
}

public class PBool : PBase
{
    public bool? BoolValue { get; set; }

    public override string GetValue()
    {
        if (!BoolValue.HasValue)
            return null;
        return BoolValue.Value ? "1" : "0";
    }
}

在数据的深处,如下所示的块会出现多次,保存父对象的参数,这在这里不太感兴趣(除了参数thingy以外的所有其他工作正常):

"Parameters":
[
    {
        "__type": "PDouble:http://name.space.de/Parameter",
        "Name": "DEPTH",
        "DoubleValue": 5,
        "Scale": "MM"
    },
    {
        "__type": "PDouble:http://name.space.de/Parameter",
        "Name": "HEIGHT",
        "DoubleValue": 10,
        "Scale": "MM"
    },
    {
        "__type": "PBool:http://name.space.de/Parameter",
        "Name": "ESSENTIAL",
        "BoolValue": true
    },
]

现在,问题是,反序列化的数据只包含PBase实例。所以除了名字之外的一切都消失如何实现正确的反序列化?

编辑:

对于反序列化,我没有特别的实现,就像这样:

var client = new RestClient()
{
    BaseUrl = new Uri("MyURL")
};
var request = new RestRequest()
{
    Resource = "MyResource",
    Method = Method.GET
};
request.AddHeader("Accept", "application/json");
request.RequestFormat = DataFormat.Json;

var response = client.Execute<MyType>(request);
return response.Data;

0 个答案:

没有答案