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

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Understanding about Baire Category Theorem
    Isometric embedding of metric space
    Convergence theorems for measurable functions
    Mindmap for "Principles of boundary element methods"
    Various formulations of Maxwell equations
    Existence and uniqueness theorems for variational problems
    Kernels and image sets for an operator and its dual
    [loj6498]农民
    [luogu3781]切树游戏
    [atAGC051B]Three Coins
  • 原文地址:https://www.cnblogs.com/lenve/p/4614421.html
Copyright © 2011-2022 走看看