在xml中,敏感字符是尖括号,在json中,敏感字符是引号,上文中我们介绍了如何处理xml中的敏感字符,本文说说如何处理json中的敏感字符。

思路与上文相同,不再赘述。直接上代码:

json–>javaBean

    @Test
public void test1() {
String json = "{\"id\":\"1\",\"name\":\"红\"楼\"'梦\",\"price\":\"90\",\"author\":\"曹雪芹\"}";
List<String> tags = new ArrayList<String>();
Pattern pattern = Pattern.compile("\\\"([a-zA-Z0-9]*)\\\":");
Matcher m = pattern.matcher(json);
while (m.find()) {
tags.add(m.group(1));
}
for (int i = 0; i < tags.size(); i++) {
json = json
.replaceAll("\\\"" + tags.get(i) + "\\\"",
"^^" + tags.get(i) + "^^")
.replaceAll(":\\\"", ":^^").replaceAll("\\\",", "^^,");
}
json = json.replaceAll("\\\"}", "^^}").replaceAll("\\\"]", "^^]")
.replaceAll("\"", "~~");
json = json.replace("^^", "\"");
ObjectMapper mapper = new ObjectMapper(); try {
Book book = mapper.readValue(json, Book.class);
book.setName(book.getName().replace("~~", "\""));
System.out.println("作者:" + book.getAuthor() + "\n书名:"
+ book.getName());
} catch (IOException e) {
e.printStackTrace();
}
}

json–>List

    @Test
public void test2() {
String json = "[{\"id\":\"1\",\"name\":\"红\"楼\"'梦\",\"price\":\"90\",\"author\":\"曹雪芹\"},{\"id\":\"2\",\"name\":\"西游\"\"记\",\"price\":\"45\",\"author\":\"wuche\"ngen\"}]";
List<String> tags = new ArrayList<String>();
Pattern pattern = Pattern.compile("\\\"([a-zA-Z0-9]*)\\\":");
Matcher m = pattern.matcher(json);
while (m.find()) {
tags.add(m.group(1));
}
for (int i = 0; i < tags.size(); i++) {
json = json
.replaceAll("\\\"" + tags.get(i) + "\\\"",
"^^" + tags.get(i) + "^^")
.replaceAll(":\\\"", ":^^").replaceAll("\\\",", "^^,");
}
json = json.replaceAll("\\\"}", "^^}").replaceAll("\"", "~~");
json = json.replace("^^", "\"");
ObjectMapper mapper = new ObjectMapper(); try {
List<Book> books = mapper.readValue(json,
new TypeReference<ArrayList<Book>>() {
});
for (Book book : books) {
book.setName(book.getName().replace("~~", "\""));
book.setAuthor(book.getAuthor().replace("~~", "\""));
System.out.println("作者:" + book.getAuthor() + "\n书名:"
+ book.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}

这两段关于json的处理基本是一致的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

处理json中影响解析的多余引号的更多相关文章

  1. 处理json中影响解析的多余引號

    在xml中,敏感字符是尖括号,在json中,敏感字符是引號,上文中我们介绍了怎样处理xml中的敏感字符.本文说说怎样处理json中的敏感字符. 思路与上文同样,不再赘述.直接上代码: json–> ...

  2. 在js中把json中的 key去掉双引号的方法

    方法一: //数据格式是这样的: var data = '[{"id":30348079,"name":"表1","score&q ...

  3. python:解析js中常见的 不带引号的key的 json

    首先要明晰一点,json标准中,key是必须要带引号的,所以标准json模块解析不带引号的key的 json就会抛错 不过有一些lib可以帮我们解析 如:demjson(链接) >>> ...

  4. Javascript中eval解析的json的几种用法

    eval解析json字符串可用的三种方式都可以实现... <!DOCTYPE html> <html> <head> <meta charset=" ...

  5. eval解析JSON中的注意点

       在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery ...

  6. jquery eval解析JSON中的注意点介绍

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:使用eval()函数.使用Function对象来进行返回解析,下面有个示例,感兴趣的朋友可以参考下   在JS中将JSON的字符串解析 ...

  7. js中eval详解,用Js的eval解析JSON中的注意点

    先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...

  8. 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中

    http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转 ...

  9. 用Js的eval解析JSON中的注意点

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

随机推荐

  1. /etc/passwd 与 /etc/shadow

    /etc/passwd是用户数据库,其中的域给出了用户名.加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件.影子口令文件将/etc/pas ...

  2. struts2文件下载出现Can not find a java.io.InputStream with the name的错误

    今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...

  3. SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-006-当构造函数有集合时的注入

    一.当构造函数有集合时,只能用<CONSTRUCTOR-ARG>,不能用C-NAMESPACE 二. 1. package soundsystem.collections; import ...

  4. Web安全测试之XSS(转)

    XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...

  5. dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结 (转)

    没想到搞个dom4j会出这么多怪错.. 最近在研究XBRL GL的有关内容,在项目中要求吧XBRL GL导入到11179注册库中,根据11179建立数据库,然后从XBRL GL分类标准中导入数据到数据 ...

  6. BZOJ1935: [Shoi2007]Tree 园丁的烦恼

    1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec  Memory Limit: 357 MBSubmit: 552  Solved: 220[Submit][ ...

  7. java 图片文件格式转换(多页tif转jpg 、jpg转tif)

    package util; import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; ...

  8. 彻底卸载oracle10g

    如果Oracle安装在Windows上,那么删除起来特别麻烦,以下列出具体步骤: 软件环境: Windows 7.ORACLE 10.1.24:ORACLE安装路径为:C:/ORACLE 实现方法: ...

  9. Delphi TcxTreelist 表格左边总是缩进去 ,好像有偏移 解决方法

    1.  TcxTreelist的表格总是总是缩进去,如下效果 : 但是,新建一个没有偏移 ,经过观察,原来在  属性Images造成的,  把imgToolbars去除就可以了. 效果:

  10. 还是畅通工程 --HDOJ 1233

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...