杰克逊,在 List<> 处获得空返回

Posted

技术标签:

【中文标题】杰克逊,在 List<> 处获得空返回【英文标题】:Jackson, getting null return at List<> 【发布时间】:2017-11-30 13:32:17 【问题描述】:

我不明白为什么返回null

有 2 节课需要 Jackson 和 String Volley 请求

StringRequest request = new StringRequest(Request.Method.GET,regions, new Response.Listener<String>() 
        @Override
        public void onResponse(String response) 
            Log.d(TAG,"response"+ response);
            try 
                ObjectMapper mapper=new ObjectMapper();
                Pojo pojo=mapper.readValue(response,Pojo.class);
                System.out.println(pojo.toString());
            catch (IOException e) 
                e.printStackTrace();
            

json


  "success": true,
  "data": [
    
        "id": "1",
        "name": "RegionABC"
    ,
    
        "id": "2",
        "name": "RegionDEF"
    ,
  ]

它由 2 个类解析:

Pojo

public class Pojo 
public Pojo()
private boolean success;
private List<Pojo> data;

@JsonProperty("data")
public List<Pojo> getDataPojo() 
    return data;


public void setDataPojo(List<Pojo> data) 
    this.data = data;


// getters & setters
@JsonProperty("success")
public boolean isSuccessPojo() 
    return success;


public void setSuccessPojo(boolean success) 
    this.success = success;

@Override
public String toString() 
    return "data "+data;

DataPojo

public class DataPojo 
private String id, name;

public String getIdDataPojo() 
    return id;


public void setIdDataPojo(String id) 
    this.id = id;


public String getNameDataPojo() 
    return name;


public void setNameDataPojo(String name) 
    this.name = name;

我在哪里输入了错误的代码?它仅适用于简单字符串,但适用于 List&lt;&gt; - 否。

【问题讨论】:

【参考方案1】:

在您的代码中找到这部分:

@JsonProperty("data")
public List<Pojo> getDataPojo() 
    return data;

public void setDataPojo(List<Pojo> data) 
    this.data = data;

并用以下代码替换:

@JsonProperty("data")
public List<DataPojo> getDataPojo() 
    return data;

public void setDataPojo(List<DataPojo> data) 
    this.data = data;

【讨论】:

以上是关于杰克逊,在 List<> 处获得空返回的主要内容,如果未能解决你的问题,请参考以下文章

函数返回空列表而不是 List<String> [重复]

Java返回空列表而不是对象

Java - 使用杰克逊将 json 转换为复杂对象

从 Java 8 映射操作返回空元素

GetAsync 请求返回空内容

杰克逊在通用列表中读取 json