json 常用的参数解析方法

谷歌的Gson

依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.2.4</version>
</dependency>

方法:

/**
 * json转成对应类型 [自带静态方法]
 *
 * 参数1:要转换的是json串
 * 参数2:要转换成的类型
 * 返回类型:你要转换的类型
 */
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
    Object object = this.fromJson((String)json, (Type)classOfT);
    return Primitives.wrap(classOfT).cast(object);
}

// 实例
public void fromJsonTest(){
     Gson gson = new Gson();

    String jsonString = "{\"name\":\"Eric\",\"age\":18,\"sex\":\"man\"}";
    Map jsonMap = gson.fromJson(jsonString,Map.class);
    String name2 = jsonMap.get("name").toString();
}

/**
 * 对象转换成json串 [封装方法]
 *
 * 参数1:要转换的对象
 * 参数2:是否序列化
 * 返回类型:JSON字符串
 */
public static String beanToJson(Object obj,boolean serializableFlag) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    if (obj == null) {
	return null;
    }
    // 判断用户是否需要序列化
    if (serializableFlag){
        return   gsonBuilder.serializeNulls().create().toJson(obj);
    }else{
        return   gsonBuilder.create().toJson(obj);
    }       
}

阿里的FastJson

依赖:

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.41</version>
</dependency>

常用方法:

/**
 * json串转换为json对象 [自带静态方法]
 *
 * 参数:String字符串
 * 返回类型:JSONObject对象  (类似于Map,数据以键值对的形式存储在对象中)
 */
public static final JSONObject parseObject(String text) {
    Object obj = parse(text);
    return obj instanceof JSONObject ? (JSONObject)obj : (JSONObject)toJSON(obj);
}

// 实例
public void parseObjectTest(){
    String jsonString = "{\"name\":\"Eric\",\"age\":18,\"sex\":\"man\"}";

    JSONObject jsonObject = JSON.parseObject(jsonString);
    String name = jsonObject.getString("name");
}



/**
 * json串转换为json数组 [自带静态方法]
 *
 * 参数:String字符串
 * 返回类型:JSONObject数组 
 */
public static final JSONArray parseArray(String text) {
    if (text == null) {
        return null;
    } else {
        DefaultJSONParser parser = new DefaultJSONParser(text, ParserConfig.getGlobalInstance());
        JSONLexer lexer = parser.getLexer();
        JSONArray array;
        if (lexer.token() == 8) {
            lexer.nextToken();
            array = null;
        } else if (lexer.token() == 20) {
            array = null;
        } else {
            array = new JSONArray();
            parser.parseArray(array);
            handleResovleTask(parser, array);
        }

        parser.close();
        return array;
    }
}

// 实例
public void parseArrayTest() {
    String jsonList = "[{\"name\":\"Eric1\"},{\"name\":\"Eric2\"}]";
    JSONArray jsonArray = JSON.parseArray(jsonList);   

    if (jsonArray.size()>0){
        for (Object jsonObject:jsonArray){
            JSONObject jsonObject1 = JSON.parseObject(jsonObject.toString());
            String name = jsonObject1.getString("name");
            System.out.println(name);
        }
    }
}

简做总结,各取所需!~

发布了214 篇原创文章 · 获赞 281 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/lk1822791193/article/details/102874795