假如json字符串:string str = "{\"err\":120,\"err-descr\":\"abcder\"}"
其中的err是可选项,也许str中不包含err这一键值对,所以得到得到str对应的Jobject后,怎么判断它的某一键值是否存在?
大神们 快帮忙吧!
正则验证字符串是否有 err:xxx格式的数据
当然在字典类中判断是否有 err 这个键。
是用js还是c# js
先利用js(eval)反序列化 后 (不过不推荐eval)
if ("undefined" != typeof (josn['xxx']))
C# json 用的类库是using Newtonsoft.Json;
typeof 是什么方法啊?你的josn是得到的那个JObject吧?
@adaan: 我写的是js
@s_p: c#你反序列化后 可以得到对应的err err-descr的下表 你看他是不是为就可以了 利用vs调式 看下序列化后结果(即时窗口)
@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"}
@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; 这里写判断
能不能考虑这样的。键存在,键值可以不存在
顶
判断
jo.Property("key") == null || jo.Property("key").ToString() == ""
此时key不存在
方法
bool hasErr = jo.Properties().Any(p => p.Name == "err")
bool hasErr = (jo.Property("err") != null));