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;
}
复制代码

回答

看了下问题描述,感觉有点读不懂,直接反序列化后取值不就行了?

以上是C#怎么不用递归获取 json 路径及路径上的值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>