我想将JSon String
转换为Java
Object
并将其打印到控制台。但它不起作用:
这是代码:
try {
//From JSON String to Java-Object (Json encoding)
Person personObj = new Person();
JSONObject json2Java = new JSONObject("{\"id\":1,\"fullName\":\"name\",\"age\":22}");
personObj.setFullName(json2Java.getString("fullName"));
personObj.setAge(json2Java.getInt("age"));
personObj.setId(json2Java.getInt("id"));
System.out.println("Json2Java: " + personObj);
}
catch (JSONException e) {
throw new WebApplicationException(Response.status(Status.BAD_REQUEST)
.entity("Couldn't parse JSON string: " + e.getMessage())
.build());
}
这是我在控制台上得到的:
Json2Java: com.akapoor.ws.testws.model.Person@86fe26
你能告诉我我的错误在哪里以及我必须改变什么吗?
答案 0 :(得分:3)
您的代码工作正常 - 但要获得您正在寻找的内容,您需要覆盖toString
对象中的Person
方法。这是一个简单的实现:
public String toString() {
StringBuilder sb = new StringBuilder("Person:\n");
sb.append("ID: ").append(this.getId()).append("\n")
append("Full name: ").append(this.getFullName()).append("\n")
append("Age: ").append(this.getAge()).append("\n");
return sb.toString();
}
将其添加到Person
对象并再次执行代码。
答案 1 :(得分:0)
toString() method in
Person`类,以所需格式打印数据。toString()
方法。由于您的Person类没有toString()
方法,因此它调用父类的toString()
方法,在这种情况下为Object
,并打印您看到的输出。答案 2 :(得分:0)
看起来你正在努力确保你的json被正确解析,所以,你最好的尝试是简单地用jsonToJava替换personObj,因为,一旦你解析了你的json你填充你的pojo的方式它总是正确的。
样品:
System.out.println("Json2Java: " + json2Java);