Ich möchte, dass mein JSON so aussieht:
{
"information": [{
"timestamp": "xxxx",
"feature": "xxxx",
"ean": 1234,
"data": "xxxx"
}, {
"timestamp": "yyy",
"feature": "yyy",
"ean": 12345,
"data": "yyy"
}]
}
Code bisher:
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);
}
}
und
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);
}
}
Ich vermisse nur den Teil, wie ich das Java-Objekt mit Jackson in JSON konvertieren kann:
public static void main(String[] args) {
// CONVERT THE Java OBJECT TO JSON HERE
System.out.println(json);
}
Meine Frage ist: Sind meine Klassen richtig? Welche Instanz muss ich aufrufen und wie kann ich diese JSON-Ausgabe erreichen?
So konvertieren Sie Ihre object
in JSON mit Jackson:
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);
Das könnte nützlich sein:
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));
Ich weiß, das ist alt (und ich bin neu in Java), aber ich bin auf das gleiche Problem gestoßen. Und die Antworten waren mir nicht so klar wie ein Neuling ... also dachte ich, ich würde hinzufügen, was ich gelernt habe.
Ich habe eine Drittanbieter-Bibliothek verwendet, um das Unternehmen zu unterstützen: org.codehaus.jackson
Alle Downloads hierfür finden Sie hier .
Für die Basis-JSON-Funktionalität müssen Sie den Bibliotheken Ihres Projekts die folgenden Glieder hinzufügen: jackson-mapper-asl und jackson-core-asl
Wählen Sie die Version, die Ihr Projekt benötigt. (Normalerweise können Sie mit dem neuesten stabilen Build arbeiten).
Sobald sie in die Bibliotheken Ihres Projekts importiert wurden, fügen Sie Ihrem Code die folgenden import
-Zeilen hinzu:
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
Mit dem Java-Objekt definierte und zugewiesene Werte, die Sie in JSON konvertieren und als Teil eines RESTful-Web-Services zurückgeben möchten
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();
}
Das Ergebnis sollte folgendermaßen aussehen: {"firstName":"Sample","lastName":"User","email":"[email protected]"}
mach das einfach
Gson gson = new Gson();
return Response.ok(gson.toJson(yourClass)).build();
Nun, selbst die akzeptierte Antwort gibt nicht genau aus, was Op verlangt hat. Es gibt den JSON-String aus, jedoch mit "
-Zeichen. Obwohl es vielleicht ein bisschen spät ist, beantworte ich die Hoffnung, dass es den Menschen helfen wird! So mache ich es:
StringWriter writer = new StringWriter();
JsonGenerator jgen = new JsonFactory().createGenerator(writer);
jgen.setCodec(new ObjectMapper());
jgen.writeObject(object);
jgen.close();
System.out.println(writer.toString());
Hinweis: Damit die am meisten gewählte Lösung funktioniert, müssen Attribute im POJO public
sein oder ein öffentliches getter
/setter
haben
Standardmäßig funktioniert Jackson 2 nur mit Feldern, die entweder .__ sind. public oder über öffentliche Getter-Methoden - Serialisierung einer Entität, die hat alle Felder privat oder Paket privat wird fehlschlagen.
Noch nicht getestet, aber ich glaube, dass diese Regel auch für andere Json-Bibliotheken wie Google Gson gilt.
Sie können Google Gson wie folgt verwenden
UserEntity user = new UserEntity();
user.setUserName("UserName");
user.setUserAge(18);
Gson gson = new Gson();
String jsonStr = gson.toJson(user);
Sie könnten das tun:
String json = new ObjectMapper().writeValueAsString(yourObjectHere);