在进行单元测试时,我注意到在运行unittests时调用JSONObject.getNumber()时会出现一些扼杀行为。这是错误:
java.lang.NoSuchMethodError: 'java.lang.Number org.json.JSONObject.getNumber(java.lang.String)
这是代码:
Number logId;
logId = jsonObject.getNumber("logId");
对于我自己的实现,我可以使用以下代码:
logId = jsonObject.getInt("logId");
但是我真的很想知道当尝试使用JSONObject.getNumber()进行单元测试时缺少什么。为什么缺少getNumber()方法?
编辑2019-12-20 13:59
我正在使用maven groupID'org.json',artifactId'json',版本'20190722'。我将
.getNumber()
称为定制的new JSONObject().put(stuff).put(stuff)
最佳答案
请检查您的json版本。我能够在以下版本中找到jsonObject.getNumber():'20180813'
这是gradle依赖项供您参考
compile group: 'org.json', name: 'json', version: '20180813'
这是在那个jar中找到的实现类
/**
* Get the Number value associated with a key.
*
* @param key
* A key string.
* @return The numeric value.
* @throws JSONException
* if the key is not found or if the value is not a Number
* object and cannot be converted to a number.
*/
public Number getNumber(String key) throws JSONException {
Object object = this.get(key);
try {
if (object instanceof Number) {
return (Number)object;
}
return stringToNumber(object.toString());
} catch (Exception e) {
throw new JSONException("JSONObject[" + quote(key)
+ "] is not a number.", e);
}
}