我有这个杰森:
{
'TypeName': 'MyType',
'Values':
{
value1: 12,
value2: 'asdf',
value3: 32.2
}
}
值可以是字符串,也可以是数字,并且未设置值的数量(因此可以是3,但也可以是5或12)。我在MVC中有一个方法:
class CoolObject{
public string TypeName { get; set; }
public ?????? Values { get; set; }
}
[HttpPost]
public ActionResult DoStuff(CoolObject values){
//Do cool stuff with cool object
}
CoolObject应该包括哪种类型的对象才能起作用?
您的JSON不是有效的JSON,它应该看起来像这样:
{
"TypeName": "MyType",
"Values": {
"value1": 12,
"value2": "asdf",
"value3": 32.2
}
}
或者,您可以在那里设置数组。但是,让我们假设它是这样的。然后,您可以尝试使用此类进行操作:
class CoolObjectValues
{
public object value1 { get; set; }
public object value2 { get; set; }
public object value3 { get; set; }
}
class CoolObject
{
public string TypeName { get; set; }
public CoolObjectValues Values { get; set; }
}
请注意,当您要使用CoolObjectValues中的值时,将需要确定值的类型是什么。为此,您可以执行以下操作:
int intValue;
if (int.TryParse(co.Values.value1.ToString(), out intValue))
{
// it was int and you now have its value in intValue
}
else
{
// it was string
}
更新:
对于不确定数量的值:
{
"TypeName": "MyType",
"Values": {
"value1": 12,
"value2": "asdf",
"value3": 32.2,
...
}
}
您的课程如下所示:
class CoolObject
{
public string TypeName { get; set; }
public Dictionary<string, object> Values { get; set; }
}
您可以像这样使用它:
CoolObject co = JsonConvert.DeserializeObject<CoolObject>(jsonData);
foreach (KeyValuePair<string, object> kvp in co.Values)
Console.WriteLine("{0} = {1}", kvp.Key, kvp.Value);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句