C#怎么不用递归获取 json 路径及路径上的值
{
"room": {
"GJAerialView": "产业园基地",
"L02Room": "显示器组装车间",
"MRoom": "MI车间",
"SMTRoom": "SMT车间",
"SL03Room": "多功能产品组装车间",
"unknown": "未配置的车间"
},
"room1": {
"GJAerialView1": "产业园基地1",
"L02Room1": "显示器组装车间1"
}........
}
json文件 片段如上
我们如何通过传入到后台的key(如提供第一个参数 room.GJAerialView 则程序返回 “产业园基地”,room1. L02Room1 返回 "显示器组装车间1")
记住 不用递归
//第一个方法片段代码如下 (length 是传入key根据 ‘.’来分割的数组的长度)
//arrKey 是传入key 根据‘.’来分割的数组
object value_zh_cn = null;
object value_en = null;
//最终要返回的中英文字符串
string str_zh_cn = "";
string str_en = "";
for (int i = 0; i < length; i++)
{
//如果是第一层 ,那么根据顶级key获取上面读取出来的json字符串
if (i == 0)
{
value_zh_cn = GetJsonStringOrValue(str_zh_cn_json, arrKey[i]);
value_en = GetJsonStringOrValue(str_en_json, arrKey[i]);
}
else//如果非第一层 ,那么根据子级key获取上面读取出来的json字符串或者值
{
value_zh_cn = GetJsonStringOrValue(value_zh_cn as string, arrKey[i]);
value_en = GetJsonStringOrValue(value_en as string, arrKey[i]);
}
}
str_zh_cn = (string)value_zh_cn;
str_en = (string)value_en;
public static object GetJsonStringOrValue(string input_json, string key) { if (String.IsNullOrEmpty(input_json) || String.IsNullOrEmpty(key)) return string.Empty; input_json = input_json.Replace("\r\n", string.Empty); JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary<string, object> json = serializer.DeserializeObject(input_json) as Dictionary<string, object>; //这里 经理说object可以直接取到路径上的key object value; json.TryGetValue(key, out value); value = serializer.Serialize(value); return value; }
回答
看了下问题描述,感觉有点读不懂,直接反序列化后取值不就行了?