关联json与hashmap

本文介绍了一种将JSON字符串解析为HashMap的方法,适用于Java环境。该方法能处理多种JSON元素类型,包括基本数据类型、JSONObject及JSONArray等,并将其转换为HashMap及其集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//

public static HashMap<String, Object> parseJsonFinal(String json) {

HashMap<String, Object> map = new HashMap<String, Object>();
try {
JSONObject object = new JSONObject(json);
@SuppressWarnings("unchecked")
Iterator<String> iterator = object.keys();
while (iterator.hasNext()) {
String key = (String) iterator.next();
Object obj = object.get(key);
if (obj instanceof String || obj instanceof Integer
|| obj instanceof Boolean || obj instanceof Double) {
String value = obj.toString();
map.put(key, value);
} else if (obj instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) obj;
ArrayList<HashMap<String, Object>> mapList = new ArrayList<HashMap<String, Object>>();
int m = jsonArray.length();
if (m > 0) {
for (int j = 0; j < m; j++) {
JSONObject o = jsonArray.getJSONObject(j);
mapList.add(getMapFromJsonObject(o));
}
}
map.put(key, mapList);
} else if (obj instanceof JSONObject) {
// mapList.add(getMapFromJsonObject(o));
map.put(key, getMapFromJsonObject((JSONObject) obj));
} else if (obj instanceof Object[]) {


}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map;

  }


//解析jsonObject

public static HashMap<String, Object> getMapFromJsonObject(JSONObject object) {
HashMap<String, Object> map = new HashMap<String, Object>();
@SuppressWarnings("unchecked")
Iterator<String> iterator = object.keys();
while (iterator.hasNext()) {
String key = (String) iterator.next();
try {
Object obj = object.get(key);
if ((obj instanceof String) || obj instanceof Double
|| obj instanceof Float || (obj instanceof Integer)
|| (obj instanceof Boolean)) {
String value = obj.toString();
map.put(key, value);
} else if (obj instanceof JSONObject) {
// mapList.add(getMapFromJsonObject(o));
map.put(key, getMapFromJsonObject((JSONObject) obj));
} else if (obj instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) obj;
ArrayList<String> mapList = new ArrayList<String>();
ArrayList<HashMap<String, Object>> mapList1 = new ArrayList<HashMap<String, Object>>();
boolean isobj = true;
int m = jsonArray.length();
if (m > 0) {
for (int j = 0; j < m; j++) {
// JSONObject o = jsonArray.getJSONObject(j);
if (jsonArray.get(j) instanceof JSONObject) {
isobj = false;
mapList1.add(getMapFromJsonObject(jsonArray
.getJSONObject(j)));
} else {
mapList.add(jsonArray.get(j) + "");
isobj = true;
}
}
}
if (isobj)
map.put(key, mapList);
else
map.put(key, mapList1);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
  }
return map;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值