使用c# - 我有一个有效的json字符串,并试图将其解析为一个字典,但我正在努力解决这个问题。
以下是我要解析的数据示例:
{
"data": {
"KeyOne": {
"val": "first!"
"fooBar": "invalid data not needed",
},
"anotherKey": {
"val": null
},
"TheThirdKey": {
"val": 999
"fooFooBarBar": "more unneeded data",
},
"KeyKeyKey": {
"val": "super neato something"
},
...
这需要转移到具有一些相当具体规则的Dictionary<string, object>
:
val
&#39; (&#39; first&#39;,null,999,...)所以我的最后一本字典应该是这样的:
"KeyOne" : "first!"
"anotherKey" : null
"TheThirdKey": 999
"KeyKeyKey" : "super neato something"
我尝试使用
的不同变体解析此问题JsonConvert.DeserializeObject<Dictionary<string, object>
我也试过迭代jTokens:
JObject jObject = JObject.Parse(jsonString);
List<JToken> jTokens = jObject["data"].Children().ToList();
foreach (JToken jToken in jTokens) { ...
但经过这么多个小时的尝试后,我无处可尴尬......希望这可以用Json.NET执行,但我还没弄明白。
思想?
答案 0 :(得分:2)
你可以这样做:
JObject jObject = JObject.Parse(jsonString);
var dataChildren = jObject["data"].Children().Cast<JProperty>();
Dictionary<string, object> result = dataChildren
.ToDictionary(x => x.Name, x => x.Value["val"].Value<JValue>().Value);
结果会得到Dictionary<string,object>