我正在使用ObjectMapper的writeValueAsString方法将Java bean转换为JSON字符串,其中Java
bean中的大写变量被更改为JSON字符串中的小写字母。实施了Jackson 2.7.4版本。菜豆样品-
public class BaseBean {
private static final long serialVersionUID = 3947489072259877540L;
private int _iXId;
private String _sPNR;
private ArrayList _alMinPriced = new ArrayList();
public int getXId() {
return _iXId;
}
public void setXId(int id) {
_iXId = id;
}
public String getPNRNumber() {
return _sPNR;
}
public void setPNRNumber(String _spnr) {
_sPNR = _spnr;
}
public ArrayList getMinPriced() {
return _alMinPriced;
}
public void setMinPriced(ArrayList minPriced) {
_alMinPriced = minPriced;
}
public void setMinPriced(TermBean bnTerm) {
_alMinPriced.add(bnTerm);
}
}
之前,我们使用net.sf.json.JSON和JSONSerializer将Java bean转换为JSON。生成的JSON字符串与我们使用的Java
bean具有相似的命名。由于性能问题,我想对此进行更改并实施Jackson。
限制:我们无法更改Java
bean的命名约定,因为这些bean来自较旧的项目,并且几乎没有范围来更改bean中的变量名,甚至在每个bean中添加json属性。
我已经尝试了下面的代码,但是没有用
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);
另外,我尝试了自定义的PropertyNamingStrategy,但对此还不清楚。
编辑:
net.sf.json.JSON 生成了上述Bean的JSON字符串,如下所述:
{"XId":11,"PNRNumber":"123456789","minPriced":[{"name":"JSON"},{"name":"simple"}]}
Jackson 为上述bean生成了JSON字符串,如下所述:
{"xid":11,"pnrnumber":"123456789","minPriced":[{"name":"JSON"},{"name":"Jackson"}]}
如您所见,在jackson中,“ XId”转换为“ xid”,在jackson中,“ PNRNumber”转换为“ pnrnumber”。
Jackson中是否有任何可用的配置更改来避免此类修改。或如何处理这种情况。