zoukankan      html  css  js  c++  java
  • 处理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() + "
    书名:"
                        + 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的处理基本是一致的。

  • 相关阅读:
    IronPython初体验
    HOWTO: 部署时附带安装MSDE
    翻译:FileSystemWatcher Tips
    再见了 母校!
    招聘.net开发工程师(2名)和ASP开发工程师(1名)工作地点:北京
    年终感言提纲
    可以不讲,但不可以不懂:英语实用脏话精选
    一个混乱的时期
    异步消息的传递-回调机制
    搞c++的 大家看看
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5083040.html
Copyright © 2011-2022 走看看