在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. eval解析JSON中的注意点

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

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

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

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

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

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

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

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

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

  7. 玩转Web之Json(一)-----easy ui+ajax + json 中关于Json的解析问题

    在easy ui中使用Ajax+Json实现前后的数据交互时,当后台数据传输到客户端是需对Json数据进行解析,这里将对Json数据解析做简单总结. (一) 对于服务器返回的数据若没有做类型说明,需要 ...

  8. javascript中 json数据的解析与序列化

    首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...

  9. Java中使用org.json和json-lib解析JSON

    文章目录  [隐藏] 一.JavaProject中org.json解析JSON 1.JSON的org.son-api下载 1)JSON网址 2)JSON的java解析org.json-api网址 3) ...

随机推荐

  1. UVA 10718 Bit Mask 贪心+位运算

    题意:给出一个数N,下限L上限U,在[L,U]里面找一个整数,使得N|M最大,且让M最小. 很明显用贪心,用位运算搞了半天,样例过了后还是WA,没考虑清楚... 然后网上翻到了一个人家位运算一句话解决 ...

  2. EasyUI DataGrid 中字段 formatter 格式化不起作用

    今天用 EasyUI datagrid 来做列表,要对一些数据进行格式化,推断某字段状态时,发现 formatter 格式化相应的函数不起作用. <table id="list_dat ...

  3. Codeforces Round #270--B. Design Tutorial: Learn from Life

    Design Tutorial: Learn from Life time limit per test 1 second memory limit per test 256 megabytes in ...

  4. 用python将SQL格式文件改成自己想要的格式

    INSERT INTO TTT (NSAME, ID, AGE) VALUES ('AAA', '201023210816', '22'); 将上面的SQL格式改成以下的格式 AAA|20102321 ...

  5. heap表和iot表排序规则不同

    heap 和iot 对比 OBJECT_NAME OBJECT_TYPE --------------------------------------------------------------- ...

  6. 【Cloud Foundry】Could Foundry学习(二)——核心组件分析

    在阅读的过程中有不论什么问题,欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801 Cloud Foundry核心组件架构图例如以下: 主要组件:     Clou ...

  7. C++STL之set容器及stream类

    首先讲stream流类 头文件#include <sstream> 其功能是进行不同类型之间的转换,跟C语言 fscanf 和 fprintf 作用是同样的,可是比C语言的更简便更好用. ...

  8. camel-name-utils 在驼峰风格跟下划线风格之间切换

    用处 用来将字符串在驼峰风格跟下划线风格之间切换. 对于一般人可能没用.对于写orm框架的人有点作用. 样例: company_name -> companyName 安装方式 加入下面依赖到p ...

  9. OpenCV五学习: 如何使用命令来启动或关闭OpenCV的CPU指令系统CV_SSE2,CV_SSSE4和其他优化

    在这个博客.我想分享一下OpenCV源代码CPU指令系统CV_SSE2和其他相关知识 一个.    CV_SSE系列指令集的预编译符号定义在opencv2/core/internal.hpp这个头文件 ...

  10. thinkphp模版调用函数方法

    原文:thinkphp模版调用函数方法 {变量|函数1|函数2|函数3=参数1,参数2,参数3,###} ###为第4个参数,代表变量替换为第4个参数 举例: {$username|substr=0, ...