1
我想聲明一個變量類型使用JSON文檔... 問題是,我需要聲明它的類型長或雙,這取決於字符串,例如:如何聲明一個變量類型知道它的類型由一個字符串
原始值是雙:
{"raw":119970000,"fmt":"119.97M","longFmt":"119,970,000"}
這是一個雙太:
{"raw":0.068,"fmt":"6.80%"}
,但這是一個長期的:
{"raw":1443571200,"fmt":"2015-09-30"}
我使用的「格式化」領域正則表達式,所以我知道的類型,但我得到了proble是在宣佈
我試圖做這個類型的時刻,但有一個錯誤,我不知道爲什麼。
這是我的「場」類:
public class Field {
@JsonProperty("raw") private RawField raw;
@JsonProperty("fmt") private String fmt;
@JsonIgnore private FieldType fieldType;
@JsonCreator
public Field(
@JsonProperty("raw") RawField raw,
@JsonProperty("fmt") final String fmt
) {
this.setFmt(fmt);
this.setRaw(raw, fmt);
}
private boolean isDate(String fmt){
Pattern datePattern = Pattern.compile(
"[0-9]{4}-(([1][0-2])|(0[0-9]))-((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))"
);
Matcher matcher = datePattern.matcher(fmt);
return matcher.find();
}
private boolean isDouble(String fmt) {
Pattern datePattern = Pattern.compile(
"[0-9]+\\.?[0-9]*(M|B|%)?$"
);
Matcher matcher = datePattern.matcher(fmt);
return !isDate(fmt) && matcher.find();
}
public String getFmt() {
return fmt;
}
public void setFmt(final String fmt) {
this.fmt = fmt;
}
public RawField getRaw() {
return raw;
}
public void setRaw(final RawField raw) {
this.raw = raw;
}
private void setRaw(final RawField raw, String fmt) {
if(isDate(fmt)) {
this.raw = new RawField<Long>(raw); //error
} else {
if(isDouble(fmt)){
this.raw = new RawField<Double>(raw); //error
}
}
}
}
,這是我RawField類:
public class RawField <E> {
@JsonProperty("raw") private E rawField;
@JsonCreator
public RawField (E rawField){
this.setRawField(rawField);
}
@JsonProperty("raw")
public void setRawField(E rawField) {
this.rawField = rawField;
}
@JsonProperty("raw")
public E getRawField() {
return rawField;
}
}
使用數字(基類)或BigDecimal(全功能瑞士刀)。 –
我想我不明白你...你可以告訴我你的解決方案嗎?謝謝。 –