我如何反序列化映射到不同的属性名称



我的JSON字符串是这样的。

string jsonstring1 = @"{'data':'N'}";
string jsonstring2 = @"{'data':[{'name':'jack','address':'la'}]}";
string jsonstring3 = @"{'data':{'flag':true}}";

如何定义一个类,可以使用这三个JSON字符串反序列化对象?

假设这三个是您唯一可能的JSON字符串,那么您需要创建三个根类。你可以使用一些工具来做到这一点,或者简单地复制每个JSON字符串,然后在Visual Studio中点击Edit> Paste Special> Paste JSON As Classes进行粘贴。例如,jsonstring2对应的类如下所示:

public class Rootobject
{
    public Person[] data { get; set; }
}
public class Person
{
    public string name { get; set; }
    public string address { get; set; }
}

那么你需要像下面这样检测"data"的类型:

JObject jo = JObject.Parse(jsonstring2);
string type = jo["data"].GetType().Name;

在本例中是JArray(另外两个是JValue和JObject)。然后,可以使用switch语句将字符串反序列化为正确的类。

最新更新