![](/img/trans.png)
[英]How to convert below JSON to POJO using ObjectMapper of Jackson
[英]How to convert String variable of POJO as Integer while converting to Json using ObjectMapper?
我有Java
類,它具有String
變量成員
String sampleNumber="1234";
當我使用ObjectMapper
將該Pojo
轉換為JSON
我得到:
{
"sampleNumber":"1234"
}
但我需要一個JSON
的整數類型如下
{
"sampleNumber":1234
}
任何人都可以幫助我使用ObjectMapper
獲得預期結果嗎?
int
您可以將您的屬性更改為int
:
class Pojo {
private int sampleNumber = 1234;
// getters, setters
}
你會得到:
{
"sampleNumber" : 1234
}
如果你不想改變物業類型int
/ Integer
您需要忽略getter
返回String
,並添加新getter
將返回int
/ Integer
:
class Pojo {
private String sampleNumber = "1234";
public Integer getSampleNumber() {
return Integer.parseInt(sampleNumber);
}
@JsonIgnore
public String getSampleNumberString() {
return sampleNumber;
}
public void setSampleNumber(String sampleNumber) {
this.sampleNumber = sampleNumber;
}
}
對於上面的POJO
你會得到下面的JSON
:
{
"sampleNumber" : 1234
}
int
自定義序列化程序您可以編寫自定義序列化程序,嘗試解析String
並將其寫為Number
:
class ForceIntSerializer extends StdScalarSerializer<Object> {
public ForceIntSerializer() {
super(Object.class);
}
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException {
if (value instanceof String) {
try {
gen.writeNumber(Integer.parseInt(value.toString()));
} catch (NumberFormatException e) {
gen.writeString(value.toString());
}
} else if (value instanceof Integer) {
gen.writeNumber(((Integer) value));
}
}
}
您可以按如下方式使用它:
class Pojo {
private String sampleNumber = "1234";
@JsonSerialize(using = ForceIntSerializer.class)
public String getSampleNumber() {
return sampleNumber;
}
}
你會得到以下JSON
:
{
"sampleNumber" : 1234
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.