JSONUtils.isNull返回false。但是JSON String中没有元素

时间:2014-01-03 19:17:47

标签: java json

我不知道我是否使用了错误的方法? 但是当我执行这行代码时:

JSONUtils.isNull(Score.JSON_SCORE_QUESTION)?null:json.getLong(Score.JSON_SCORE_QUESTION)
在那个json字符串上(其中Score.JSON_SCORE_QUESTION是关键字“qs”):

{"username":"Stefan","points":1295,"level":26,"scomment":"Wuhuuuu","uuid":"08c3a06c-ad9a-4ec0-aec9-4223517389d3","sid":11747,"rank":121,"sstempel":1388768015000,"model":"SCORE"}

isNull始终返回false

我需要另一种方法吗?

1 个答案:

答案 0 :(得分:0)

JSONUtils.isNull“测试obj是否是javaScript null(即JSONNull)”,但字符串(例如“qs”)在任何适用的上下文中都不为空。此函数用于处理,与属性无关。 (是静态的,无论如何都无法使用json对象中的数据!)

相反,JSONObject.has(key)(或containsKey)应该用于确定属性的存在:

Long score = json.has(Score.JSON_SCORE_QUESTION)
               ? json.getLong(Score.JSON_SCORE_QUESTION)
               : null; /* or use a long primitive and provide a default */

或者,以下可能有效(YMMV):

Long score = (Long)json.get(Score.JSON_SCORE_QUESTION);