我有一个 JSON 文件,它通过来自客户端的 POST 请求发送到 MVC Controller 。由于在 C# 中没有直接存储 JSON 的方法,我正在尝试创建模型来存储数据。这是 JSON 的结构:
{
"SubscriptionsType1": {
"Obj1": {
"Value1": "3454234",
"Value2": "345643564",
"Value3": "665445",
"Value4": "True"
},
"Obj2": {
"Value1": "3454234",
"Value2": "345643564",
"Value3": "665445",
"Value4": "True"
},
"Obj3": {
"Value1": "3454234",
"Value2": "345643564",
"Value3": "665445",
"Value4": "True"
}
},
"SubscriptionsType2": {
"Obj1": {
"Value1": "3667635",
"Value2": "34563456",
"Value3": "234545",
"Value4": "False"
},
"Obj2": {
"Value1": "97865",
"Value2": "356356",
"Value3": "665757445",
"Value4": "True"
},
"Obj3": {
"Value1": "3454234",
"Value2": "345643564",
"Value3": "665445",
"Value4": "False"
}
},
//etc..
}
模型如下:
public class RootObject {
public IEnumerable<SubscriptionObj> Subscriptions { get; set; }
}
public class Subscriptions {
IEnumerable<SubscriptionObj> objs;
}
public class SubscriptionObj
{
public Int64 Value1 {get;set;}
public Int64 Value2 {get;set;}
public Int64 Value3 {get;set;}
public Boolean Value4 {get;set;}
}
出于某种原因,如果我使用此结构创建模型类,在从 Controller 传递 JSON 对象后,根对象仍然为 null。 但是,当我显式创建属性来存储 JSON 对象的每个值时,它就起作用了。由于 JSON 对象没有固定数量的元素,我需要一种方法来动态存储每个属性。 如何做到这一点?
最佳答案
由于根对象和订阅中的键不同,您应该使用字典。
public class RootObject : Dictionary<string, Subscriptions> { }
public class Subscriptions : Dictionary<string, SubscriptionObj> { }
public class SubscriptionObj {
public Int64 Value1 {get;set;}
public Int64 Value2 {get;set;}
public Int64 Value3 {get;set;}
public Boolean Value4 {get;set;}
}
上面的代码会序列化为 OP 中的 JSON,但您丢失了强类型键/属性名称
关于c# - 如何解析在 MVC Controller 中收到的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46325235/