处理json中影响解析的多余引號
在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中影响解析的多余引號的更多相关文章
- 处理json中影响解析的多余引号
在xml中,敏感字符是尖括号,在json中,敏感字符是引号,上文中我们介绍了如何处理xml中的敏感字符,本文说说如何处理json中的敏感字符. 思路与上文相同,不再赘述.直接上代码: json–> ...
- eval解析JSON中的注意点
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery ...
- jquery eval解析JSON中的注意点介绍
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:使用eval()函数.使用Function对象来进行返回解析,下面有个示例,感兴趣的朋友可以参考下 在JS中将JSON的字符串解析 ...
- js中eval详解,用Js的eval解析JSON中的注意点
先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...
- 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中
http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转 ...
- 用Js的eval解析JSON中的注意点
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
- 玩转Web之Json(一)-----easy ui+ajax + json 中关于Json的解析问题
在easy ui中使用Ajax+Json实现前后的数据交互时,当后台数据传输到客户端是需对Json数据进行解析,这里将对Json数据解析做简单总结. (一) 对于服务器返回的数据若没有做类型说明,需要 ...
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- Java中使用org.json和json-lib解析JSON
文章目录 [隐藏] 一.JavaProject中org.json解析JSON 1.JSON的org.son-api下载 1)JSON网址 2)JSON的java解析org.json-api网址 3) ...
随机推荐
- linux安装Eclipse c++环境
yum install eclipse yum install eclipse-cdt
- Android NDK 简单介绍、工具安装、环境配置
NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发人员高速开发C(或C++)的动态库,并能自己主动将so和java应用一 ...
- Leetcode:find_minimum_in_rotated_sorted_array
一. 题目 给定一个排好序的数组.数组可能是单调递增,也可能有一个变换. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2) 要求找出最小的数. ...
- MySQL filesort优化案例一则
今天遇到一个filesort优化的案例,感觉不错,分享出来. MySQL中filesort是什么意思?官方手册定义: MySQL must do an extra pass to find out h ...
- poj 2126 Factoring a Polynomial 数学多项式分解
题意: 给一个多项式,求它在实数域内的可分解性. 分析: 代数基本定理. 代码: //poj 2126 //sep9 #include <iostream> using namespace ...
- Android 事件处理
目的:通过全面的分析Android的鼠标和键盘事件.了解Android中如何接收和处理键盘和鼠标事件,以及如何用代码来产生事件. 主要学习内容: 1. 接收并处理鼠标事件:按下.弹起.移动.双击.长按 ...
- 0 and 1
Description Andrewid the Android is a galaxy-famous detective. In his free time he likes to think ab ...
- SqlHelper初探之二
在上一篇简单的介绍了sqlhelper的基本知识,接下来就让我们进一步学习他的实践过程. 首先:我们要明白的一件事Sqlhelper不是写出来的,而是在D层的代码中提炼出来的?那么就会反问一句“D层中 ...
- hdu 4687 Boke and Tsukkomi
Dancing link twice. Find the maximum combination numbers in the first time. Enumerate each node, dan ...
- UVA11069 - A Graph Problem(DP)
UVA11069 - A Graph Problem(DP) 题目链接 题目大意:给你n个点.要你找出有多少子串符合要求.首先没有连续的数字,其次不能再往里面加入不论什么的数字而不违反第一条要求. 解 ...