C# 将多个Json对象反序列化为各自的类型
我的服务中发布了不同类型的JsonC# 将多个Json对象反序列化为各自的类型,c#,asp.net-web-api,C#,Asp.net Web Api,我的服务中发布了不同类型的Json var postedJson = [ { "firstName":"John", "lastName":"Doe" }, { "fruit":"apple", "Available":"false" }, { "length":100, "width":60, "height":30 }, { "firstName":"Shivang", "lastName":"Mittal" } ] 我在服务端有相同类型的模型,如何创建一个
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成为通用的,这样每当有人调用该服务时,它都会自动匹配相应的类型并与模型绑定。
有什么好方法可以做到这一点吗首先建议的事情很少
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);
string json=“[{\'Name\”:{\'FirstName\”:“John\”,“LastName\”:“Doe\”,“Fruit\”:“{\'Fruit\”:“apple\”,“Available\”:“false\”,“Dimensions\”:{\'Length\”:100,\'Width\:60,\'Height\:30},{\'Name\:{\'FirstName\:{\'FirstName\:“Shivang\”,“LastName\:“Mittal\“},\\\\\”:{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
var模型=新模型();
//多亏了“Newtonsoft.Json”,神奇的事情发生了`
model.Peoples=JsonConvert.DeserializeObject(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; }
}
公共类模型
{
公共列表人{get;set;}
}
公共阶层人士
{
公共名称名称{get;set;}
公共水果{get;set;}
公共维度维度{get;set;}
}
公共类名
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
公共级水果
{
公共字符串类型{get;set;}
公共bool可用{get;set;}
}
公共类维度
{
公共整数长度{get;set;}
公共整数高度{get;set;}
公共整数宽度{get;set;}
}
您可以更改当前的JSON结构吗?@OrelEraki:可以,我可以这样做我会尝试List
var listOfDicts=JsonConvert.DeserializeObject(JSON)
@EZI:绑定到模型对于根据类型将数据推送到Elasticsearch非常重要,并且在模型上也有某些验证。调用仍然不是泛型的。每次出现新类型时,我都需要在“public class Person”中添加新类型。