引入依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.5</version>
</dependency>
/**
* 暴力解析: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;
}
}
结论
性能相差不太多,推荐方式二isJSONValid2()