创建“标记的”Json对象,而不仅仅是属性

时间:2016-02-20 11:48:06

标签: java json serialization jackson

当我尝试将对象反序列化为json字符串时,我遇到了一些问题。

我收到了以下内容:

{
    "idUser": 1,
    "name": "2",
    ...
}

但我想实现这个目标:

{
    "user": {
        "idUser": 1,
        "name": "2",
        ...
    }
}

我正在使用此代码序列化我的对象:

public static String deserializeUser(User user){
    ObjectMapper objectMapper = new ObjectMapper();

    String json = "";
    try {
        json = objectMapper.writeValueAsString(user);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

    return json;
}

我正在使用api com.fasterxml.jackson

这是我的用户类:

public class User {
    public long idUser;
    public String name;
    public String email;
    public String phoneNumber;
    @JsonProperty("cpf")
    public String CPF;
    public String password;
    public boolean active;
    private String facebookPictureUrl;
    private String cameraTakenPhotoBase64;
    private String facebookUserId;

... (constructor and getters/setters)
}

1 个答案:

答案 0 :(得分:0)

这是因为您正在序列化User实例。预期的JSON匹配具有用户属性的地图。所以你可以通过以下方式实现它:

Map<String, User> userMap = new HashMap<String, User>();
userMap.put("user", user);
String json = "";

try {
    json = objectMapper.writeValueAsString(userMap);
} catch (JsonProcessingException e) {
    e.printStackTrace();
}