Miré el Gson de Google como un posible complemento JSON. ¿Alguien puede ofrecer alguna forma de orientación sobre cómo puedo generar Java a partir de esta cadena JSON?
Google Gson admite genéricos y beans anidados. El []
en JSON representa una matriz y debe correlacionarse con una colección de Java como List
o simplemente una matriz de Java simple. El {}
en JSON representa un objeto y debe mapearse a una Map
clase Java o solo a alguna clase JavaBean.
Tiene un objeto JSON con varias propiedades cuya groups
propiedad representa una matriz de objetos anidados del mismo tipo. Esto se puede analizar con Gson de la siguiente manera:
package com.stackoverflow.q1688099;
import java.util.List;
import com.google.gson.Gson;
public class Test {
public static void main(String... args) throws Exception {
String json =
"{"
+ "'title': 'Computing and Information systems',"
+ "'id' : 1,"
+ "'children' : 'true',"
+ "'groups' : [{"
+ "'title' : 'Level one CIS',"
+ "'id' : 2,"
+ "'children' : 'true',"
+ "'groups' : [{"
+ "'title' : 'Intro To Computing and Internet',"
+ "'id' : 3,"
+ "'children': 'false',"
+ "'groups':[]"
+ "}]"
+ "}]"
+ "}";
// Now do the magic.
Data data = new Gson().fromJson(json, Data.class);
// Show it.
System.out.println(data);
}
}
class Data {
private String title;
private Long id;
private Boolean children;
private List<Data> groups;
public String getTitle() { return title; }
public Long getId() { return id; }
public Boolean getChildren() { return children; }
public List<Data> getGroups() { return groups; }
public void setTitle(String title) { this.title = title; }
public void setId(Long id) { this.id = id; }
public void setChildren(Boolean children) { this.children = children; }
public void setGroups(List<Data> groups) { this.groups = groups; }
public String toString() {
return String.format("title:%s,id:%d,children:%s,groups:%s", title, id, children, groups);
}
}
Bastante simple, ¿no es así? Solo tenga un JavaBean adecuado y llame Gson#fromJson()
.
Ver también: