gpt4 book ai didi

java - 尝试使用 net minidev json 更新 json 数组但出现转换错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:33 25 4
gpt4 key购买 nike

我正在尝试从由 LinkedHashMap 组成的 jsonArray 中删除或更新一些字段。我已经查找了如何更新 LinkedHashMap 并且 put(key,value) 是标准过程,但是当尝试时,我得到 java.lang.Integer 无法转换为 java.util.LinkedHashMap 错误。

我的代码如下:

public static JSONArray updateJsonFields(JSONArray json, LinkedHashMap fieldMap) {
JSONArray updatedJson = new JSONArray();
int sizeJson = json.size();
for(int i = 0 ; i < sizeJson ; i++) {
((LinkedHashMap) json.get(i)).forEach((key, value) -> {
if(key.equals("responseHeaders")) {
((LinkedHashMap) value).forEach((fieldKey, fieldValue ) -> {
if(fieldKey.equals("Date")){
((LinkedHashMap) fieldValue).put("Date", fieldMap.get("Date"));
} else if( fieldKey.equals("TransID") ) {
((LinkedHashMap) fieldValue).put("TransID", fieldMap.get("TransID"));
}
});
} else if (key.equals("requestTimeStamp")) {
((LinkedHashMap) value).put("requestTimeStamp", fieldMap.get("requestTimeStamp"));
} else if (key.equals("responseTime")) {
((LinkedHashMap) value).remove("responseTime");
}
});
}
return updatedJson;
}

同样令人困惑的是,remove 方法返回相同的错误。我没有合作过到目前为止,Java 中的 LinkedHashMaps 所以我不确定我需要做什么。我已经找了大约两天了,似乎找不到我需要的答案。

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

在 Java 中执行 JSON 转换时存在一些已知的奇怪现象,请阅读以下内容:https://github.com/intuit/karate/issues/787

因此,我强烈建议在这种情况下直接在 Karate 中进行 JSON 操作。

更新和删除非常简单。以下是示例:

* def temp = { foo: 'bar' }
* temp.foo = 'hello'
* match temp == { foo: 'hello' }
* temp.bar = 'world'
* match temp == { foo: 'hello', bar: 'world' }

# * remove temp.foo
* karate.remove('temp', '$.foo')
* match temp == { bar: 'world' }

关于java - 尝试使用 net minidev json 更新 json 数组但出现转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60494151/

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