博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断一个字符串是否是合法的JSON字符串
阅读量:4217 次
发布时间:2019-05-26

本文共 2615 字,大约阅读时间需要 8 分钟。

判断一个字符串是否是合法的JSON字符串

pom.xml

com.alibaba
fastjson
1.2.31
com.fasterxml.jackson.core
jackson-databind
2.7.0
com.google.code.gson
gson
2.5

java代码

/**     * 暴力解析:Alibaba fastjson     * @param test     * @return     */    public final static boolean isJSONValid(String test) {        try {            JSONObject.parseObject(test);        } catch (JSONException ex) {            try {                JSONObject.parseArray(test);            } catch (JSONException ex1) {                return false;            }        }        return true;    }    /**     *  Jackson library     * @param jsonInString     * @return     */    public final static boolean isJSONValid2(String jsonInString ) {        try {            final ObjectMapper mapper = new ObjectMapper();            mapper.readTree(jsonInString);            return true;        } catch (IOException e) {            return false;        }    }    /**     * Google Gson     * @param jsonInString     * @return     */    public final static boolean isJSONValid3(String jsonInString) {        try {            gson.fromJson(jsonInString, Object.class);            return true;        } catch(JsonSyntaxException ex) {            return false;        }    }

测试结果

isJSONValid() 16510 ms 16161 ms 2018 ms
isJSONValid2() 17946 ms 17486 ms 2698 ms
isJSONValid3() 20648 ms 20208 ms 2508 ms

区别

/**     * 是否是合法的Gson字符串     * @param targetStr     * @return     */    private static boolean isGoodGson(String targetStr,Class clazz) {        if(StringUtils.isBlank(targetStr)){            return false;        }        try {            new Gson().fromJson(targetStr,clazz);            return true;        } catch(JsonSyntaxException ex) {            LOG.error("targetStr={} is not a valid {}",targetStr,clazz.getName(),ex);            return false;        }    }    /**     * 是否是合法的JsonArray (alibaba 认为前1种不是JSON串)     * 例如:[{a:b}]  [{'a':'b'}]  [{"a":"b"}]     * @param targetStr     * @return     */    public static boolean isJsonArray(String targetStr){      return isGoodGson(targetStr,JsonArray.class);    }    /**     * 是否是合法的JsonObject(alibaba 认为前1种不是JSON串)     * 例如:{a:b} {'a':'b'} {"a":"b"}     * @param targetStr     * @return     */    public static boolean isJsonObject(String targetStr){        return isGoodGson(targetStr,JsonObject.class);    }

结论

性能相差不太多,推荐方式二isJSONValid2()

参考

转载地址:http://eqnmi.baihongyu.com/

你可能感兴趣的文章
驴妈妈管理的一点经验总结
查看>>
IOS开发学习的好资料大搜藏
查看>>
SSH的认证终结(无需密码的git操作或者ssh链接无需密码)
查看>>
Jetty 的工作原理以及与 Tomcat 的比较
查看>>
ssh-keygen的使用方法 注意权限问题
查看>>
zookeeper的server的集群配置实例[张振华-Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第一篇:互联网时代U盘化生存方式 【张振华.Jack】
查看>>
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第二篇:专注的力量 [张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第三篇:我的舍与得的2014[张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第五篇:不要给自己找任何借口【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第七篇:请留意我们身边的风景 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第八篇:坚持的力量 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第九篇:春节那些事-过年回家不需要理由【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十篇:程序员们请看看外面的世界吧【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十一篇:马云乌镇40分钟演讲实录【张振华.Jack】
查看>>
Java并发编程从入门到精通 张振华.Jack --我的书
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Android中Java代码和XML布局效率问题
查看>>
android TextView属性大全(转)
查看>>