java 里面的 Gson 问题
@Test
public void testGetInt() {
Users users = usersDAO.get(3);
String jsonUsers = gson.toJson(users);
System.out.println("jsonUsers:"+jsonUsers);
int avatarId = users.getAvatarId();
Avatar avatar = avatarDAO.get(avatarId);
String jsonAvatar = gson.toJson(avatar);
System.out.println("jsonAvatar:"+jsonAvatar);
}
打印的数据:
jsonUsers:
{"user_id":3,"username":"Tony","urlname":"comq"}
jsonAvatar:
{"id":3,"farm":"farm1","bucket":"hbimg","key":"e925755184a-aSvujx","type":"image/jpeg","width":100,"height":100,"frames":1}
怎么把jsonAvatar数据放到jsonUsers里面,变成:
{"user_id":3,"username":"Tony","urlname":"comq","avatar":{"id":3,"farm":"farm1","bucket":"hbimg","key":"e925755184a-aSvujx","type":"image/jpeg","width":100,"height":100,"frames":1}}
cocoo
10 years, 3 months ago
Answers
似乎GSON将对象序列化是一次性的,然后我平时如果遇到这类问题的话
我会这样做
class AvatarUser extends Users {
Avatar avatar;
}
然后再对AvatarUser进行序列化,这样做的一个好处是方便以后的反序列化。
UPDATE:
新建一个类
UPDATE:
谢谢Dont
public class AvatarUser extends Users {
public Avatar avatar;
public AvatarUser() {
}
public AvatarUser(Users user) {
setUserId(user.getUserId());
setUserName(user.getUserName());
setUrlName(user.getUrlName());
}
}
@Test
public void testGetInt() {
Users user = usersDAO.get(3);
AvatarUser avatarUser = new AvartarUser(user);
// AvatarUser的getter/setter 来自父类Users
// UPDATE 直接在子类构造器做好赋值工作,就不用每次都重复编码了@Dont
int avatarId = user.getAvatarId();
Avatar avatar = avatarDAO.get(avatarId);
avatarUser.avatar = avatar;
String jsonAvatar = gson.toJson(avatarUser);
System.out.println("jsonAvatar:"+jsonAvatar);
}
Likey
answered 10 years, 3 months ago
package com;
import com.google.gson.Gson;
public class TestGson {
public static void main(String args[])
{
String jsonAvatar=""; //你的json数据
User user=new User();
user.setUser_id(3);
user.setUsername("Tony");
user.setUrlname("comq");
user.setAvatar(jsonAvatar);
Gson gson=new Gson();
String result=gson.toJson(user);
System.out.println(result);
}
}
package com;
public class User {
private int user_id;
private String username;
private String urlname;
private String avatar;
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUrlname() {
return urlname;
}
public void setUrlname(String urlname) {
this.urlname = urlname;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
}
小黑炮
answered 10 years, 3 months ago