欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-16 21:16:28
工具方法: 本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据 maven 引用jar包版本: ...

工具方法: 本文的目的是把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键值对的方法,希望对大家有所帮助