Convertendo objects Java para JSON com Jackson

Eu quero meu JSON para ficar assim:

{ "information": [{ "timestamp": "xxxx", "feature": "xxxx", "ean": 1234, "data": "xxxx" }, { "timestamp": "yyy", "feature": "yyy", "ean": 12345, "data": "yyy" }] } 

Código até agora:

 import java.util.List; public class ValueData { private List information; public ValueData(){ } public List getInformation() { return information; } public void setInformation(List information) { this.information = information; } @Override public String toString() { return String.format("{information:%s}", information); } } 

e

 public class ValueItems { private String timestamp; private String feature; private int ean; private String data; public ValueItems(){ } public ValueItems(String timestamp, String feature, int ean, String data){ this.timestamp = timestamp; this.feature = feature; this.ean = ean; this.data = data; } public String getTimestamp() { return timestamp; } public void setTimestamp(String timestamp) { this.timestamp = timestamp; } public String getFeature() { return feature; } public void setFeature(String feature) { this.feature = feature; } public int getEan() { return ean; } public void setEan(int ean) { this.ean = ean; } public String getData() { return data; } public void setData(String data) { this.data = data; } @Override public String toString() { return String.format("{timestamp:%s,feature:%s,ean:%s,data:%s}", timestamp, feature, ean, data); } } 

Eu só falta a parte como eu posso converter o object Java para JSON com Jackson:

 public static void main(String[] args) { // CONVERT THE JAVA OBJECT TO JSON HERE System.out.println(json); } 

Minha pergunta é: minhas aulas estão corretas? Para qual instância devo ligar e como posso conseguir essa saída JSON?

Para converter seu object em JSON com Jackson:

 ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); String json = ow.writeValueAsString(object); 

Eu sei que isso é antigo (e eu sou novo em java), mas eu corri para o mesmo problema. E as respostas não eram tão claras para mim quanto um novato … então pensei em acrescentar o que aprendi.

Eu usei uma biblioteca de terceiros para ajudar no esforço: org.codehaus.jackson Todos os downloads para isso podem ser encontrados aqui .

Para a funcionalidade base JSON, você precisa adicionar os seguintes jars às bibliotecas do seu projeto: jackson-mapper-asl e jackson-core-asl

Escolha a versão que seu projeto precisa. (Normalmente você pode ir com a última versão estável).

Depois que eles forem importados para as bibliotecas do seu projeto, adicione as seguintes linhas de import ao seu código:

  import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper;` 

Com o object java definido e os valores designados que você deseja converter em JSON e retornar como parte de um serviço da web RESTful

 User u = new User(); u.firstName = "Sample"; u.lastName = "User"; u.email = "sampleU@example.com"; ObjectMapper mapper = new ObjectMapper(); try { // convert user object to json string and return it return mapper.writeValueAsString(u); } // catch various errors catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } 

O resultado deve ser assim: {"firstName":"Sample","lastName":"User","email":"sampleU@example.com"}

Isso pode ser útil ………

 objectMapper.writeValue(new File("c:\\employee.json"), employee); // display to console Object json = objectMapper.readValue( objectMapper.writeValueAsString(employee), Object.class); System.out.println(objectMapper.writerWithDefaultPrettyPrinter() .writeValueAsString(json)); 

faça isso

 Gson gson = new Gson(); return Response.ok(gson.toJson(yourClass)).build(); 

Bem, até mesmo a resposta aceita não produz exatamente o que a op pediu. Ele produz a string JSON, mas com " caracteres escapados. Então, embora possa estar um pouco atrasado, eu estou respondendo esperando que isso ajude as pessoas! Aqui está como eu faço isso:

 StringWriter writer = new StringWriter(); JsonGenerator jgen = new JsonFactory().createGenerator(writer); jgen.setCodec(new ObjectMapper()); jgen.writeObject(object); jgen.close(); System.out.println(writer.toString()); 

Para converter objects Java em JSON usando Jackson, você precisa include três bibliotecas: jackson-annotations, jackson-core e jackson-databind .

Considere o seguinte POJO do aluno :

 import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties(ignoreUnknown = true) public class Student { private int id; private String name; public Student() { } public Student(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 

Para convertê-lo em uma sequência JSON, faça o seguinte:

 public static String convertUsingJackson(Student student) { String studentJson = ""; try { ObjectMapper mapper = new ObjectMapper(); studentJson = mapper.writeValueAsString(student); } catch(Exception ex) { System.out.println("Error while converting Student object to Json"); ex.printStackTrace(); } return studentJson; } 

PS: método writeValueAsString () aceita também Hashmap, ArrayList e Arrays.

Referência: Converter object Java em JSON

 public class JSONConvector { public static String toJSON(Object object) throws JSONException, IllegalAccessException { String str = ""; Class c = object.getClass(); JSONObject jsonObject = new JSONObject(); for (Field field : c.getDeclaredFields()) { field.setAccessible(true); String name = field.getName(); String value = String.valueOf(field.get(object)); jsonObject.put(name, value); } System.out.println(jsonObject.toString()); return jsonObject.toString(); } public static String toJSON(List list ) throws JSONException, IllegalAccessException { JSONArray jsonArray = new JSONArray(); for (Object i : list) { String jstr = toJSON(i); JSONObject jsonObject = new JSONObject(jstr); jsonArray.put(jsonArray); } return jsonArray.toString(); } }