当前位置: 首页 > 面试题库 >

如何使用GSON或Java中的另一个JSON库反序列化列表?

霍书
2023-03-14
问题内容

我可以List<Video>在GAE的servlet中序列化一个,但不能反序列化它。我究竟做错了什么?

这是我在GAE中的视频课程,该课程已序列化:

package legiontube;

import java.util.Date;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Video {

    @PrimaryKey
    private String id;

    @Persistent
    private String titulo;

    @Persistent
    private String descricao;

    @Persistent
    private Date date;

    public Video(){};

 public Video(String id, String titulo, String descricao, Date date) {
  //super();
  this.id = id;
  this.titulo = titulo;
  this.descricao = descricao;
  this.date = date;
 }

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getTitulo() {
  return titulo;
 }

 public void setTitulo(String titulo) {
  this.titulo = titulo;
 }

 public String getDescricao() {
  return descricao;
 }

 public void setDescricao(String descricao) {
  this.descricao = descricao;
 }

 public Date getDate() {
  return date;
 }

 public void setDate(Date date) {
  this.date = date;
 }

}

这是我在其他应用程序中尝试反序列化的类Video。

package classes;

import java.util.Date;

public class Video {
 private String id;
 private String titulo;
 private String descricao;
 private Date date;

 public Video(String id, String titulo, String descricao, Date date) {
  //super();
  this.id = id;
  this.titulo = titulo;
  this.descricao = descricao;
  this.date = date;
 }

 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getTitulo() {
  return titulo;
 }
 public void setTitulo(String titulo) {
  this.titulo = titulo;
 }
 public String getDescricao() {
  return descricao;
 }
 public void setDescricao(String descricao) {
  this.descricao = descricao;
 }
 public Date getDate() {
  return date;
 }
 public void setDate(Date date) {
  this.date = date;
 }

}

问题答案:

使用Gson,您只需要执行以下操作:

List<Video> videos = gson.fromJson(json, new TypeToken<List<Video>>(){}.getType());

您可能还需要在Video要反序列化的类上提供no-arg构造函数。



 类似资料:
  • 当我试图使用Gson库反序列化JSON对象数组时,我遇到了一个问题。 JSON数组的一个示例: 你怎么认为?反序列化这种JSON响应的正确Java代码是什么?

  • 问题内容: 我在尝试使用Gson库反序列化对象的JSON数组时遇到问题。 JSON数组的示例: 你怎么看?反序列化此类JSON响应的正确Java代码是什么? 问题答案: 要反序列化JSONArray,您需要使用TypeToken。您可以从GSON用户指南中了解更多信息。示例代码: 如果您有JSONArray,则可以使用

  • 问题内容: 我在反序列化以下json数组时遇到麻烦(对不起,大小): 如果将其粘贴到json-viewer中,则会得到以下结构: 现在,包含具有坐标的数组的数组具有可变大小。所以我想在Java中,整个对象应该是一个数组,其中包含数组的集合,每个数组都包含一个。就像是 但是gson不接受这一点。我收到以下错误消息: 这似乎很奇怪,因为对我来说好像不像一个数组。但这可能使我感到困惑,或多或少地迷路了…

  • 我正在使用Gson库反序列化嵌套响应Json并将其转换为Java对象:... new Gson(). fromJson(响应AsString,template.class); 有一个“列表” 所有其他部分工作正常,如请求部分等(My Json有效等)。 感谢您的时间:)

  • 我需要序列化/反序列化特定枚举: 我有个例外: 我如何通过GSON序列化/反序列化它?

  • 问题内容: 简而言之,这是我想在JAVA中解析的JSON对象的草图: 这些是我为解析而创建的 POJO (为简洁起见,我将省略这些语句): (1)完整的JSON对象的表示形式 (2)嵌套对象的表示: (3)项目的表示: 现在,创建一个Gson实例(用于导入), 每当我尝试访问可解析对象时(例如通过),都会收到一个。但是,Gson 确实 创建了我指定的类的对象,并且 不会 引发任何后续错误。 我知道