[英]How to create a dynamic object from JSON that itself contains the structure of that object
json.net 中有一个很好的 function 可以将 json 转换为 c# object:
CMyObject myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<CMyObject>(json);
问题是需要预先知道结构。
如果结构本身来自 json 本身,是否有精益方法?
这里以 json 为例:
{
"data": {
"255622": {
"2": {
"value": "Active"
},
"3": {
"value": null
}
}
},
"schema": {
"255622": {
"name": "NameOfStructure",
"properties": {
"2": {
"multi_value": false,
"name": "Status",
"type_name": "String"
},
"3": {
"multi_value": false,
"name": "StatusDate",
"type_name": "Date"
}
}
}
}
}
这应该转换为:
myObject (type NameOfStructure)
myObject.Status = "Active" (type String - single value)
myObject.StatusDate = null (type Date - single value)
有任何想法吗?
实际上,我很确定您可以使用动态关键字来做到这一点。
我现在无法检查,但您应该可以执行以下操作:
dynamic myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
或类似的东西,这有时很有用,因为您仍然可以根据需要解析树或发现类型是什么,然后根据您的用例对这些信息执行某些操作。
我过去也使用过另一种方法,使用 ExpandoObject 而不是动态的。
这取决于您的用例是什么,但这些是我要研究的更多方法
使用json.net你可以很容易地这样做:
dynamic myObject = JsonConvert.DeserializeObject(json);
结果将是动态的,因此您可以通过
var myField = myObject.data.yourJsonfield;
同样使用 Newtonsoft.Json.Linq:
dynamic myObject = JObject.Parse(json);
您可以 在此处找到更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.