java जावा में जीएसओएन या किसी अन्य JSON लाइब्रेरी का उपयोग कर सूची को deserialize कैसे करें?




gson (4)

@DevNG द्वारा प्रदान किए गए उत्तर का उपयोग करके सावधान रहें। Arrays.asList () ArrayList के आंतरिक कार्यान्वयन को लौटाता है जो कुछ उपयोगी विधियों को लागू नहीं करता है जैसे कि (), हटाएं (), आदि। यदि आप उन्हें एक असमर्थित ऑपरेशन अपवाद कहते हैं तो फेंक दिया जाएगा। वास्तविक ArrayList उदाहरण प्राप्त करने के लिए आपको इस तरह कुछ लिखना होगा:

List<Video> = new ArrayList<>(Arrays.asList(videoArray));

मैं जीएई पर अपने सर्वलेट में एक सूची क्रमबद्ध कर सकता हूं, लेकिन मैं इसे deserialize नहीं कर सकता। मैं क्या गलत कर रहा हूं?

यह जीएई में मेरा वर्ग वीडियो है, जो धारावाहिक है:

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;

 /**
  * @param id
  * @param titulo
  * @param descricao
  * @param 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;
 }

}

यह मेरे अन्य एप्लिकेशन में मेरा क्लास वीडियो है, जहां मैं deserialize करने की कोशिश करता हूं:

package classes;

import java.util.Date;

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

 /**
  * @param id
  * @param titulo
  * @param descricao
  * @param 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;
 }

}

जैक्सन जेएसओएन जावा पार्सर बहुत लोकप्रिय है और वसंत ढांचे में उपयोग किया जाता है

import java.io.IOException;
import java.io.StringWriter;
import java.util.List;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public static <T> T jsonStringToObjectArray(String jsonString, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException {
        T obj = null;
        ObjectMapper mapper = new ObjectMapper();
        mapper = new ObjectMapper().configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
        obj = mapper.readValue(jsonString, mapper.getTypeFactory().constructCollectionType(List.class, clazz));
        return obj;
    }

जीसन के साथ, आपको बस कुछ ऐसा करने की आवश्यकता होगी:

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

आपको उस Video क्लास पर नो-एर्ग कन्स्ट्रक्टर भी प्रदान करने की आवश्यकता हो सकती है, जिसे आप deserializing कर रहे हैं।






gson