gpt4 book ai didi

java - 将 JSONArray 转换为 List
转载 作者:塔克拉玛干 更新时间:2023-11-03 03:01:40 26 4
gpt4 key购买 nike

我正在尝试将 JSONArray 反序列化为列表。为此,我正在尝试使用 Gson,但我不明白为什么不起作用,而且 JSON 的所有值都为空。

我该怎么做?

JSON

{ "result" : [ 
{ "Noticia" : {
"created" : "2015-08-20 19:58:49",
"descricao" : "tttttt",
"id" : "19",
"image" : null,
"titulo" : "ddddd",
"usuario" : "FERNANDO PAIVA"
} },
{ "Noticia" : {
"created" : "2015-08-20 19:59:57",
"descricao" : "hhhhhhhh",
"id" : "20",
"image" : "logo.png",
"titulo" : "TITULO DA NOTICIA",
"usuario" : "FERNANDO PAIVA"
} }
] }

反序列化

List<Noticia> lista = new ArrayList<Noticia>();
Gson gson = new Gson();
JSONArray array = obj.getJSONArray("result");

Type listType = new TypeToken<List<Noticia>>() {}.getType();
lista = gson.fromJson(array.toString(), listType);

//testing - size = 2 but value Titulo is null
Log.i("LISTSIZE->", lista.size() +"");
for(Noticia n:lista){
Log.i("TITULO", n.getTitulo());
}

类(class)公告

public class Noticia implements Serializable {
private static final long serialVersionUID = 1L;

private Integer id;
private String titulo;
private String descricao;
private String usuario;
private Date created;
private String image;

最佳答案

你的代码有两个问题:

  1. 首先是您使用的是 getJsonArray()获取数组,这不是 Gson 库的一部分,您需要使用<强> getAsJsonArray() 方法。
  2. 其次,您正在使用 array.toString()这不明显因为对于 fromJson方法你需要一个 jsonArray作为参数而不是 String这会导致您解析问题,只需将其删除即可。

并使用以下代码转换您的 jsonArrayList<Noticia> :

Type type = new TypeToken<List<Noticia>>() {}.getType();
List<Noticia> lista = gson.fromJson(array, type);

你的整个代码将是:

Gson gson = new Gson();
JSONArray array = obj.getAsJsonArray("result");

Type type = new TypeToken<List<Noticia>>() {}.getType();
List<Noticia> lista = gson.fromJson(array, type);

//testing - size = 2 but value Titulo is null
Log.i("LISTSIZE->", lista.size() +"");
for(Noticia n:lista){
Log.i("TITULO", n.getTitulo());
}

关于java - 将 JSONArray 转换为 List<Object>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32133655/

26 4 0