如何使用FlexJSON将JSON字符串的一部分反序列化为对象?

时间:2012-12-12 15:39:37

标签: java json deserialization flexjson

我正在尝试将部分JSON字符串序列化为对象。 JSON字符串如下所示:

{"error":null,"excludeFields":null,"message":null,"success":{"user":{"name":null,"organizationId":100,"username":"nl4321"}}}

我只需要JSON字符串的用户部分,它对应于以下类的对象:

public class UserForm implements Serializable {

    private static final long serialVersionUID = -5033294929007794646L;
    private String username;
    private String name;
    @Getter @Setter
    private int organizationId;

    public UserForm() {
    }

    public UserForm(User user) {
        if (user != null) {
            this.username = user.getUsername();
            this.name = user.getName();
            this.organizationId = user.getDefaultOrganisationId();
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

我目前正在尝试反序列化的方式如下:

private UserForm deserializeToJsonResponse(String bodyContent) throws IOException {
        JSONDeserializer<UserForm> jsonDeserializer = new JSONDeserializer<UserForm>();
        return jsonDeserializer.use("values.success.user", UserForm.class).deserialize(bodyContent, UserForm.class);
}

use方法同时提供了路径和类,但无论我尝试什么路径,反序列化后UserForm的内容都为null。我试过了:“user”,“success.user”,“values.success.user”。

有没有人知道我做错了什么以及如何解决它? 我意识到还有其他解决方案,比如Jackson,但这是已经使用FlexJSON的大型代码库的一部分。背景:我正在尝试为项目的一部分编写单元测试。

0 个答案:

没有答案