gpt4 book ai didi

java - 使用 Java/Jackson 库从 JSON 反序列化二维数组会抛出异常

转载 作者:行者123 更新时间:2023-11-30 10:25:38 24 4
gpt4 key购买 nike

我想使用以下 JSON 和 pojo 将二维字符串数组反序列化为 String[][] 字段。

Pojo 代码

public class DataProcess {

public enum Command {INSERT, UPDATE, DELETE}
private Command command;
private String table;
private String[] columns;
private String[][] values;

public String[] getColumns() {return columns;}
public void setColumns(String[] columns) {this.columns = columns;}
public String[][] getValues() {return values;}
public void setValues(String[][] values) {this.values = values;}
public Command getCommand() {return command;}
public void setCommand(Command command) {this.command = command;}
public String getTable() {return table;}
public void setTable(String table) {this.table = table;}
}

JSON 反序列化

...

"preTestData": [{
"columns": ["tracking_id"],
"values": [["AAAAAAA"]],
"command": "DELETE",
"table": "my_table"
}],

...

当我运行反序列化代码时,出现以下异常

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize         
instance of java.lang.String[][] out of START_OBJECT token
at [Source: {
"name": "Basic create shipment request",
"preTestData": [{
"columns": ["tracking_id"],
"values": [["AAAAAAA"]],
"command": "DELETE",
"table": "my_table"
}],

为了进一步调查,我编写了反向序列化代码并打印出生成的 JSON。

这是输出:

...
"preTestData": [{
"columns": ["tracking_id"],
"values": [["AAAAAAA"]],
"command": "DELETE",
"table": "my_table"
}],
...

看起来相同 - 但无论如何我将该 JSON 输出粘贴到我的 JSON 的有问题的部分以进行反序列化。

我得到了完全相同的错误。

有谁知道为什么会出现这个错误或如何解决这个问题?

最佳答案

我不确定为什么抛出异常。正如您所说 - 反向操作产生完全相同的 JSON。

不过,我确实有一个变通解决方案,虽然有点笨拙,但可以让您继续前进。

我的解决方法是替换 String[][]输入 Object .

private Command command;
private String table;
private String[] columns;
private Object values; // was String[][]

运行反序列化代码,您将看到 Jackson 库表示类型为 List<List<String>> 的二维数组。 .所以只需要一个类型转换,然后您就可以访问所有元素。

List<List<String>> values = (List<List<String>>) object.getValues();

我确实尝试使用 List<List<String>>直接替换String[][]在目标对象中,但引发了类似的异常。

关于java - 使用 Java/Jackson 库从 JSON 反序列化二维数组会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46077398/

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