key值不确定json串的解析 C#
最近碰到一个解析key不确定的json的需求,http协议传过来的直接是一个大json,里面有若干个字段的key值都是可变的,无法直接使用定义对象的方式进行解析,协议是第三方厂家给的,没办法,只能硬着头皮解,搞了一晚上终于搞懂了,其实并不难,以往解常规json是直接用jsonconvert.deseraialobject<泛型对象>(jsonstring)就能直接出想要的对象,如果碰到key不确定这种,用Dictionary<string,classXXX>代替原来的泛型对象,在string里存的是不确定的key值,classXXX这个类用来存这个key对应的value,如果这个不确定的key在json内层的话,就先用JObject.Parse(data_jsonObj[“外层key”].ToString())这种方式获得内层的不确定key,这种情况其实最重要的是对协议内容的理解,json串很大的时候不一定所有东西都用得上,搞懂自己需要哪些信息。不要做太多无用功。
话不多说,直接上代码。
“devices_info”: {
“777777”: {
“frequency”: 5.8,
“gps”: {
“lat”: 49.2398488173378,
“lng”: -122.65134998807083
},
tatus": “decrypting”,
“switch_for_whitelist”: true,
“type”: “drone”
},
“666666”:{
“frequency”: 5.8,
“gps”: {
“lat”: 49.2398488173378,
“lng”: -122.65134998807083
},
tatus": “decrypting”,
“switch_for_whitelist”: true,
“type”: “drone”
}
}
var targetInfovar = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string, TargetInfo>>(targets_json);//TargetInfo为目标类,运行后dictionary里有两个keyvalue对,遍历他们取value即可在key不确定时获取每一个目标的详细信息。