http://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-asl
http://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl
Para transformar objetos comuns Java em JSON, basta fazer:
import java.io.PrintWriter;
import java.io.StringWriter;
import org.codehaus.jackson.map.ObjectMapper;
public static String toJson(Object obj) throws Exception {
ObjectMapper mapper = new ObjectMapper();
StringWriter jsonValue = new StringWriter();
mapper.writeValue(new PrintWriter(jsonValue), obj);
return jsonValue.toString();
}
Para transformar um objeto representado em JSON para um objeto em java, basta fazer:
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.MappingJsonFactory;
public static Object fromJson(String json, Class objectClass) throws Exception {
JsonFactory f = new MappingJsonFactory();
JsonParser jp = f.createJsonParser(json);
Object obj = jp.readValueAs(objectClass);
return obj;
}
Criando uma classe Pagina, teríamos o seguinte:
public class Pagina {
private Long id;
private int numero;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String toString() {
return "Pagina [" id=" + id + " ,numero=" + numero + "]";
}
}
A representação de um objeto Pagina poderia ser:
{"numero" : 1,"id" : 1}
Agora, executando o método:
public static void main(String[] args) {
try{
System.out.println(fromJson("{\"numero\" : 1,\"id\" : 1}", Pagina.class));
}catch(Exception e){
e.printStackTrace();
}
}
Imaginando outra situação, talvez você não tenha a classe que representa o conteúdo de determinado JSON. Nesse caso, a melhor forma é tratar o JSON como ele realmente é, ou seja, como um Mapa de String com objeto.
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
public static Map fromJson(String json) throws Exception {
ObjectMapper jsonMapper = new ObjectMapper();
Map meta = jsonMapper.readValue(json, new TypeReference
Nenhum comentário:
Postar um comentário