"discount": {
"3": "34",
"4": "33",
"5": "32",
"6": "31",
"7": "35"
},
先看json数据
之前使用的是gson解析,把discount
写成Object格式,但是通过解析之后转成String类型,成为
{3=34, 4=33, 5=32, 6=31, 7=35}
这种明显没有办法解析成map集合
使用原始的Json解析,一层一层的找到这个对象,转成String类型成为
{"3":"34","4":"33","5":"32","6":"31","7":"35"}
这种情况下就可以了 之后是copy的解析方法
第一种方法是
String str = "{\"3\":\"34\", \"4\":\"33\", \"5\":\"32\", \"6\":\"31\", \"7\":\"35\"}";
Map<String,String> map = Json.parseObject(str,Map.class);
第二种是
public class JsonMap {
/**
* 将json 数组转换为Map 对象
* @param jsonString
* @return
*/
public static Map<String, Object> getMap(String jsonString)
{
JSONObject jsonObject;
try
{
jsonObject = new JSONObject(jsonString); @SuppressWarnings("unchecked")
Iterator<String> keyIter = jsonObject.keys();
String key;
Object value;
Map<String, Object> valueMap = new HashMap<String, Object>();
while (keyIter.hasNext())
{
key = (String) keyIter.next();
value = jsonObject.get(key);
valueMap.put(key, value);
}
return valueMap;
}
catch (JSONException e)
{
e.printStackTrace();
}
return null;
}
/**
* 把json 转换为ArrayList 形式
* @return
*/
public static List<Map<String, Object>> getList(String jsonString)
{
List<Map<String, Object>> list = null;
try
{
JSONArray jsonArray = new JSONArray(jsonString);
JSONObject jsonObject;
list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < jsonArray.length(); i++)
{
jsonObject = jsonArray.getJSONObject(i);
list.add(getMap(jsonObject.toString()));
}
}
catch (Exception e)
{
e.printStackTrace();
}
return list;
}
Map<String, Object> map =new ArrayMap<>();
map=JsonMap.getMap(你的json字符串);
这样就可以获取到map集合了
网友评论