j2ee的web项目中什么是转义?你真的了解转义吗?
一、例子1:
我想把“A”原样(是“A”而不是A)放入一个字符串。
String a=" "A" ";
这样会出问题,要么java编译器报错,要么变量a中不是我想要的“A”。
这时候,就要使用转义。
String a=“\“A\””;
但是有人一直都理解错了,以为\的意思就是将其后的字符原样输出,其实错了,错在如下:
①\单独出现,没有任何意义。\"表示双引号,恰巧就是代表”,而不是将其后的“原样输出。
②java的转义字符,只有 \b \t \n \f \r \" \' \\ 8种。即\后也不能随便写东西,写了编译器会报错的。
二、例子2
在html中,如果使用大于号>,或者<,是不会按照自己的预想那样,显示>或者<,因为html会把其认为是html标签。
而要用转义符:
三、json字符串的转义
有如下字符串:
String result=XX // 打断点查看test的值是{ "data":" {"name":"jams"}" }
这不是一个标准的json格式。
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(result);
编译是不会报错的,但是运行readTree这一句时,会报错,因为result不是一个标准的json字符串。
而将result进行部分转义后:
String result=XX // 打断点查看test的值是{ "data":" {\"name\":\"jams\"}" }
这样运行readTree这一句时,就不会报错。因为readTree认为其是一个标准的json串。
所以,这里转义,是转义给readTree方法看的。即readTree方法中考虑了转义字符,并对转义字符进行特殊看待。
总结:
转义符的意思是,当给java什么却不显示什么(或者说想显示什么,却显示不出来)的情况下,就要考虑使用转义字符。
所以,转义,是转给谁看的?
答:谁负责解析,就转给谁看。如java编译器、html解析器(即浏览器都自带html解析器)、json数据处理中的ObjectMapper类的readTree方法