首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java解析json字符串和json对象

Java解析json字符串和json对象

作者头像
静谧星空TEL
发布2021-04-27 12:28:06
发布2021-04-27 12:28:06
4.7K00
代码可运行
举报
运行总次数:0
代码可运行

一、引入jar包

json常用的解析jar包有三种:Google、Alibaba、json官方

本篇介绍的是json官方的 org.json下的 json-20200518.jar包

代码语言:javascript
代码运行次数:0
运行
复制
      org.json
      json
      20200518
    
    
    
      com.google.code.gson
      gson
      2.8.6
    
    
    
      com.alibaba
      fastjson
      1.2.72

二、API使用

(1)待解析的json字符串

json在线解析:https://www.sojson.com/

代码语言:javascript
代码运行次数:0
运行
复制
String source = "{\"tSpeakUrl\":\"http://openapi.youdao.com/ttsapi?q=Brofjorden&langType=zh-CHS&sign=BDB192C3B71100805BE44500E1B9C8B1&salt=1594364869753&voice=4&format=mp3&appKey=2fddf5eb3360f6c6\",\"RequestId\":\"d596183f-ceb9-460d-864d-f8c41f7d950e\",\"web\":[{\"value\":[\"布罗夫约尔丹\",\"布罗福德港\",\"布罗弗约登\",\"港口名\"],\"key\":\"Brofjorden\"}],\"query\":\"Brofjorden\",\"translation\":[\"Brofjorden\"],\"errorCode\":\"0\",\"dict\":{\"url\":\"yddict://m.youdao.com/dict?le=eng&q=Brofjorden\"},\"webdict\":{\"url\":\"http://m.youdao.com/dict?le=eng&q=Brofjorden\"},\"l\":\"en2zh-CHS\",\"isWord\":false,\"speakUrl\":\"http://openapi.youdao.com/ttsapi?q=Brofjorden&langType=en&sign=BDB192C3B71100805BE44500E1B9C8B1&salt=1594364869753&voice=4&format=mp3&appKey=2fddf5eb3360f6c6\"}\n";

(2)创建 JSONObject 对象

代码语言:javascript
代码运行次数:0
运行
复制
JSONObject jsonObject = new JSONObject(source);

(3)JSONObject 转 Map

代码语言:javascript
代码运行次数:0
运行
复制
 Map jsonMap = jsonObject.toMap();

(4)遍历Map

代码语言:javascript
代码运行次数:0
运行
复制
    public static void foreachJsonMap(Map jsonMap) {
        // 遍历jsonMap
        Set> set = jsonMap.entrySet();
        set.forEach( entry -> {
            String key = entry.getKey();
            Object valueObj = entry.getValue();
            System.out.println(key + "\t\t" + valueObj);
        });
    }

(5)解析json字符串对象

代码语言:javascript
代码运行次数:0
运行
复制
    public static Map jsonObjectToMap(Object object) {
        String source = object.toString().substring(1,object.toString().length()-1).replace("=",":");
        JSONObject jsonObject = new JSONObject(source);
        Map objectMap = jsonObject.toMap();
        objectMap.forEach((key,value) -> System.out.println(key + "\t" + value));
        return objectMap;
    }

三、测试代码

代码语言:javascript
代码运行次数:0
运行
复制
import org.json.JSONObject;

import java.util.Map;
import java.util.Set;

public class JsonUtil {

    public static void main(String[] args) {
        String source = "{\"tSpeakUrl\":\"http://openapi.youdao.com/ttsapi?q=Brofjorden&langType=zh-CHS&sign=BDB192C3B71100805BE44500E1B9C8B1&salt=1594364869753&voice=4&format=mp3&appKey=2fddf5eb3360f6c6\",\"RequestId\":\"d596183f-ceb9-460d-864d-f8c41f7d950e\",\"web\":[{\"value\":[\"布罗夫约尔丹\",\"布罗福德港\",\"布罗弗约登\",\"港口名\"],\"key\":\"Brofjorden\"}],\"query\":\"Brofjorden\",\"translation\":[\"Brofjorden\"],\"errorCode\":\"0\",\"dict\":{\"url\":\"yddict://m.youdao.com/dict?le=eng&q=Brofjorden\"},\"webdict\":{\"url\":\"http://m.youdao.com/dict?le=eng&q=Brofjorden\"},\"l\":\"en2zh-CHS\",\"isWord\":false,\"speakUrl\":\"http://openapi.youdao.com/ttsapi?q=Brofjorden&langType=en&sign=BDB192C3B71100805BE44500E1B9C8B1&salt=1594364869753&voice=4&format=mp3&appKey=2fddf5eb3360f6c6\"}\n";
        System.out.println(source);

        // 创建json对象
        JSONObject jsonObject = new JSONObject(source);
        // json对象转map
        Map jsonMap = jsonObject.toMap();

        // 根据key返回value值
        Object web = jsonMap.get("web");
        System.out.println(web);

        // 遍历json
        System.out.println("\n=======================================================================================================================================\n");
        foreachJsonMap(jsonMap);
    }

    public static void foreachJsonMap(Map jsonMap) {
        // 遍历jsonMap
        Set> set = jsonMap.entrySet();
        set.forEach( entry -> {
            String key = entry.getKey();
            Object valueObj = entry.getValue();
            System.out.println(key + "\t\t" + valueObj);
            if(key.equals("web")){
//                jsonObjectToMap(valueObj);
            }
        });
    }

    /**
     * 解析json字符串里的对象,放回 Map
     * @param object
     * @return Map
     */
    public static Map jsonObjectToMap(Object object) {
        String source = object.toString().substring(1,object.toString().length()-1).replace("=",":");
        JSONObject jsonObject = new JSONObject(source);
        Map objectMap = jsonObject.toMap();
        objectMap.forEach((key,value) -> System.out.println(key + "\t" + value));
        return objectMap;
    }

}

四、运行效果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引入jar包
  • 二、API使用
  • 三、测试代码
  • 四、运行效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档