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的处理基本是一致的。

  • 相关阅读:
    Servlet 的生命周期
    关于JSP
    JQuery事件绑定
    JavaScript中操作元素
    javaScript的函数使用
    Servlet 的API
    JavaScript中BOM对象
    gridview 绑定时间列 取短日期
    A4纸网页打印中对应像素的设定和换算
    动态添加 控件 并获取值
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461813.html
Copyright © 2011-2022 走看看