到Java类对象的HashMap



服务器端是这样的

public class Instrument {
    private String myPropOne;
    private String myPropTwo;
    private String myPropThree;
    public String getMyPropOne() {
        return myPropOne;
    }
    public void setMyPropOne(String myPropOne) {
        this.myPropOne = myPropOne;
    }
    public String getMyPropTwo() {
        return myPropTwo;
    }
public void setMyPropTwo(String myPropTwo) {
    this.myPropTwo = myPropTwo;
}
public String getMyPropThree() {
    return myPropThree;
}
public void setMyPropThree(String myPropThree) {
    this.myPropThree = myPropThree;
    }
}

在浏览器端,如果要发送映射

{ my_prop_one : 'val1', my_prop_two : 'val2', my_prop_three : 'val3'}

一种方法是创建定义toMap()方法并将所有属性一个一个地放置当它来自ui端时也这样做例如fromMap()

现在的问题是我想写一些通用函数

set('my_prop_one', 'val2')

以便它将查找实例并设置正确的值,我将扩展这个类以创建更多具有不同属性的乐器类型我可以使用annotation

public class Instrument {
    private String myPropOne;
    private String myPropTwo;
    private String myPropThree;
    @KeyMap(value="my_prop_one")
    public String getMyPropOne() {
        return myPropOne;
    }
    @KeyMap(value="my_prop_one")
    public void setMyPropOne(String myPropOne) {
        this.myPropOne = myPropOne;
    }
    @KeyMap(value="my_prop_two")
    public String getMyPropTwo() {
        return myPropTwo;
    }
    @KeyMap(value="my_prop_two")
    public void setMyPropTwo(String myPropTwo) {
        this.myPropTwo = myPropTwo;
    }
    @KeyMap(value="my_prop_three")
    public String getMyPropThree() {
        return myPropThree;
    }
    @KeyMap(value="my_prop_three")
    public void setMyPropThree(String myPropThree) {
        this.myPropThree = myPropThree;
    }
}

我将不得不写两次注释。有更好的方法吗?比如我在属性上添加注解getter/setter被链接起来,用来提取属性,创建hashMap?

JsonUtil我已经使用输出

{ myPropOne : 'val1', myPropTwo : 'val2', myPropThree : 'val3'}

但是setter/getter只用于一个属性?怎么做呢?编辑3:

@JsonAnyGetter & @JsonAnySetter

就像在这里的例子中解释的那样,但它们只适用于map而不是真正的属性,这是我的要求

您试过https://github.com/flori/json-utils吗?里面有你想要的功能主义者。

如果你正在使用Jackson(根据你的评论),那么像这样的东西应该会自动为你处理这一切:

public class Instrument {
    @JsonProperty private String myPropOne;
    @JsonProperty private String myPropTwo;
    ...
}

然后你可以使用ObjectMapper类通过调用

来创建JSON:
Instrument instrument = new Instrument();
instrument.setMyPropOne("val1");
// set other values
ObjectMapper mapper = new ObjectMapper();
// configure mapper if needed
mapper.writeValueAsString(instrument);

相关内容

  • 没有找到相关文章

最新更新