Converter objectos Java para JSON com Jackson
{
"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<ValueItems> information;
public ValueData(){
}
public List<ValueItems> getInformation() {
return information;
}
public void setInformation(List<ValueItems> 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);
}
}
Estou a perder a parte de Como posso converter o objecto Java para JSON com o Jackson.
public static void main(String[] args) {
// CONVERT THE JAVA OBJECT TO JSON HERE
System.out.println(json);
}
A minha pergunta é: as minhas aulas estão correctas? Que exemplo eu tenho que chamar e como que eu posso alcançar esta saída JSON?
6 answers
Para converter o teu object
em JSON com o Jackson:
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);
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));
Eu sei que isto é antigo (e sou novo em java), mas encontrei o mesmo problema. E as respostas não foram tão claras para mim como uma novata... então pensei em adicionar o que aprendi.
Usei uma biblioteca de terceiros para ajudar no empreendimento. Todos os downloads para isso podem ser encontrados aqui.Para a funcionalidade JSON de base, é necessário adicionar os seguintes frascos às bibliotecas do seu projecto: Jackson-mapper-asl e Jackson-core-asl
Escolha a versão de que o seu projecto necessita. (Normalmente você pode ir com a última construção estável).
Uma vez importados para as bibliotecas do seu projecto, adicione as seguintes linhas import
ao seu código:
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
Com o objecto java definido e atribuído valores que deseja converter para JSON e regressar como parte de um serviço Web repousante
User u = new User();
u.firstName = "Sample";
u.lastName = "User";
u.email = "[email protected]";
ObjectMapper mapper = new ObjectMapper();
try {
// convert user object to json string and return it
return mapper.writeValueAsString(u);
}
catch (JsonGenerationException | JsonMappingException e) {
// catch various errors
e.printStackTrace();
}
O resultado deve ser parecido com isto.:
{"firstName":"Sample","lastName":"User","email":"[email protected]"}
Faz isto
Gson gson = new Gson();
return Response.ok(gson.toJson(yourClass)).build();
Bem, mesmo a resposta aceite nãoexactamente dá o que o op pediu. Ele emite a cadeia de caracteres JSON, mas com os caracteres "
escaparam. Então, embora possa ser um pouco tarde, eu estou respondendo a esperança de que vai ajudar as pessoas! Eis como o faço:
StringWriter writer = new StringWriter();
JsonGenerator jgen = new JsonFactory().createGenerator(writer);
jgen.setCodec(new ObjectMapper());
jgen.writeObject(object);
jgen.close();
System.out.println(writer.toString());
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();
}
}