Konvertieren Sie JSON String in Pretty Print JSON Ausgabe mit Jackson
Dies ist die JSON-string habe ich-
{"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}]}
Brauche ich zum konvertieren der oben genannten JSON-string in Pretty Print JSON-Ausgabe(mit Jackson), 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 jemand mir eine Beispiel-basis, auf mein Beispiel oben? Wie erreichen Sie dieses Szenario, ich weiß, es gibt viele Beispiel, aber ich bin nicht in der Lage zu verstehen, diese richtig. Jede Hilfe wird dankbar sein mit einem einfachen Beispiel.
Aktualisiert:
Unten ist der code, den ich verwende
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonString));
Aber das funktioniert nicht mit der Art und Weise, die ich brauchte, die Ausgabe wie oben erwähnt,
Hier ist der POJO-ich bin mit der oben genannten JSON-
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 Recht habe, POJO für die JSON-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));
Unter Zeile druckt so etwas wie dieses-
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"
} ]
}
ist die Art und Weise, die ich brauchte, gezeigt zu werden. Aber wenn ich es als Modell-
model.addAttribute("response", (indented));
Und dann zeigt es sich in einem resultform jsp-Seite wie unten-
<fieldset>
<legend>Response:</legend>
<strong>${response}</strong><br />
</fieldset>
Bekomme ich so etwas wie dieses-
{ "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" } ] }
die ich nicht brauchen. Ich brauchte die Möglichkeit hab es ausgedruckt vor. Kann mir jemand sagen, warum es kam, geschah so?
InformationsquelleAutor der Frage arsenal | 2013-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einzug alle alten JSON, nur binden Sie es als
Object
wie:und dann schreiben Sie es mit Einrückung:
dies verhindert, dass zu definieren, die tatsächliche POJO, map Daten.
Oder verwenden Sie
JsonNode
(JSON-Baum).InformationsquelleAutor der Antwort StaxMan
Die einfachste und auch die meisten kompakten Lösung (für v2.3.3):
InformationsquelleAutor der Antwort Marcelo C.
Den neuen Weg mit Jackson 1.9+ ist folgende:
Ist die Ausgabe richtig formatiert!
InformationsquelleAutor der Antwort Marcello de Sales
Jackson 1.9, können Wir den folgenden code für pretty print.
InformationsquelleAutor der Antwort Ilango
Ich denke, dies ist die einfachste Technik zur Verschönerung der json-Daten,
wo Antwort ist ein String.
Pass einfach auf die 4(indentSpaces) in
toString()
Methode.Hinweis:Es funktioniert in der android-ohne Bibliothek. Aber in java verwenden Sie die org.json Bibliothek.
InformationsquelleAutor der Antwort Aman Gupta - ShOoTeR
Dieses sieht wie es könnte die Antwort auf Ihre Frage. Es sagt, dass es Frühling, aber ich denke, das sollte noch helfen Ihnen in Ihrem Fall. Lassen Sie mich die inline-code hier, so dass es bequemer:
InformationsquelleAutor der Antwort Daniel Kaplan