首页 > 解决方案 > 改造响应数组或对象

问题描述

在第一种情况下,当它返回 success 时true,一切正常,当它获得成功 boolean 时的问题是false,然后是错误:

如何改造响应数组或对象。

Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 26 path $ .data

可以用一个响应类来完成吗?

json响应:

{
  "success": true,
  "data": {
    "message": "User created",
  }
}

json响应:

{
  "success": false,
  "data": [
    {
      "code": "existing_user_login",
      "message": "User Exist !"
    }
  ]
}

代码:

public class Response {
    public Boolean success;
    public Data data;

    public Boolean isSuccess() { return success; }

    public Data getData() {
        return data;
    }

    public class Data {
        public String code;
        public String message;
        public String getMessage() { return message; }
        public String getCode() { return code; }
    }
}

标签: javaandroidjsonjsonresponse

解决方案


使用ObjectMapper您可以通过配置反序列化功能来做到这一点,如下所示:

// import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper objMapper = new ObjectMapper();
// this is to accept single element as array
objMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
// this is to handle if any property is missing
objMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Response resp = objMapper.readValue(jsonString, Response.class);

推荐阅读