Java 把json对象转成map键值对的方法

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

maven 引用jar包版本:

<dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20090211</version>
    </dependency> 

工具类:

package com.baofoo.admin.test;
//import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.json.*;
import java.util.*;
/**
 * Created by BF100 on 2018/4/12.
 */
@Slf4j
public class TestByCaoxNew {
  @Test
  public void test1(){
    try{
      int a = 1/0;
    }catch (Exception e){
      log.error("call Exception :{}",e);
      e.printStackTrace();
    }
    System.out.println("come on !!!");
  }
  @Test
  public void test2() throws Exception{
    String str = "{\"result\":\"success\",\"message\":\"成功!\"}";
    String str2 = "{result:success,message:成功}";
//    JSONObject jsStr = JSONObject.parseObject(str);
//    System.out.println(jsStr);
    JSONObject obj = new JSONObject(str);
    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));
    }
  }
  /**
   * @Author:sks
   * @Description:把json对象数据存储在map以键值对的形式存储,只存储叶节点
   * @Date:
   */
  private static void JsonToMap(Stack<JSONObject> stObj, Map<String, Object> resultMap) throws Exception {
    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);
      }
    }
  }
  @Test
  public void test3() throws Exception{
    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));
    }
  }
} 

总结

以上所述是小编给大家介绍的Java 把json对象转成map键值对的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • java利用phantomjs进行截图实例教程

    前言 最近工作中遇到一个需求,需要实现截图功能,断断续续查找资料.验证不同的实现方法终于算基本搞定了页面截图,因为中间过程曲折花费较多时间,分享出来帮助大家快速实现截图 为什么选用phantomjs进行截图 截图可以实现的方式有很多,比如: selenium HtmlUnit Html2Image...and so on但是这些实现的截图效果都不好.selenium只能实现截屏,不能截取整个页面,而HtmlUnit.Html2Image对js的支持效果并不好,截下来的图会有很多空白.phanto

  • Java实现后台发送及接收json数据的方法示例

    本文实例讲述了Java实现后台发送及接收json数据的方法.分享给大家供大家参考,具体如下: 本篇博客试用于编写java后台接口以及两个项目之间的接口对接功能: 具体的内容如下: 1.java后台给指定接口发送json数据 package com.utils; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Htt

  • java的JsonObject对象提取值方法

    实例如下所示: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.models.auth.In; import java.io.IOException; import java.security.KeyManagementException; import java.security.N

  • 详解java爬虫jsoup解析多空格class数据

    在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass("class的值"),这种方法获取不到想要的数据. 1.问题描述: 在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass("class的值"),这种方法获取不到想要的数据. 爬取网站页面结构如下: 2.其中文章列表的div为:<div class="

  • java 读取excel文件转换成json格式的实例代码

    需要读取excel数据转换成json数据,写了个测试功能,转换正常: JSON转换:org.json.jar 测试类:  importFile.java: package com.siemens.util; import java.util.ArrayList; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import org.apache.poi.ss.usermodel.R

  • Java工具jsch.jar实现上传下载

    在做运维的时候,我们一般使用shell脚本实现文件的服务器之间定时传输,那么对于一些不会shell脚本的童鞋,就得使用万能的编程语言了,这里我们介绍一款Java操作ftp的工具,那就是jsch.jar.工具已经写好,可以根据实际情况做调整,注释很清晰.大家按需阅读: package com.wdy.tools.utils.sftputil; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput

  • Java实现的JSONUtil工具类与用法示例

    本文实例讲述了Java实现的JSONUtil工具类与用法.分享给大家供大家参考,具体如下: import java.util.HashMap; import java.util.Map; import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class JSONUtils { /** * Bean对象转J

  • 解决JavaWeb读取本地json文件以及乱码的问题

    最近在开发项目的时候遇到一个问题,在myecilpes上使用googlede gson读取项目中的json文件成功,然后把项目发布到tomcat上再使用同样的方法,会提示"系统找不到指定的路径" 文件放在src/config/下 JsonParser parser = new JsonParser(); JsonObject object = (JsonObject) parser.parse(new FileReader("config/Test.json"));

  • Java执行JS脚本工具

    Java 执行 JS 脚本工具 用途:为了便于系统扩展,提供了 JS 脚本的功能,可以通过在系统中执行脚本来获得更复杂的功能. 例如:系统提供了一个接口,这个接口不必非的有实现类,而是可以通过JS来实现这个接口的方法,在运行时载入JS脚本去实现.只要能融会贯通,可用的地方还是很多的. 先看最基础的一个工具类 实际上有这么一个工具类就足够了,后面讲的例子也是基于这个工具类的. 这段代码的原理: 由于在 Java 的 javascript 引擎中,常用的List,Map等复杂对象的 属性值 不能在

  • Java读取本地json文件及相应处理方法

    如下所示: //读取json文件地址 /* String path = getClass().getClassLoader().getResource("menu.json").toString(); path = path.replace("\\", "/"); if (path.contains(":")) { path = path.replace("file:/", ""); }

随机推荐