Đây là chuỗi JSON tôi have-Chuyển đổi JSON String để đầu ra JSON Khá In bằng Jackson
{"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}]}
tôi cần phải chuyển đổi chuỗi JSON trên vào Khá In JSON Output (sử dụng Jackson) như liệt kê dưới đây
{
"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
}
]
}
Có ai có thể cung cấp cho tôi ví dụ về ví dụ trên không? Làm thế nào để đạt được kịch bản này, tôi biết có rất nhiều ví dụ nhưng tôi không thể hiểu những người đúng. Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao với một ví dụ đơn giản.
Cập nhật:
Dưới đây là đoạn code tôi đang sử dụng
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(jsonString));
Nhưng điều này không làm việc với cách tôi cần đầu ra như đã đề cập ở trên
Dưới đây là là POJO Tôi đang sử dụng cho các JSON ở trên-
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;
}
Bất cứ ai có thể cho tôi biết liệu tôi có đúng POJO cho JSON hay không?
Cập nhật: -
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));
Dưới dòng in ra cái gì đó như this-
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"
} ]
}
đó là con đường tôi cần phải được hiển thị. Nhưng khi tôi thêm nó vào mô hình như this-
model.addAttribute("response", (indented));
Và sau đó cho thấy nó ra trong một trang resultform jsp như liệt kê dưới đây
<fieldset>
<legend>Response:</legend>
<strong>${response}</strong><br />
</fieldset>
tôi nhận được một cái gì đó giống như this-
{ "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" } ] }
mà tôi không cần. Tôi cần cách nó được in ở trên. Bất cứ ai có thể cho tôi biết lý do tại sao nó đã xảy ra như thế này?
Sẽ tuyệt vời nếu bạn hiển thị cho chúng tôi mã bạn đã viết cho đến thời điểm này. – Swapnil
@Swapnil, đã cập nhật câu hỏi bằng mã cho đến giờ tôi có. – ferhan