将Java对象打印为字符串

时间:2014-03-18 14:57:07

标签: java json

我想将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

你能告诉我我的错误在哪里以及我必须改变什么吗?

3 个答案:

答案 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);