Ini adalah string JSON yang saya miliki:
{"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}]}
Saya perlu mengubah JSON di atas String
ke dalam Pretty Print JSON Output (menggunakan Jackson), seperti di bawah ini:
{
"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
}
]
}
Adakah yang bisa memberikan saya contoh berdasarkan contoh saya di atas? Bagaimana cara mencapai skenario ini? Saya tahu ada banyak contoh, tetapi saya tidak dapat memahaminya dengan benar. Bantuan apa pun akan dihargai dengan contoh sederhana.
Diperbarui:
Di bawah ini adalah kode yang saya gunakan:
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonString));
Tetapi ini tidak bekerja dengan cara saya membutuhkan output seperti yang disebutkan di atas.
Inilah POJO yang saya gunakan untuk JSON di atas:
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;
}
Adakah yang bisa memberi tahu saya apakah saya mendapatkan POJO yang tepat untuk JSON atau tidak?
Diperbarui:
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));
Baris di bawah ini mencetak sesuatu seperti ini:
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"
} ]
}
itulah cara saya perlu ditampilkan. Tetapi ketika saya menambahkannya ke model seperti ini:
model.addAttribute("response", (indented));
Dan kemudian menunjukkannya di halaman jsp formform seperti di bawah ini:
<fieldset>
<legend>Response:</legend>
<strong>${response}</strong><br />
</fieldset>
Saya mendapatkan sesuatu seperti ini:
{ "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" } ] }
yang tidak saya butuhkan. Saya perlu cara itu dicetak di atas. Adakah yang bisa memberi tahu saya mengapa itu terjadi seperti ini?