Bu sahip olduğum JSON dizesi:
{"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}]}
Yukarıdaki JSON String
aşağıdaki gibi Pretty Print JSON Çıkışı (Jackson kullanarak) dönüştürmek gerekir :
{
"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
}
]
}
Yukarıdaki örneğime dayanarak bana bir örnek verebilir misiniz? Bu senaryo nasıl elde edilir? Çok fazla örnek olduğunu biliyorum, ama bunları tam olarak anlayamıyorum. Herhangi bir yardım basit bir örnekle takdir edilecektir.
Güncellenmiş:
Aşağıda kullanıyorum kodu:
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonString));
Ancak bu, yukarıda belirtildiği gibi çıktıya ihtiyaç duyduğum şekilde çalışmaz.
Yukarıdaki JSON için kullanıyorum POJO İşte:
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;
}
Herkes bana JSON için doğru POJO olup olmadığını söyleyebilir?
Güncellenmiş:
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));
Aşağıdaki satır böyle bir şey yazdırır:
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"
} ]
}
bu şekilde gösterilmem gerekiyordu. Ama böyle bir modele eklediğimde:
model.addAttribute("response", (indented));
Ve sonra aşağıdaki gibi bir sonuç formu jsp sayfasında gösterir:
<fieldset>
<legend>Response:</legend>
<strong>${response}</strong><br />
</fieldset>
Böyle bir şey alıyorum:
{ "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" } ] }
ki buna ihtiyacım yok. Yukarıda yazdırılma şekline ihtiyacım vardı. Biri bana bunun neden böyle olduğunu söyleyebilir mi?