我有一个不同类型的Json发布到我的服务中。
var postedJson = [
{ "firstName":"John", "lastName":"Doe" },
{ "fruit":"apple", "Available":"false" },
{ "length":100, "width":60, "height":30 },
{ "firstName":"Shivang", "lastName":"Mittal" }
]
我在服务端有相同类型的模型,如何创建一个通用的方法来接收数据,然后根据它们的类型对它进行反序列化。
现在我正在按照下面这样做
public void SaveData(MasterModel data)
public class MasterModel
{
public PersonInfo Person{get; set;}
public DimensionInfo Dimension{get; set;}
}
我想将此SaveData设为通用,以便每当有人调用该服务时,它会自动匹配相应的类型并与模型绑定。 有没有好办法呢
答案 0 :(得分:2)
首先建议的事情很少。
将JSON格式更改为更易解析。示例:http://codebeautify.org/jsonviewer/71f495
大写字母也是一个好主意,因为这些属性转换为强类型属性。
主要强>
string json = "[ { \"Name\": { \"FirstName\":\"John\", \"LastName\":\"Doe\" }, \"Fruit\": { \"Fruit\":\"apple\", \"Available\":\"false\" }, \"Dimensions\": { \"Length\": 100, \"Width\": 60, \"Height\": 30 } } , { \"Name\": { \"firstName\":\"Shivang\", \"lastName\":\"Mittal\" }, \"Fruit\": { \"Fruit\":\"orange\", \"Available\":\"true\" }, \"Dimensions\": { \"Length\": 120, \"Width\": 40, \"Height\": 10 } }]";
var model = new Model();
// Here is the magic happening, thanks to `Newtonsoft.Json`
model.Peoples = JsonConvert.DeserializeObject<List<Person>>(json);
<强>实体强>
public class Model
{
public List<Person> Peoples { get; set; }
}
public class Person
{
public Name Name { get; set; }
public Fruit Fruit { get; set; }
public Dimensions Dimensions { get; set; }
}
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Fruit
{
public string Type { get; set; }
public bool Available { get; set; }
}
public class Dimensions
{
public int Length { get; set; }
public int Height { get; set; }
public int Width { get; set; }
}