【发布时间】:2020-01-17 05:08:36
【问题描述】:
收到此错误:
嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:直接 自引用导致循环(通过引用链: com.google.gson.JsonObject["asJsonObject"])
尝试这样做时:
restTemplate.postForObject(url_final, convertedObject, Object[].class);
其中convertedObject 是JSONObject,urlfinal 是String 网址。
有效载荷是:
"data" : [
{"FILENAME":"EEC1.TXT",
"ERRORDESCRIPTION":"FTD-07-INVALID CHARACTER FOUND IN THE FILE.",
"LINENO":3},
{"FILENAME":"SEC1.TXT",
"ERRORDESCRIPTION":"26-FTD-07-INVALID CHARACTER FOUND IN THE FILE.",
"LINENO":447}]
我的代码:
JSONObject output = new JSONObject(payload);
JSONArray jsonArray = output.getJSONArray("data");
JSONObject objects = jsonArray.getJSONObject(0);
String fileName = objects.getString("FILENAME");
int lineNumber = objects.getInt("LINENO");
String errordesc = objects.getString("ERRORDESCRIPTION");
String tempor = "{\"activityType\": \"trial.start\",\"aFileName\":\""
+ fileName
+ "\",\"aLINENO\": \""
+ lineNumber
+ "\",\"aREFNO\": \""
+ TxnNo
+ "\", \"aERRORDESCRIPTION\": \""+errordesc+"\"}";
JsonObject convertedObject = new Gson().fromJson(tempor, JsonObject.class);
restTemplate.postForObject(url_final, convertedObject, Object[].class);
【问题讨论】:
-
你累的可以在这里添加代码sn-p吗
-
@DulajKulathunga :已添加。您现在可以查看吗?
-
请包括完整的堆栈跟踪,而不仅仅是消息。
-
异常消息和您的代码不相加。异常表明您正在使用 Jackson (
com.fasterxml.jackson...) 而您的代码正在使用 Gson (new Gson())。你为什么要把两者混在一起?一般来说,您不应该将通用的JsonObject传递给不了解这些实现的解析器/格式化程序 - 而且 Jackson 和 Gson 不会知道彼此的类。 -
为什么要手动创建 JSON,然后首先对其进行解析和重新序列化?你为什么不使用适当的 pojo 或至少一个然后被序列化的地图?
标签: java json jackson gson resttemplate