在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() + "
书名:"
+ 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() + "
书名:"
+ book.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
这两段关于json的处理基本是一致的。
版权声明:本文为博主原创文章,未经博主允许不得转载。