我正在尝试将对象列表转换为json,但值是内存中的位置。
public class User {
private String name;
private int score;
public User(String name, int score){
this.name = name;
this.score = score;
}
User user1= new User("Luke", 50);
User user2 = new User("Ryan", 70);
List<User> list = Arrays.asList(user1, user2);
Gson gson = new Gson();
String json = gson.toJson(list);
System.out.println(list);
最后一行应该在json中显示我的对象但是我只是得到[User @ 579bb367,User @ 1de0aca6],这是为什么?感谢
答案 0 :(得分:3)
你的意思是
System.out.println(json);
你做的是打印List,没有toString,只会打印一个默认哈希
答案 1 :(得分:0)
您只需打印列表的哈希码。当您调用System.out.println()方法时,它将调用List的toString()方法。它是
getClass()。getName()+&#39; @&#39; + Integer.toHexString(hashCode())
答案 2 :(得分:0)
您需要为列表中的Object实现toString()
方法,否则您将获得哈希码。
答案 3 :(得分:0)
当你打印一个列表时,你实际上(隐式地)调用它的toString()
方法,它通常只调用它的每个元素的toString()
,用逗号连接它们并用括号括起来。如果您的User
类没有覆盖toString()
,它将使用Object
的实现,只打印类的简单名称及其默认hashCode()
,这通常是内存地址。如果你想要更聪明的东西,你必须覆盖toString()
。 E.g:
@Override
public String toString() {
return String.format("[User name %s, score %d]", name, score);
}