当前位置: 首页 > 知识库问答 >
问题:

Jackson将对象数组反序列化为数组列表

卫乐童
2023-03-14

我有以下JSON文件要反序列化

{
    "rows":
    [
        {
            "USER_ID": 001,
            "COMMISSION": 0,
            "SWAPS": -1.87,
            "PROFIT": -73.39,
            "COMMENT": "MAM|12345678|10020031"
        },
        {
            "USER_ID": 002,
            "COMMISSION": 0,
            "SWAPS": 0,
            "PROFIT": 12.23,
            "COMMENT": "PAMM|12345678|10229501"
        },
        {
            "USER_ID": 003,
            "COMMISSION": 0,
            "SWAPS": 0,
            "PROFIT": 396.77,
            "COMMENT": "PAMM|12345678|10229501"
        },      
...
]}
Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
        "rows"
})
@Generated("jsonschema2pojo")
public class Rows {

    @JsonProperty("rows")
    private ArrayList<Row> rows = null;

    @JsonProperty("rows")
    public ArrayList<Row> getRows() {
        return rows;
    }

    @JsonProperty("rows")
    public void setRows(ArrayList<Row> rows) {
        this.rows = rows;
    }


@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
        "USER_ID",
        "COMMISSION",
        "SWAPS",
        "PROFIT",
        "COMMENT"
})
@Generated("jsonschema2pojo")
public class Row {
    @JsonProperty("USER_ID")
    private int userId;
    @JsonProperty("COMMISSION")
    private float commission;
    @JsonProperty("SWAPS")
    private float swaps;
    @JsonProperty("PROFIT")
    private float profit;
    @JsonProperty("COMMENT")
    private String comment;

    @JsonProperty("USER_ID")
    public int getUserId() {
        return userId;
    }

    @JsonProperty("USER_ID")
    public void setUserId(int userId) {
        this.userId = userId;
    }

    @JsonProperty("COMMISSION")
    public float getCommission() {
        return commission;
    }
//..setter/getter continue..
 ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);


ArrayList<Rows> rowsArrayList = mapper.readValue(new File(ClientsRecordsPath), ArrayList.class);

            //json array to array object
            System.out.println("JSON array to Array objects...");
            System.out.println(rowsArrayList.get(0));
COMMENT=PAMM|123456|10314558}, {USER_ID=001, COMMISSION=0, SWAPS=0, PROFIT=13.57, COMMENT=PAMM|123456|10314558}, {USER_ID=002, COMMISSION=0, SWAPS=0, PROFIT=67.47, COMMENT=PAMM|123456|10314558}, {USER_ID=003, COMMISSION=0, SWAPS=0, PROFIT=202.41, COMMENT=PAMM|123456|10314558}, {USER_ID=004, COMMISSION=0, SWAPS=0, PROFIT=58.96, COMMENT=PAMM|123456|10314558}, {USER_ID=005, COMMISSION=0, SWAPS=0, PROFIT=6095, COMMENT=PAMM|123456|10314560}, {USER_ID=006, COMMISSION=0, ....

共有1个答案

卫华奥
2023-03-14

解析json文件的代码将是:

Rows rows = mapper.readValue(new File(ClientsRecordsPath), Rows.class);

由于json的根由Rows类表示,而不是ArrayList

 类似资料:
  • 我有一个回应 正文 下面是我要映射的coreV2Response类

  • 问题内容: 我有由第三方编码为固定长度数组的json’ed 元组数组: 我想使用json魔术来获取的实例列表 请帮助我放置适当的注释,以使ObjectMapper发挥作用。 我无法控制传入的格式,而我所有的google’n都以答案来回答如何将适当的json对象(而非数组)数组映射到对象列表 问题答案: 添加以下注释: 并且它应该根据需要序列化条目。 另外:然后使用它来强制执行特定顺序是最安全的,因

  • 我在使用spring反序列化json数组时遇到一个问题。我有来自服务的json响应: 我使用spring WebFlux的新WebClient获得了这个json,代码如下: AccountorDerList AccountOrder是一个映射字段的简单pojo。 实际上,当我点击get时,它说: 如何使用新的webflux模块正确反序列化json?我做错了什么? 更新05/02/2018 两个答案

  • 我正在尝试反序列化列表通量 我已经研究了这个问题,它涉及一系列对象。事实上,我已经能够使用他们的Mono解决方案方法来检索Mono 当我尝试使用Flux而不是Mono时会发生什么:我已经尝试过使用WebClient和Mign-两者的效果相同。单步执行Jackson代码,在处理Flux世界时它永远不会拉回TokenBuffers。这似乎与Codecs和Jackson JSON的Spring留档中的内

  • 问题内容: 在杰克逊的数据绑定的文档表明,杰克逊支持deserialising“所有支持类型的数组”,但我不能找出确切的语法这一点。 对于单个对象,我可以这样做: 现在,对于数组,我想这样做: 有人知道是否有不可思议的命令吗?如果没有,那么解决方案是什么? 问题答案: 首先创建一个映射器: 作为数组: 作为列表: 指定列表类型的另一种方法:

  • 我对班级结构有如下建议: @JsonTypeInfo(use=JsonTypeInfo.Id.NAME,include=JsonTypeInfo.As.PROPERTY,PROPERTY=“type”) 上面的类被序列化为json元素数组,但是当我反序列化它们时,我想要如下结构: 公共阶层结构{ 是否可以将testA、testB和testC类型的元素数组转换为FlatStructure类的属性?