本文主要介绍Newtonsoft.JSON(Json.NET)中,将一个对象的Json字符串反序化成两个不同的实体对象的方法代码。具体效果如下:
Json字符串:
[{"guardian_id": "1453","guardian_name": "Foo Bar","patient_id": "938","patient_name": "Foo Bar",
}]
反序列化成的两个Model实例对象:
class Guardian {[JsonProperty(PropertyName = "guardian_id")]public int ID { get; set; }[JsonProperty(PropertyName = "guardian_name")]public int Name { get; set; }
}class Patient {[JsonProperty(PropertyName = "patient_id")]public int ID { get; set; }[JsonProperty(PropertyName = "patient_name")]public int Name { get; set; }
}
1、分别反序化成实体(model)对象
string json = @"[{'guardian_id':'1453','guardian_name':'Foo Bar','patient_id':'938','patient_name':'Foo Bar'}]";
var guardians = JsonConvert.DeserializeObject<List<Guardian>>(json);
var patients = JsonConvert.DeserializeObject<List<Patient>>(json);
2、通过Pair类反序化
反序化一次就可以实现
Pair类如下:
public class Pair
{public Pair(){Guardian = new Guardian();Patient = new Patient();}[JsonIgnore]public Guardian Guardian { get; set; }[JsonIgnore]public Patient Patient { get; set; }[JsonProperty(PropertyName = "guardian_id")]public int GuardianID{get { return Guardian.ID; }set { Guardian.ID = value; }}[JsonProperty(PropertyName = "guardian_name")]public string GuardianName{get { return Guardian.Name; }set { Guardian.Name = value; }}[JsonProperty(PropertyName = "patient_id")]public int PatientID{get { return Patient.ID; }set { Patient.ID = value; }}[JsonProperty(PropertyName = "patient_name")]public string PatientName{get { return Patient.Name; }set { Patient.Name = value; }}
}
反序列化代码:
string json = @"[{'guardian_id':'1453','guardian_name':'Foo Bar','patient_id':'938','patient_name':'Foo Bar'}]";
var pairs = JsonConvert.DeserializeObject<Pair[]>(json);
if (pairs.Any())
{var pair = pairs[0];Console.WriteLine(pair.Guardian.Name);Console.WriteLine(pair.Patient.Name);
}