1
jsonドキュメントを使用して変数型を宣言しようとしています... 問題は、Long型またはDouble型を宣言する必要があることです。例えば、文字列:変数型を文字列で宣言する方法
生の値は、二重である:
{"raw":119970000,"fmt":"119.97M","longFmt":"119,970,000"}
、これはあまりにも二重である:
{"raw":0.068,"fmt":"6.80%"}
が、これは長いです:
{"raw":1443571200,"fmt":"2015-09-30"}
私は種類を知ることができますが、私が得たprobleは、私はこれをやろうとしている
タイプを宣言した瞬間にあるが、そこにあるので、私は「FMT」フィールドに正規表現を使用していますエラーと私は正確になぜそれを知りません。
これは私の「フィールド」クラスです:
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;
}
}
Number(基本クラス)またはBigDecimal(すべての強力なスイスナイフ)を使用します。 –
私はあなたがいないと思う...私にあなたの解決策を教えてもらえますか?ありがとうございました。 –