Gson.toJsonTree(intValue) 在尝试传递整数参数值时引发空指针异常



我们正在使用 Rest Assured 自动执行 rest API。在此过程中,尝试创建一个可重用的方法,以传递具有不同值的不同 JSON 节点。

创建的中间变量:

Integer amt = 50;

创建方法:

public void replaceValues_gson(String mainNode, String childNode, Integer amt) {        

if(amt != null){
jsonObjectNew.getAsJsonObject("mainNode").add("childNode", gson.toJsonTree(amt));
} 
//here 'amt' throws an error as java.lang.NullPointerException; Also the amt it shows as 9 assigned to variable amt in the debugger where as it supposed to assign 50 value
}

调用上述方法为:

replaceValues_gson("bInfo", "bEx", amt );

上述请求的 JSON 有效负载为:

{
"bInfo":{
"bEx":9, 
"oriDate":"2020-07-08"    
}
} 

获取"amt"变量和请求 JSON 有效负载值的 NullPointerException 正在分配,而不是分配 50 的整数 amt 值。

如果直接尝试如下,它可以工作:

jsonObjectNew.getAsJsonObject("bInfo").add("bEx", gson.toJsonTree(amt));

这里 amt 变量值正确为 50,但在尝试创建可重用方法时会抛出错误。

请指导。

您可以使用以下方法。但它不支持需要更新的值在 json 数组内。

public void replaceValues_gson(JsonObject jsonObjectNew, String[] keyArray, Object updatingValue) {
Gson gson = new Gson();
JsonObject jsonObject = jsonObjectNew;
for (int i = 0; i < keyArray.length - 1; i++) {
jsonObject = jsonObject.getAsJsonObject(keyArray[i]);
}
jsonObject.add(keyArray[keyArray.length - 1], gson.toJsonTree(updatingValue));
System.out.println(jsonObjectNew.toString());
}

这里;

jsonObjectNew- 从初始 json 请求转换的 JsonObject。

keyArray- 根目录(按确切顺序(的 json 节点名称的字符串数组,包括需要更新的键

updatingValue- 将更新的值

例如:-

String[] keyArray = {"bInfo", "bEx"};
replaceValues_gson(jsonObjectNew, keyArray, 50);

相关内容

  • 没有找到相关文章

最新更新