私の Java プログラムは、JSON 文字列を引数として取り、それを解析します。json-simple パーサーを使用しています。ここにリンクがあります。次の JSON 文字列を引数としてプログラムに渡そうとしています。
{
"obj":"timeout" ,
"valInMs":15000
}
"valInMs" の値を取得しようとしています。以下は、これを行っているJavaコードです
JSONParser parser = new JSONParser();
JSONObject jsonObj;
jsonObj = (JSONObject) parser.parse(jsonString);
Integer timeout = (Integer) paramJson.get("valInMs");
上記のコードではjava.lang.ClassCastException
: java.lang.Long
cannot be cast to が発生しjava.lang.Integer
ます。
JSON数値に遭遇したときにプログラムが何を期待すべきかを理解しようとしています。JSON オブジェクトを見て「タイプ」を判断することはできません。
Javaプログラムはこれをどのように処理する必要がありますか?
フォームjson.orgでは、Json の「値」(他の多くのものの中から) が「数値」になる可能性があるようです。「数値」は次のいずれかです。
number
- int
- int frac
- int exp
- int frac exp