Je veux que mon JSON ressemble à ceci:
{
"information": [{
"timestamp": "xxxx",
"feature": "xxxx",
"ean": 1234,
"data": "xxxx"
}, {
"timestamp": "yyy",
"feature": "yyy",
"ean": 12345,
"data": "yyy"
}]
}
Code jusqu'ici:
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);
}
}
et
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);
}
}
Je manque juste la partie comment je peux convertir l'objet Java en JSON avec Jackson:
public static void main(String[] args) {
// CONVERT THE Java OBJECT TO JSON HERE
System.out.println(json);
}
Ma question est la suivante: mes cours sont-ils corrects? Quelle instance dois-je appeler et comment puis-je obtenir cette sortie JSON?
Pour convertir votre object
en JSON avec Jackson:
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);
Cela pourrait être utile:
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));
Je sais que c'est vieux (et que je suis nouveau en Java), mais j'ai rencontré le même problème. Et les réponses n'étaient pas aussi claires pour moi qu'un débutant ... alors j'ai pensé ajouter ce que j'ai appris.
J'ai utilisé une bibliothèque tierce pour faciliter cette tâche: org.codehaus.jackson
Tous les téléchargements à cette fin peuvent être trouvés ici .
Pour les fonctionnalités JSON de base, vous devez ajouter les fichiers JAR suivants aux bibliothèques de votre projet: jackson-mapper-asl et jackson-core-asl
Choisissez la version dont votre projet a besoin. (En règle générale, vous pouvez utiliser la dernière version stable).
Une fois qu'ils ont été importés dans les bibliothèques de votre projet, ajoutez les lignes import
suivantes à votre code:
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
Avec l'objet Java défini et les valeurs attribuées que vous souhaitez convertir en JSON et renvoyer en tant que partie d'un service Web RESTful
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();
}
Le résultat devrait ressembler à ceci: {"firstName":"Sample","lastName":"User","email":"[email protected]"}
fais juste ça
Gson gson = new Gson();
return Response.ok(gson.toJson(yourClass)).build();
Bien, même la réponse acceptée ne pas exactement ce que l’opérateur a demandé. Il génère la chaîne JSON mais avec les caractères "
échappés. Donc, bien que cela puisse être un peu tard, je réponds en espérant que cela aidera les gens! Voici comment je le fais:
StringWriter writer = new StringWriter();
JsonGenerator jgen = new JsonFactory().createGenerator(writer);
jgen.setCodec(new ObjectMapper());
jgen.writeObject(object);
jgen.close();
System.out.println(writer.toString());
Remarque: pour que la solution la plus votée fonctionne, les attributs dans le POJO doivent être public
ou avoir un public getter
/setter
:
Par défaut, Jackson 2 ne fonctionnera qu'avec des champs qui sont soit public, ou avoir un public getter méthodes - sérialiser une entité qui a tous les champs privés ou le paquet privé échouera.
Pas encore testé, mais je pense que cette règle s'applique également à d'autres bibliothèques Json comme Google Gson.
Vous pouvez utiliser Google Gson comme ceci
UserEntity user = new UserEntity();
user.setUserName("UserName");
user.setUserAge(18);
Gson gson = new Gson();
String jsonStr = gson.toJson(user);
Vous pourriez faire ceci:
String json = new ObjectMapper().writeValueAsString(yourObjectHere);