Java中如何将json字符串转换成map/list

目录
  • 将json字符串转换成map/list
  • 字符串,json,Map互相转换(各种转换都有)
    • 前提:使用jar包为fastjson
    • 程序如下

将json字符串转换成map/list

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}]}]

字符串,json,Map互相转换(各种转换都有)

前提:使用jar包为fastjson

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

程序如下

        Map map = new HashMap();
        map.put("AAA", "1");
        map.put("BBB", "2");
        map.put("CCC", "3");
        System.out.println("map=>"+map);
        
        //1.map转string
        String jsonString = JSON.toJSONString(map);
        System.out.println("mapToString=>"+jsonString);
        //2.map转jsonObject 
        JSONObject JSONObj = JSONObject.parseObject(JSON.toJSONString(map));
        System.out.println("mapToJSON=>"+JSONObj);
        
        //3.String转jsonObject
        String jsonString2 = "{\"AAA\":\"1\",\"CCC\":\"3\",\"BBB\":\"2\"}";
        JSONObject parseObject = JSONObject.parseObject(jsonString2);
        System.out.println("StringToJson=>"+parseObject);
        //4.String转map
        Map stringToMap =  JSONObject.parseObject(jsonString2); 
        System.out.println("StringToMap=>"+stringToMap);
        
        String str = "{\"age\":\"24\",\"name\":\"summer\"}";
        JSONObject  jsonObject = JSONObject.parseObject(str);
        //5.jsonObject转map
        Map jsonToMap =  JSONObject.parseObject(jsonObject.toJSONString()); 
        System.out.println("jsonToMap=>"+jsonToMap);
        //6.jsonObject转String
        String jsonString3 = jsonObject.toJSONString();
        System.out.println("jsonToString=>"+jsonString3);

结果如下

map=>{AAA=1, CCC=3, BBB=2}
mapToString=>{"AAA":"1","CCC":"3","BBB":"2"}
mapToJSON=>{"AAA":"1","CCC":"3","BBB":"2"}
StringToJson=>{"AAA":"1","CCC":"3","BBB":"2"}
StringToMap=>{"AAA":"1","CCC":"3","BBB":"2"}
jsonToMap=>{"name":"summer","age":"24"}
jsonToString=>{"name":"summer","age":"24"}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java代码实现Map和Object互转及Map和Json互转

    先给大家介绍下map和object互相转换的代码. 具体代码如所示: /** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newI

  • JAVA中JSONObject对象和Map对象之间的相互转换

    1.由json字符串转换成Map对象 如json字符串:{"contend":[{"bid":"22","carid":"0"},{"bid":"22","carid":"0"}],"result":100,"total":2} 下面直接附代码: //json字符串 String json

  • java json与map互相转换的示例

    第一种 1.准备工作 所需jar包:json-20180130.jar 2.json转map 用法:JSONObject.toMap(); 3.map转json 用法:new JSONObject(map); 4.举例说明 public static void main(String[] args) { JSONObject jo = new JSONObject(); jo.put("method_code", "JMJKK0101"); jo.put("

  • Json字符串与Object、List、Map的互转工具类

    package com.cq2022.zago.base.util; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonFactory; import org.codehau

  • Java中如何将json字符串转换成map/list

    目录 将json字符串转换成map/list 字符串,json,Map互相转换(各种转换都有) 前提:使用jar包为fastjson 程序如下 将json字符串转换成map/list import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.codehaus.jettison.jso

  • 将JSON字符串转换成Map对象的方法

    页面向后台action传递一个json字符串,需要将json字符串转换成Map对象 public Map<String, String> toMap(Object object) { Map<String, String> data = new HashMap<String, String>(); // 将json字符串转换成jsonObject JSONObject jsonObject = JSONObject.fromObject(object); Iterato

  • java的Jackson将json字符串转换成泛型List

    Jackson,我感觉是在Java与Json之间相互转换的最快速的框架,当然Google的Gson也很不错,但是参照网上有人的性能测试,看起来还是Jackson比较快一点 Jackson处理一般的JavaBean和Json之间的转换只要使用ObjectMapper 对象的readValue和writeValueAsString两个方法就能实现.但是如果要转换复杂类型Collection如 List<YourBean>,那么就需要先反序列化复杂类型 为泛型的Collection Type. 如果

  • 使用JSON.parse将json字符串转换成json对象的时候会出错

    在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题,所以要在输出到页面进行json对象转换之前将一些特殊符合进行编码或转义,下面展示的是C#代码编码和转义几个常用特殊字符.经过笔者测试,将这些符号编码和转义之后,大部分json字符串都可以转换成json对象了.如果遇到个别问题,应朝着这个方向去查找问题. theString = theString

  • js中把JSON字符串转换成JSON对象最好的方法

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析.   第一种解析方式:使用eval函数来解析,并且使用jQuery的each方法来遍历 用jQuery解析JSON数据的方法,作为jQuery异步请求的传输对象,jQuery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里

  • jQuery.parseJSON(json)将JSON字符串转换成js对象

    概述 接受一个JSON字符串,返回解析后的对象. 传入一个畸形的JSON字符串会抛出一个异常.比如下面的都是畸形的JSON字符串: {test: 1} ( test 没有包围双引号) {'test': 1} (使用了单引号而不是双引号) 另外,如果你什么都不传入,或者一个空字符串.null或undefined,parseJSON都会返回 null . 参数 jsonString 要解析的JSON字符串 示例 描述: 解析一个JSON字符串 jQuery 代码: var str = '{"name

  • js中的eval()函数把含有转义字符的字符串转换成Object对象的方法

    在项目中遇到一个问题:在前端需要把后台返回的json字符串转换成一个js中的json对象,可是从后台返回的字符串中含有转义字符:\", 在网上查到方法如下,可以处理这种情况: var page = eval("("+data+")"); 以上这篇js中的eval()函数把含有转义字符的字符串转换成Object对象的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python 将json序列化后的字符串转换成字典(推荐)

    一般而言下面的就可以完成需求了. def convertToDic(data): jsonDic=json.loads(data) return dict(jsonDic) 但实际应用中可能会出现一些问题,因此有时候也可以增加一些异常处理: def convertToDic(data): try: jsonDic=json.loads(data) except json.decoder.JSONDecodeError: jsonDic={} try: dic=dict(jsonDic) exce

  • JS如何把字符串转换成json

    这篇文章主要介绍了JS如何把字符串转换成json,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Json格式字符串 "{"rows":[{"date":"2018-11-19","money":"22","type":"2"}],"currentTime":"2018-11-1

  • java解析多层嵌套json字符串问题

    目录 java分别解析下面两个json字符串 嵌套(任意层)JSON解析转换为Map 源代码 java分别解析下面两个json字符串 package jansonDemo; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class TestJSON { /** * JSON实际上也是键值对("key&qu

随机推荐