Java将json对象转换为map键值对案例详解

 更新时间:2021年09月01日 09:46:53   作者:shaomine  
这篇文章主要介绍了Java将json对象转换为map键值对案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据

  比如json数据如下:

  {responseHeader:{status:0,QTime:0},spellcheck:{suggestions:{中国:{numFound:9,startOffset:0,endOffset:2,suggestion:[中国工商银行, 中国人民, 中国国际, 中国农业, 中国市场, 中国经济, 中国人, 中国广播, 中国文化]}},collations:{collation:中国工商银行}}}

  如果存储在键值对中,变成如下:

  这样通过map,可以直接获取对应键的数据。具体代码如下:

import org.apache.solr.client.solrj.SolrServerException;

import org.json.*;

import java.io.IOException;
import java.util.*;

/**
 * @Author:sks
 * @Description:
 * @Date:Created in 16:18 2017/12/18
 * @Modified by:
 **/
public class JsontoMap {

    /**
     * @Author:sks
     * @Description:把json对象数据存储在map以键值对的形式存储,只存储叶节点
     * @Date:
     */
    private static void JsonToMap(Stack<JSONObject> stObj, Map<String, Object> resultMap)  throws SolrServerException, IOException {

        if(stObj == null && stObj.pop() == null){
            return ;
        }
        JSONObject json = stObj.pop();
        Iterator it = json.keys();
        while(it.hasNext()){
            String key = (String) it.next();
            //得到value的值
            Object value = json.get(key);
            //System.out.println(value);
            if(value instanceof JSONObject)
            {
                stObj.push((JSONObject)value);
                //递归遍历
                JsonToMap(stObj,resultMap);
            }
            else {
                resultMap.put(key, value);
            }
        }
    }
    public static void main(String []args) throws SolrServerException, IOException{
        String jsonStr ="{responseHeader:{status:0,QTime:0},spellcheck:{suggestions:{中国:{numFound:9,startOffset:0,endOffset:2," +
                "suggestion:[中国工商银行, 中国人民, 中国国际, 中国农业, 中国市场, 中国经济, 中国人, 中国广播, 中国文化]}}," +
                "collations:{collation:中国工商银行}}}";
        JSONObject obj = new JSONObject(jsonStr);
        Stack<JSONObject> stObj = new Stack<JSONObject>();
        stObj.push(obj);
        Map<String, Object> resultMap =new HashMap<String, Object>();
        JsonToMap(stObj,resultMap);
        Set<String> keys = resultMap.keySet();
        for (String key:keys){
            System.out.println(key+":"+resultMap.get(key));
        }

    }
//    输出:
//    endOffset:2
//    startOffset:0
//    QTime:0
//    numFound:9
//    suggestion:["中国工商银行","中国人民","中国国际","中国农业","中国市场","中国经济","中国人","中国广播","中国文化"]
//    collation:中国工商银行
//    status:0

}

到此这篇关于Java将json对象转换为map键值对案例详解的文章就介绍到这了,更多相关Java将json对象转换为map键值对内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA读取二进制文件以及画图教程

    JAVA读取二进制文件以及画图教程

    由于项目需要,需要对二进制文件进行读取,所以这篇文章主要给大家介绍了关于JAVA读取二进制文件以及画图的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • JAVA DOC如何生成标准的JAVA API文档详解

    JAVA DOC如何生成标准的JAVA API文档详解

    这篇文章主要给大家介绍了关于JAVA DOC如何生成标准的JAVA API文档的相关资料,Javadoc是Sun公司提供的一种工具,它可以从程序源代码中抽取类、方法、成员等注释,然后形成一个和源代码配套的API帮助文档,需要的朋友可以参考下
    2024-06-06
  • SpringBoot集成Redisson实现分布式锁的方法示例

    SpringBoot集成Redisson实现分布式锁的方法示例

    这篇文章主要介绍了SpringBoot集成Redisson实现分布式锁的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • springboot实现返回视图而不是string的方法

    springboot实现返回视图而不是string的方法

    这篇文章主要介绍了springboot实现返回视图而不是string的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java集合框架之WeakHashMap详解

    Java集合框架之WeakHashMap详解

    这篇文章主要介绍了Java集合框架之WeakHashMap详解,在 WeakHashMap 中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除,更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,需要的朋友可以参考下
    2023-09-09
  • idea项目代码打包为jar包的超详细步骤

    idea项目代码打包为jar包的超详细步骤

    因为业务开发场景需要,将开发项目中的Java类打成一个jar包引入到外部工具中,下面这篇文章主要给大家介绍了关于idea项目代码打包为jar包的相关资料,需要的朋友可以参考下
    2023-01-01
  • 亲身体验Intellij Idea从卡顿到顺畅全过程

    亲身体验Intellij Idea从卡顿到顺畅全过程

    这篇文章主要介绍了亲身体验Intellij Idea从卡顿到顺畅全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java通过Lambda表达式实现简化代码

    Java通过Lambda表达式实现简化代码

    我们在编写代码时,常常会遇到代码又长又重复的情况,就像调用第3方服务时,每个方法都差不多, 写起来啰嗦, 改起来麻烦, 还容易改漏,所以本文就来用Lambda表达式简化一下代码,希望对大家有所帮助
    2023-05-05
  • JAVA基本概念详解

    JAVA基本概念详解

    本文主要介绍了Java的基本概念。具有很好的参考价值,下面跟着小编一起来看下吧,希望能够给你带来帮助
    2021-11-11
  • SpringCloud Feign远程调用实现详解

    SpringCloud Feign远程调用实现详解

    Feign是Netflix公司开发的一个声明式的REST调用客户端; Ribbon负载均衡、 Hystrⅸ服务熔断是我们Spring Cloud中进行微服务开发非常基础的组件,在使用的过程中我们也发现它们一般都是同时出现的,而且配置也都非常相似
    2022-11-11

最新评论