Dies ist die JSON-Zeichenfolge, die ich habe:
{"attributes":[{"nm":"ACCOUNT","lv":[{"v":{"Id":null,"State":null},"vt":"java.util.Map","cn":1}],"vt":"java.util.Map","status":"SUCCESS","lmd":13585},{"nm":"PROFILE","lv":[{"v":{"Party":null,"Ads":null},"vt":"java.util.Map","cn":2}],"vt":"java.util.Map","status":"SUCCESS","lmd":41962}]}
Ich muss den obigen JSON String
in Pretty Print JSON Output (mit Jackson) konvertieren , wie unten:
{
"attributes": [
{
"nm": "ACCOUNT",
"lv": [
{
"v": {
"Id": null,
"State": null
},
"vt": "java.util.Map",
"cn": 1
}
],
"vt": "java.util.Map",
"status": "SUCCESS",
"lmd": 13585
},
{
"nm": "PROFILE
"lv": [
{
"v": {
"Party": null,
"Ads": null
},
"vt": "java.util.Map",
"cn": 2
}
],
"vt": "java.util.Map",
"status": "SUCCESS",
"lmd": 41962
}
]
}
Kann mir jemand ein Beispiel geben, das auf meinem obigen Beispiel basiert? Wie kann dieses Szenario erreicht werden? Ich weiß, dass es viele Beispiele gibt, aber ich kann diese nicht richtig verstehen. Jede Hilfe wird anhand eines einfachen Beispiels geschätzt.
Aktualisiert:
Unten ist der Code, den ich benutze:
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonString));
Dies funktioniert jedoch nicht so, wie ich die Ausgabe wie oben erwähnt benötigt habe.
Hier ist das POJO, das ich für den obigen JSON verwende:
public class UrlInfo implements Serializable {
private List<Attributes> attribute;
}
class Attributes {
private String nm;
private List<ValueList> lv;
private String vt;
private String status;
private String lmd;
}
class ValueList {
private String vt;
private String cn;
private List<String> v;
}
Kann mir jemand sagen, ob ich das richtige POJO für den JSON habe oder nicht?
Aktualisiert:
String result = restTemplate.getForObject(url.toString(), String.class);
ObjectMapper mapper = new ObjectMapper();
Object json = mapper.readValue(result, Object.class);
String indented = mapper.defaultPrettyPrintingWriter().writeValueAsString(json);
System.out.println(indented);//This print statement show correct way I need
model.addAttribute("response", (indented));
Die folgende Zeile druckt ungefähr so aus:
System.out.println(indented);
{
"attributes" : [ {
"nm" : "ACCOUNT",
"error" : "null SYS00019CancellationException in CoreImpl fetchAttributes\n java.util.concurrent.CancellationException\n\tat java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:231)\n\tat java.util.concurrent.FutureTask.",
"status" : "ERROR"
} ]
}
So musste ich gezeigt werden. Aber wenn ich es zu einem Modell wie diesem hinzufüge:
model.addAttribute("response", (indented));
Und zeigt es dann auf einer Ergebnisformular-JSP-Seite wie unten:
<fieldset>
<legend>Response:</legend>
<strong>${response}</strong><br />
</fieldset>
Ich bekomme so etwas:
{ "attributes" : [ { "nm" : "ACCOUNT", "error" : "null
SYS00019CancellationException in CoreImpl fetchAttributes\n
java.util.concurrent.CancellationException\n\tat
java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:231)\n\tat
java.util.concurrent.FutureTask.", "status" : "ERROR" } ] }
was ich nicht brauche. Ich brauchte die Art und Weise, wie es oben ausgedruckt wurde. Kann mir jemand sagen, warum es so passiert ist?