複雑なjson文字列とマップに変換したい
問題があります。
は、この簡単なテストを見てください:Java - GsonがIntegerをDoubleとして解析するのはなぜですか?
public class Test {
@SuppressWarnings("serial")
public static void main(String[] args) {
Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("data", "{\"rowNum\":0,\"colNum\":2,\"text\":\"math\"}");
Map<String,Object> dataMap = JsonUtil.getGson().fromJson(
hashMap.get("data").toString(),new TypeToken<Map<String,Object>>() {}.getType());
System.out.println(dataMap.toString());
}
}
結果:
コンソール印刷:{rowNum=0.0, colNum=2.0, text=math}
INTがダブルに変換されます。
はなぜタイプを変更gsonず、どのように私はそれを修正することができますか?
2は数字であり、doubleはint値をカバーするので、それはそのことを意味します。 (フィールドを整数として読み取った場合、コンパイルされません) – nafas
JSONには数値型が1つしかありません。double型とint型の値に違いはありません。 –