首页 新闻 赞助 找找看

C# json解析时,得到JObject后怎么判断它的某一键值是否存在?

0
悬赏园豆:5 [已关闭问题] 关闭于 2013-01-29 12:57

假如json字符串:string str = "{\"err\":120,\"err-descr\":\"abcder\"}"

其中的err是可选项,也许str中不包含err这一键值对,所以得到得到str对应的Jobject后,怎么判断它的某一键值是否存在?

 

大神们  快帮忙吧!

adaan的主页 adaan | 初学一级 | 园豆:193
提问于:2013-01-24 09:29
< >
分享
所有回答(9)
-1

正则验证字符串是否有 err:xxx格式的数据

truename | 园豆:168 (初学一级) | 2013-01-24 09:43
0

当然在字典类中判断是否有 err 这个键。

Launcher | 园豆:45045 (高人七级) | 2013-01-24 09:43
0

是用js还是c#  js

先利用js(eval)反序列化 后 (不过不推荐eval)

if ("undefined" != typeof (josn['xxx'])) 

s_p | 园豆:138 (初学一级) | 2013-01-24 09:54

C# json       用的类库是using Newtonsoft.Json; 

typeof  是什么方法啊?你的josn是得到的那个JObject吧?

支持(0) 反对(0) adaan | 园豆:193 (初学一级) | 2013-01-24 09:57

@adaan: 我写的是js

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2013-01-24 09:58

@s_p: c#你反序列化后 可以得到对应的err err-descr的下表 你看他是不是为就可以了 利用vs调式 看下序列化后结果(即时窗口)

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2013-01-24 10:00

@s_p: string str = {

"name": "xueer",
"gender": 1,
"country": 1,
"language": 4,

}

其中AGE是可选项,如上的Json字符串中就没有,现在就要判断得到的JObject(现在是content)中是否有键值AGE,否则这样直接得到value值 int age  = (int)content[JsonKey.AGE];会报错,---》

引发了“System.ArgumentNullException”类型的异常
base {System.ArgumentException}: {"值不能为空。\r\n参数名: value"}

支持(0) 反对(0) adaan | 园豆:193 (初学一级) | 2013-01-24 10:09

@adaan: 

            tsp sp = new tsp() { err = "120", err_descr = "abcder" };
            JavaScriptSerializer josn = new JavaScriptSerializer();
            string str = josn.Serialize(sp);
            Type type = sp.GetType();
            tsp tsp = (tsp)josn.Deserialize(str, type);
            string value = (tsp.err==null)|| (tsp.err=="")?null:tsp.err;
            MessageBox.Show(value);

    public class tsp
    {
        public string err { get; set; }
        public string err_descr { get; set; }
    }

这就可以了

string value = (tsp.err==null)|| (tsp.err=="")?null:tsp.err; 这里写判断
支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2013-01-24 11:48
0

能不能考虑这样的。键存在,键值可以不存在

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-24 10:57
0

淘@淘 | 园豆:602 (小虾三级) | 2013-01-25 14:24
0

判断

adaan | 园豆:193 (初学一级) | 2013-01-27 22:12
0

jo.Property("key") == null || jo.Property("key").ToString() == ""

此时key不存在

地球小星星 | 园豆:202 (菜鸟二级) | 2013-06-21 10:02
0

方法

maziran | 园豆:194 (初学一级) | 2013-07-29 10:33
0
bool hasErr = jo.Properties().Any(p => p.Name == "err")
飘的移 | 园豆:204 (菜鸟二级) | 2013-09-05 13:02
bool hasErr = (jo.Property("err") != null));
支持(0) 反对(0) 飘的移 | 园豆:204 (菜鸟二级) | 2013-09-05 13:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册