- 字符串
對於一個json字符串
String str = "{"specItem":"[紅, 大]","specName":"顏色, 尺寸","goodsPrice":2,"stock":0}";
//以上是未轉義過的,如果你想直接寫在代碼中測試的話,記得轉義,例如如下:(請勿直接復制下面)
String str = "{\"specItem\":\"[紅, 大]\",\"specName\":\"顏色, 尺寸\",\"goodsPrice\":2,\"stock\":0}";
- json轉化
以下是錯誤示范
Map<String,String> map = (Map<String,String>) JSON.parse(s);
- 獲取數據
int stock = Integer.parseInt(map.get("stock"));
此時會報錯
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
- 坑的原因
通過JSON.parse()獲得的Map,我們打印就能看出來
{"stock":1,"specItem":"[紅, 大]","specName":"顏色, 尺寸","goodsPrice":1}
我們可以看到,對於stock來說,他的值並不是字符串"1"
,而是1
;,直接將其轉化為String的時候就會報錯
相當於寫了一個String str = 1;
- 解決方法
所以我們不能使用(Map<String,String>) JSON.parse(s);來強轉
而應該使用(Map<String,Object>) JSON.parse(s);
之后在獲取值的時候,調用toString()將其轉化為String
int stock = Integer.parseInt(map.get("stock").toString);