java json解析

作者: 万里无风来 | 来源:发表于2019-10-19 16:22 被阅读0次

1.以下是我封装的java类

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
 * 
 * @author HeYunLai
 * json工具类
 */
public class MissLiJsonUtil {
    
    /**
     * 
     * @param jsonData 字符串,格式如{"key":"val",,,}
     * @return 根据传入json决定 Object
     */
    public static Map jsonStringToMap(String jsonData) throws Exception{
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        Map<String,Object> hashMap = new HashMap<String,Object>();
        for(String key : jsonObject.keySet()){
            hashMap.put(key, jsonObject.getString(key));
        }
        return hashMap;
    }
    
    /**
     * @param jsonData,格式如:[string,string,string]或[int,int,int,int]
     * @return List<String>或List<Integer>
     * @throws Exception
     */
    public static List arrayStringToList(String jsonData)throws Exception{
        JSONArray parseArray = JSON.parseArray(jsonData);
        List<Object> list = new ArrayList<Object>();
        for(Object object:parseArray){
            list.add(object);
        }
        return list;
    }
    
    /**
     * 
     * @param jsonData 嵌套的json数组,举个栗子:如传入[{},{}],则返回List<Map<>>,[]内可嵌套[]或{}
     * @return 由传入jsonData决定
     * @throws Exception
     */
    public static List arrayNestArrayStringToList(String jsonData)throws Exception {
        JSONArray parseArray = JSON.parseArray(jsonData);
        List<Object> list= (List<Object>) recursiveTo(parseArray);
        return list;
    }
    
    /**
     * 
     * @param jsonData 字符串,格式如{key:{},key:{}},{}内可嵌套,[]或{}
     * @return 由传入jsonData决定
     */
    public static Map jsonNestJsonStringToMap(String jsonData)throws Exception {
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        Map<String,Object> hashMap = (Map<String, Object>) recursiveTo(jsonObject);
        return hashMap;
    }
    
    /**
     * 递归解析
     * @param object
     * @return
     */
    private static Object recursiveTo(Object object)throws Exception {
        if(object instanceof JSONObject){
            Map<String, Object> map = new HashMap<>();
            for(String key : ((JSONObject) object).keySet()){
                map.put(key, recursiveTo(((JSONObject) object).get(key)));
            }
            return map;
        }else if(object instanceof JSONArray){
            List<Object> list = new ArrayList<>();
            for(Object object2 : (JSONArray)object){
                list.add(recursiveTo(object2));
            }
            return list;
        }else{
            return object;
        }
    }
    
    /**
     * 示例
     * 测试
     * @throws Exception
     */
    public static void test() throws Exception{
        List<String> list = MissLiJsonUtil.arrayStringToList("['1','2','3']");
        Map<String,String> map = MissLiJsonUtil.jsonStringToMap("{\"he\":\"MissLi\"}");

        List<Map<String,List<Map<String, String>>>> list2 = MissLiJsonUtil.arrayNestArrayStringToList("[{\"he\":[{\"li\":\"Miss\"}]}]");
        Map<String, List<String>> map2 = MissLiJsonUtil.jsonNestJsonStringToMap("{\"he\":[\"MissLi\"]}");
        
        for(int i = 0;i < list2.size();i++){
            for (int j = 0; j < list2.get(i).get("he").size(); j++) {
                System.out.println(list2.get(i).get("he").get(i).get("li"));
            }   
        }
        
        System.out.println(map2.get("he").get(0));
    }

}

相关文章

  • Spring Boot的Json解析方案

    Spring Boot的Json解析方案 1.JSon @ResponseBody 使java对象返回为Json数...

  • Fastjson

    Fastjson是基于Java开发的JSON解析器和生成器,是Alibaba开源的JSON解析库。 支持解析JSO...

  • 菜鸟笔记(五) - 常见传输格式解析

    本文将介绍使用Java解析json和生成json,解析xml以及生成xml的一些方法。 前提摘要:JSON和XML...

  • @SerializedName注解

    在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。G...

  • Fastjson反序列化漏洞利用

    前言 Fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Be...

  • Json解析(使用Gson)

    Json的解析成 java 对象 Gson gson = new Gson(); // 将json 转化成 j...

  • bom报头错误

    android解析json出错:JSONException: Value of type java.lang.St...

  • Gson

    谷歌对于JSON解析提供了一个开源框架称为GSON,相比于Java的Json要简单的多 解析 反向操作

  • fastjson 反序列化远程代码执行漏洞复现

    漏洞概述: fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java...

  • JAVA小记--gson 使用

    Json解析是Server Api通信中常用的方式,如何正确解析json往往带来一些苦难,许久不用java,以前写...

网友评论

    本文标题:java json解析

    本文链接:https://www.haomeiwen.com/subject/prvgmctx.html