有json:
{
"resourceType": "Parameters",
"parameter": [{
"name": "return",
"resource": {
"resourceType": "ValueSet",
"id": "f0ff2153-d170-49c0-9e8d-558ca41b9105",
"meta": {
"versionId": "1c0d1a38-e6bc-4a11-bb54-c624fc542898",
"lastUpdated": "2015-07-20T13:47:23.15+03:00"
},
"url": "urn:oid:1.2.643.2.69.1.1.1.7",
"version": "1",
"name": "Классификатор категорий льгот",
"status": "active",
"experimental": true,
"publisher": "bla",
"contact": [{
"telecom": [{
"system": "email",
"value": "support@bla.ru"
}]
}],
"compose": {
"import": [
"1.2.643.2.69.1.1.1.7_INNER"
]
},
"expansion": {
"timestamp": "07/27/2017 13:19:12",
"parameter": [{
"name": "total",
"valueString": "69"
}],
"contains": [{
"code": "10",
"display": "Инвалиды войны"
},
{
"code": "50",
"display": "Лица, награжденные знаком \"Жители блокадного Ленинграда\""
},
{
"code": "60",
"display": "Члены семей погибших инвалидов и участников ВОВ, ветеранов боевых действий"
},
{
"code": "61",
"display": "Члены семей погибших в ВОВ из числа л/с групп самозащиты объектов и команд ПВО, работников госпиталей Ленинграда"
},
{
"code": "62",
"display": "Члены семей погибших в/с, сотр. МВД, противопож. службы, погибших при исполнении обязанностей"
}...
问题是我只需要获取“显示”的所有值。但假设会出现不同格式的不同 json,因此需要提取某些值。只有密钥会被知道。
我试图做这样的事情:
public object ValueFromJSON(JObject json, string columnSourceName)
{
var v = json[columnSourceName].AsEnumerable();
}
那里columnSourceName有一个键叫display,但是什么也没有出来。把它扔进 eksepshn。如何通过key得到一个值数组?
如果您已经在使用
JToken,那么为什么不使用 LINQ?在你的例子中,这给了我:
对于您的 JSON,这可能并不重要,但一般来说,这样的过滤意味着过滤后的值不仅可以是字符串或数字等原始值,还可以是更重要的东西,例如数组或数组目的。这可以通过附加条件消除:
如果获得简单值而不是复合值对您很重要。感谢@sp7 在评论中指出这一点。
看一个递归遍历任意对象的所有属性的例子:
该代码将给定对象的所有属性的值显示到控制台。您只需要重做输出以按属性名称进行比较,如果相等,则将值存储在列表的某个线程中。
原来的