我使用ObjectMapper的writeValueAsString方法將Java bean轉換爲JSON字符串,其中Java bean的大寫變量正在JSON字符串中更改爲小寫字母。 傑克遜2.7.4版本實施。 基地豆樣品 -Jackson -Jans bean to JSON字符串:在JSON中轉換成小寫字母的大寫變量
public class BaseBean {
private static final long serialVersionUID = 3947489072259877540L;
private int _iXId;
private String _sPNR;
private ArrayList _alMinPriced = new ArrayList<TermBean>();
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但在這個並不清楚。
修改於:下面對上面的bean提到
net.sf.json.JSON生成JSON字符串:
{"XId":11,"PNRNumber":"123456789","minPriced":[{"name":"JSON"},{"name":"simple"}]}
傑克遜生成JSON字符串低於上述豆所提:
{"xid":11,"pnrnumber":"123456789","minPriced":[{"name":"JSON"},{"name":"Jackson"}]}
正如您所見,傑克遜將「XId」轉換爲「xid」,將傑克遜轉換爲「pnrnumber」的「PNRNumber」。
Jackson是否有任何配置更改可用於避免此類修改。 或如何處理這種情況。
我不明白你是否試圖從該bean生成JSON - 你試過了嗎?生成的JSON是什麼? - 一般來說,您可以使用com.fasterxml.jackson.annotation.JsonProperty註釋來更改JSON屬性的名稱/使它們不同於Java bean字段。 - 我可能不明白你的問題。 – cslotty