Java中json字符串转换成maplist

该博客介绍了如何使用Java将以'{'开头的JSON字符串转换为Map,以及将以'['开头的JSON字符串转换为List。同时展示了如何在Map和List之间进行转换。提供的代码示例详细解释了转换过程,并通过实际运行输出展示了转换结果。

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;

public class JsonStr2MapOrList {

?? ?/**
?? ? * 以"{"开头的jsonStr转map,map里面有list,list里面还装有map
?? ? */
?? ?@SuppressWarnings("rawtypes")
?? ?public static Map<String, Object> jsonStr2Map(String jsonStr) throws Exception {
?? ??? ?Map<String, Object> map = new HashMap<String, Object>();
?? ??? ?if (!jsonStr.isEmpty()) {
?? ??? ??? ?JSONObject json = new JSONObject(jsonStr);
?? ??? ??? ?Iterator i = json.keys();
?? ??? ??? ?while (i.hasNext()) {
?? ??? ??? ??? ?String key = (String) i.next();
?? ??? ??? ??? ?String value = json.getString(key);
?? ??? ??? ??? ?if (value.indexOf("{") == 0) {
?? ??? ??? ??? ??? ?map.put(key.trim(), jsonStr2Map(value));
?? ??? ??? ??? ?} else if (value.indexOf("[") == 0) {
?? ??? ??? ??? ??? ?map.put(key.trim(), jsonStr2List(value));
?? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ?map.put(key.trim(), value.trim());
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return map;
?? ?}

?? ?/**
?? ? * 以"["开头的String转list,list里装有map
?? ? */
?? ?public static List<Map<String, Object>> jsonStr2List(String jsonStr) throws Exception {
?? ??? ?List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
?? ??? ?JSONArray ja = new JSONArray(jsonStr);
?? ??? ?for (int j = 0; j < ja.length(); j++) {
?? ??? ??? ?String jm = ja.getString(j);
?? ??? ??? ?if (jm.indexOf("{") == 0) {
?? ??? ??? ??? ?Map<String, Object> m = jsonStr2Map(jm);
?? ??? ??? ??? ?list.add(m);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return list;
?? ?}

?? ?/**
?? ? * jsonStr和Map之间的转换, jsonStr和List之间的转换
?? ? *?
?? ? * @param args
?? ? * @throws Exception
?? ? */
?? ?public static void main(String[] args) throws Exception {
?? ??? ?// 1.jsonStr和Map之间的转换
?? ??? ?Map<String, Object> map = new HashMap<String, Object>();
?? ??? ?map.put("key1", "val1");
?? ??? ?map.put("key2", "val2");

?? ??? ?List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
?? ??? ?Map<String, Object> map1 = new HashMap<String, Object>();
?? ??? ?Map<String, Object> map2 = new HashMap<String, Object>();
?? ??? ?map1.put("key11", "val11");
?? ??? ?map1.put("key21", "val21");
?? ??? ?map2.put("key111", "val111");
?? ??? ?map2.put("key211", "val211");
?? ??? ?list.add(map1);
?? ??? ?list.add(map2);
?? ??? ?map.put("keyList", list);

?? ??? ?System.out.println("原始的map:" + map);
?? ??? ?String map2JsonStr = map.toString();
?? ??? ?System.out.println("map2JsonStr:" + map2JsonStr);
?? ??? ?Map<String, Object> jsonStr2Map = jsonStr2Map(map2JsonStr);
?? ??? ?System.out.println("jsonStr2Map:" + jsonStr2Map);

?? ??? ?// 2.jsonStr和List之间的转换
?? ??? ?List<Object> list_ = new ArrayList<Object>();
?? ??? ?list_.add(map);
?? ??? ?String list_Str = list_.toString();
?? ??? ?System.out.println("list_Str:" + list_Str);
?? ??? ?List<Map<String, Object>> listM = jsonStr2List(list_Str);
?? ??? ?System.out.println("listM:" + listM);

?? ?}

}

输出结果:

原始的map:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
map2JsonStr:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
jsonStr2Map:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
list_Str:[{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}]
listM:[{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}]


小贴士:作者正在持续更新中,请稍后。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值