gpt4 book ai didi

JAVA:递归方法是检查 json 是否包含具有特定数据值的特定键的最佳方法吗?

转载 作者:行者123 更新时间:2023-12-01 10:34:17 25 4
gpt4 key购买 nike

我想测试我的 json 输入是否包含具有特定值的特定键。我使用 org.joson lib 来解析它并测试它。我采用了递归方法。这是最好的使用方法吗?或者有更简单的吗?

public boolean isJsonContains(String dataKey, String dataValue) {
logger.systemWriteOutput("is JSON data key "+ dataKey + " contains value: " +dataValue,3);
JSONObject jsonObject = null;

if (jsonInput!=null){
jsonObject = new JSONObject(jsonInput);
return isJSONObjectContainsKeyAndValue(dataKey, dataValue,jsonObject );
}
else{
return false;
}
}

private boolean isJSONObjectContainsKeyAndValue (String dataKey, String dataValue, JSONObject object){

String[] keys = JSONObject.getNames(object);
logger.systemWriteOutput("JSONObject is: "+object.toString(),3);

for (String key : keys)
{
boolean result = isJSONKeyContainsValue(key, dataValue, object);
if(result)
return true;
}
logger.systemWriteOutput("no value : "+ dataValue +" has been found for id: " +dataKey,3);
return false;
}

private boolean isJSONKeyContainsValue (String dataKey, String dataValue, JSONObject object){

Object value = object.get(dataKey);
if(dataKey.equals(dataKey) && value.toString().equals(dataValue)){
logger.systemWriteOutput("value of id: " +dataKey+" is: "+value.toString(),3);
return true;
}
else{
logger.systemWriteOutput("value of id: " +dataKey+" is: "+value.toString(),3);
//see if that the nested element contains the id
if (value instanceof JSONArray){
logger.systemWriteOutput("key array is: "+dataKey,3);
JSONArray jsonArray = (JSONArray) object.getJSONArray(dataKey);
logger.systemWriteOutput("key array lenbgth is: "+jsonArray.length(),3);
return isJSONArrayContainsKeyAndValue(dataKey,dataValue, jsonArray);
}
else if (value instanceof JSONObject){
return isJSONObjectContainsKeyAndValue(dataKey, dataValue, object.getJSONObject(dataKey));
}
}
return false;
}

private boolean isJSONArrayContainsKeyAndValue(String dataKey, String dataValue, JSONArray jsonArray) {
boolean result;

logger.systemWriteOutput("jsonArray is: "+jsonArray.toString(),3);
logger.systemWriteOutput("jsonArray length is: "+jsonArray.length(),3);

for (int i = 0; i < jsonArray.length(); i++) {

JSONObject jsonobject = jsonArray.getJSONObject(i);
result= isJSONObjectContainsKeyAndValue(dataKey, dataValue ,jsonobject);
if( result)
return result;
}
return false;
}

预先感谢您的帮助!

最佳答案

解析 JSON 的最佳方法是实际使用现有的库,例如 GSONJSON 。例如,您可以使用 has 方法 ( doc ) 来查找给定的键是否存在。

如果您确实想构建自己的系统,那么迭代方法将允许您向系统添加并行性。除此之外,这通常取决于问题和实现,哪个“更好”。检查这个lecture .

关于JAVA:递归方法是检查 json 是否包含具有特定数据值的特定键的最佳方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com