我有以下json:
{
"Values":
{
"value1": "test1",
"value2": "teste2"
}
}
我必须获得特定的属性和值。这是我的代码:
public MyMethod(object model)
{
var x = model.GetType().GetProperty("value1");
}
但这始终为空。我怎么能得到这个?
答案 0 :(得分:0)
您的JSON是一个对象,其中包含一个名为Values
的属性。该属性是一个对象,其中包含两个名为value1
和value2
的属性。为了获得value1
和value2
,首先必须获得Values
。
public MyMethod(object model)
{
PropertyInfo modelProperty = model.GetType().GetProperty("Values");
var modelValue = modelProperty.GetValue(model);
// Get properties for value1 & value 2, then their values...
}
答案 1 :(得分:0)
您可以将其转换为dynamic
类型并使用
public string MyMethod(object model)
{
var x = ((dynamic)model).Values["value1"].Value;
return x;
}
如果使用asp.net core 3.0,则需要添加对Microsoft.AspNetCore.Mvc.NewtonsoftJson的程序包引用,并更新Startup.ConfigureServices以调用AddNewtonsoftJson。
services.AddControllers().AddNewtonsoftJson();
我还找到了另一种使用JObject
的解决方案,您需要为控制器添加引用using Newtonsoft.Json.Linq;
。
public string MyMethod(object model)
{
var data = (JObject)model;
//save all values in items
var items = data.SelectToken("Values").Children().OfType<JProperty>().ToDictionary(p => p.Name, p => p.Value);
foreach (var item in items)
{
if (item.Key == "value1")
{
var x = (string)item.Value;
}
}
}