Form转为json字符串后,后台ObjectMapper.readValue(String json, Class<T> valueType):读取json转为Object或Array 时,其间:json中可能含有非标准JSON的字符,如:tab、换行符、结束语符、注释符等控制字符。这样读取时,会抛出异常。字符可分为:控制字符(ASCII码<32的字符)、可显示字符。ASCII码对照表参考:http://tools.jb51.net/table/ascii
解决方法:ObjectMapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true)。Feature是个枚举类,枚举出JSON可能出现的特殊字符。以下是对Feature的源码理解:
package jackson.parser;
/**
* jackson的ObjectMapper读取json中的转义字符<br>
* 注意问题:<br>
* 1.Feature是com.fasterxml.jackson.core.JsonParser的内部类<br>
* 2.JSON的标准格式:http://www.json.org/
* @author TCM
* @create 2017年3月30日下午4:16:06
*/
public class JackJsonESC {
/**
* 枚举类定义所有开/关的解析器
* Enumeration that defines all on/off features for parsers.
*/
public enum Feature {
// // // Low-level I/O handling features:支持低级I/O操作特性
/**
* 自动关闭源:默认true_启用(即:解析json字符串后,自动关闭输入流)<br>
* 该特性,决定了解析器是否可以自动关闭非自身的底层输入源<br>
* 1.禁用:应用程序将分开关闭底层的{@link InputStream} and {@link Reader}<br>
* 2.启用:解析器将关闭上述对象,其自身也关闭,此时input终止且调用{@link JsonParser#close}<br>
*/
AUTO_CLOSE_SOURCE(true),
// // // Support for non-standard data format constructs:支持非标准数据格式的json