3

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 になります。私は試しました:「ユーザー」、「success.user」、「values.success.user」。

私が間違っていることと、それを修正する方法を知っている人はいますか? Jackson のような他のソリューションもあると思いますが、これはすでに FlexJSON を多く使用している大規模なコードベースの一部です。背景: プロジェクトの一部である API の単体テストを作成しようとしています。

4

0 に答える 0