Ric*_*ico 5 c# json json.net web
下面是我从外部API接收的JSON格式的示例:
"object": {
"property_1": {
"values": {
"value": 1,
"displayValue": "1"
}
},
"property_5": {
"values": {
"value": 3,
"displayValue": "3"
}
},
"property_8": {
"values": {
"value": 1,
"displayValue": "1"
}
},
"property_14": {
"values": {
"value": 392,
"displayValue": "392.0"
}
},
"property_17": {
"values": {
"value": 14,
"displayValue": "14"
}
}
}
Run Code Online (Sandbox Code Playgroud)
有大约100种不同的属性类型可以发送,但它们都遵循相同的结构.唯一的区别是属性的名称("property_1","property_5"等).我没有尝试使用一长串不常用的属性来编写一个类,而是认为将它解析为一个对象列表会更有用,在结果类中使用属性名称,如下所示:
public class Property
{
public string Name { get; set; }
public PropertyValues Values { get; set; }
}
public class PropertyValues
{
public double Value { get; set; }
public string DisplayValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,属性名称("property_1","property_5"等)将分配给Property对象的Name字段.
如何使用Json.NET实现这一目标?
L.B*_*L.B 10
var result = JsonConvert.DeserializeObject<Root>(json);
Run Code Online (Sandbox Code Playgroud)
你的模特在下面
public class Root
{
public Dictionary<string, ValueWrapper> Object { get; set; }
}
public class ValueWrapper
{
public PropertyValues Values { get; set; }
}
public class PropertyValues
{
public int Value { get; set; }
public string DisplayValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
BTW:Json.Net可以比@MatíasFidemraizer提出的更容易处理动态 ...
var val = ((dynamic)JsonConvert.DeserializeObject(jsonstring))
.@object.property_14.values.value;
var val = ((dynamic)JsonConvert.DeserializeObject(jsonstring))
.@object["property_14"].values.value;
Run Code Online (Sandbox Code Playgroud)
但是这种方法需要你知道property_14你的服务器会事先返回...
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |