异常信息:JsonMappingException: out of START_ARRAY token

JsonMappingException: out of START_ARRAY token

解决方法:

Json

[
  {
    "id": 4,
    "dmNum": "111102",
    "number": "683272",
    "parentNum": "0",
    "type": "1",
    "name": "大圣",
    "code": "213134",
    "mDefault": "37",
    "description": "请问",
    "isDel": "0",
    "opFlag": "A",
    "createdBy": "创建人",
    "createdTime": "2020-10-15T05:20:17.000+0000",
    "updatedBy": "删除者",
    "updatedTime": "2020-10-15T05:28:18.000+0000",
    "children": null,
    "parentName": null
  },
  {
    "id": 5,
    "dmNum": "111102",
    "number": "68327201",
    "parentNum": "683272",
    "type": "0",
    "name": "温度数据",
    "code": "213135",
    "mDefault": "95",
    "description": "不知道这是什么",
    "isDel": "0",
    "opFlag": "A",
    "createdBy": "创建人",
    "createdTime": "2020-10-15T05:20:18.000+0000",
    "updatedBy": "删除者",
    "updatedTime": "2020-10-15T05:27:33.000+0000",
    "children": null,
    "parentName": null
  }
]

创建 ObjectMapper

    public static ObjectMapper mapper = new ObjectMapper();

    static {
        // 转换为格式化的json
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
        // 如果json中有新增的字段并且是实体类类中不存在的,不报错
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        //修改日期格式
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

Java代码:

String s1 = httpAPIService
                    .doGet("http://192.168.0.25:8888/modeloutput/selectOutputByModelId?mid=" + mid);
            ModelOutput[] modelOutput =  mapper.readValue(s1, ModelOutput[].class);//输出表对象
            for (ModelOutput output : modelOutput) {
                //赋值:元数据编号
                deviceOutput.setMetaNum(output.getNumber());
                //赋值;数据编码
                deviceOutput.setCode(output.getOutputCode());
                deviceOutputMapper.save(deviceOutput);
                System.out.println(deviceOutput);
            }

这串json数据最外层是[ ],代表为对象数组,因为Jackson object mapper在把返回的json片段转换成对象时。

转换成数组对象

ModelOutput[] modelOutput =  mapper.readValue(s1, ModelOutput[].class);

遍历该数组中的数据。转换成Java对象。
idea快捷键:iter

for (ModelOutput output : modelOutput) {
                //赋值:元数据编号
                deviceOutput.setMetaNum(output.getNumber());
                //赋值;数据编码
                deviceOutput.setCode(output.getOutputCode());
                deviceOutputMapper.save(deviceOutput);
                System.out.println(deviceOutput);
            }

问题解决。

编写实属不易,若喜欢或者对你有帮助记得点赞+评论+收藏

你可能感兴趣的:(笔记,java,json)