JSON.isValid(String str)、JSON.isValidObject(String str)、JSON.isValidArray(String str)均已过时并存在Bug,FastJson 1.2.60新增加一个高性能校验JSON字符串的API,还在验证阶段。支持输入类型是字符串、byte数组、InputStream、Reader。
参考:https://github.com/alibaba/fastjson/wiki/JSONValidator
JSONValidator API
package com.alibaba.fastjson;
public abstract class JSONValidator {
// 支持输入类型是utf8编码的byte[]、String、InputStream、Reader
public static JSONValidator fromUtf8(byte[] jsonBytes)
public static JSONValidator fromUtf8(InputStream is)
public static JSONValidator from(String str)
public static JSONValidator from(Reader r)
public boolean validate();
}
JSON字符串校验
String jsonStr = ...
JSONValidator validator = JSONValidator.from(jsonStr);
boolean valid = validator.validate();
UTF8 byte数组校验
输入参数是byte[]时,只支持UTF8编码
byte[] jsonBytes = ...
JSONValidator validator = JSONValidator.fromUtf8(jsonBytes);
boolean valid = validator.validate();
InputStream校验
输入参数是InputSteam时,只支持UTF8编码
InputStream is = ...
JSONValidator validator = JSONValidator.fromUtf8(is);
boolean valid = validator.validate();
Reader校验
Reader r = ...
JSONValidator validator = JSONValidator.from(r);
boolean valid = validator.validate();