jsonobject如何转map对象?Java 如何遍历JsonObject对象?

阳光 2021-11-12 18:29:25 java常见问答 6047

JsonObject 就是常说的 json。是一种重要的数据传输对象。在实际工作中,我们经常会使用jsonobject与map进行转换,那jsonobject如何转map对象?下面来我们就来给大家讲解一下。

1.jsonObject 转 map

相关jar包:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

代码:

JSONObject user = resJson.getJSONObject("user");
MapuserMap = new HashMap < > ();
//循环转换
for (Map.Entryentry: user.entrySet())
{
    userMap.put(entry.getKey(), entry.getValue());
}
System.out.println("map对象:" + userMap.toString());

2.map 转 jsonObject

代码:

//map对象
Mapdata =new HashMap<>();
String x =JSONObject.toJSONString(data);
System.out.println("json字符串:"+x);
Java 如何遍历JsonObject对象?

方法:

Iterator iter = jsonInfo.entrySet().iterator();

代码示例:

public class Test
{
    public static void main(String[] args)
    {
        JSONObject jsonInfo = new JSONObject();
        String key1 = "a";
        jsonInfo.put(key1, "aa");
        String key2 = "b";
        jsonInfo.put(key2, "bb");
        Iterator iter = jsonInfo.entrySet()
            .iterator();
        while (iter.hasNext())
        {
            Map.Entry entry = (Map.Entry) iter.next();
            System.out.println(entry.getKey()
                .toString());
            System.out.println(entry.getValue()
                .toString());
        }
    }
}

补充:java生成json格式数据 和 java遍历json格式数据

java 生成json 格式的数据,在需要加入一个创建json的jar包,这个网上有好多,我使用的是org.json的jar包

package com.dufy.javatojson;
import java.util.Iterator;
import javax.sound.midi.Synthesizer;
import org.json.JSONArray;
import org.json.JSONObject;
public class TraverseJson
{
    /**
    * 遍历json格式数据
    * @param json
    * @return
    */
    public static Object traveseJson(Object json)
    {
        if (json == null)
        {
            return null;
        }
        if (json instanceof JSONObject)
        { //json 是一个map
            //创建一个json对象
            JSONObject jsonObj = new JSONObject();
            //将json转换为JsonObject对象
            JSONObject jsonStr = (JSONObject) json;
            //迭代器迭代 map集合所有的keys
            Iterator it = jsonStr.keys();
            while (it.hasNext())
            {
                //获取map的key
                String key = (String) it.next();
                //得到value的值
                Object value = jsonStr.get(key);
                //System.out.println(value);
                //递归遍历
                jsonObj.put(key, traveseJson(value));
            }
            return jsonObj;
        }
        else if (json instanceof JSONArray)
        { // if json 是 数组
            JSONArray jsonAry = new JSONArray();
            JSONArray jsonStr = (JSONArray) json;
            //获取Array 的长度
            int length = jsonStr.length();
            for (int i = 0; i < length; p = ""
                {
                    <= "" >
                    jsonAry.put(traveseJson(jsonStr.get(i)));
                }
                return jsonAry;
            }
            else
            { //其他类型
                return json;
            }
        }
        public static void main(String[] args)
        {
            System.out.println(traveseJson("传入要遍历的json"));
            // 生成的JSON数据1
            // {
            // "QQ":["742981086@qq.com","742981086"],
            // "age":22,
            // "name":"aflyun",
            // "hobby":["编程","看书","徒步","爬山","游泳"],
            // "adderss":{"省份":"广东","市":"惠州","国籍":"中国"}
            // }
            //创建 一个JsonObjec对象
            JSONObject resJsonObj = new JSONObject();
            //姓名
            resJsonObj.put("name", "aflyun");
            //年龄
            resJsonObj.put("age", 22);
            //联系方式
            JSONArray arryQq = new JSONArray();
            arryQq.put("742981086@qq.com")
                .put("742981086");
            resJsonObj.put("QQ", arryQq);
            //地址 map
            JSONObject jsonAdress = new JSONObject();
            jsonAdress.put("国籍", "中国")
                .put("省份", "广东")
                .put("市", "惠州");
            resJsonObj.put("adderss", jsonAdress);
            //生成数组array
            JSONArray jArray = new JSONArray();
            jArray.put("编程")
                .put("看书")
                .put("徒步")
                .put("爬山")
                .put("游泳");
            resJsonObj.put("hobby", jArray);
            System.out.println(resJsonObj);
            System.err.println(traveseJson(resJsonObj));
            //数组类型的json格式数据生成
            //[
            // {"hello":"你好"},
            // [
            // {"在干嘛":"编程"},
            // ["睡觉了吗","没有","不想睡","醒来了"]
            // ]
            //]
            JSONArray retJson = new JSONArray();
            //hello
            JSONObject aJosn = new JSONObject();
            aJosn.put("hello", "你好");
            retJson.put(aJosn);
            //数组在干嘛和睡觉了吗 组装[]
            JSONArray jsa = new JSONArray();
            JSONObject jOne = new JSONObject();
            jOne.put("在干嘛", "编程");
            JSONArray jTwo = new JSONArray();
            jTwo.put("没有")
                .put("不想睡")
                .put("");
            JSONObject jOne1 = new JSONObject("醒来了");
            jOne1.put("睡觉了吗", jTwo);
            jsa.put(jOne)
                .put(jOne1);
            //将组装好的数据放入要返回的json数组中
            retJson.put(jsa);
            System.out.println("------" + retJson);
            System.err.println("------" + traveseJson(retJson));
        }
    }

通过运行上面的代码就能生成我们想要的json格式的数据,如下所示:

{"QQ":["742981086@qq.com","742981086"],"age":22,"name":"aflyun","hobby":["编程","看书","徒步","爬山","游泳"],"adderss":{"省份":"广东","市":"惠州","国籍":"中国"}}
------[{"a":"a"},[{"b":"b"},{"c":[1,2,3]}]]
{"QQ":["742981086@qq.com","742981086"],"name":"aflyun","age":22,"hobby":["编程","看书","徒步","爬山","游泳"],"adderss":{"省份":"广东","市":"惠州","国籍":"中国"}}
------[{"a":"a"},[{"b":"b"},{"c":[1,2,3]}]]

这样举一反三之后,就可以生成我们想要的其他的json数据格式了,json是开发过程经常使用的工具,有关它的转换大家一定要掌握!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

json格式和xml格式区别是什么?有哪些优缺点?

geojson格式规范是怎样的?geojson格式规范说明

java系统找不到指定路径原因是什么?怎么解决?