如何在java中使用jackson将输入字符串转换为json字符串或json对象

Rak*_*esh 6 java jackson

如何在java中使用jackson将输入字符串转换为json字符串或json对象。

提前致谢

Haz*_*zok 7

mkyong上记录了这一点,并在此处引用:

\n\n

Jackson 是一个高性能 JSON 处理器 Java 库。在本教程中,我们将向您展示如何使用 Jackson\xe2\x80\x99s 数据绑定将 Java 对象与 JSON 相互转换。

\n\n

对于object/json转换,您需要了解以下两种方法:

\n\n
//1. Convert Java object to JSON format\nObjectMapper mapper = new ObjectMapper();\nmapper.writeValue(new File("c:\\\\user.json"), user);\n//2. Convert JSON to Java object\nObjectMapper mapper = new ObjectMapper();\nUser user = mapper.readValue(new File("c:\\\\user.json"), User.class);\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:writeValue() 和 readValue() 都有许多重载方法来支持不同类型的输入和输出。请务必检查一下。

\n\n
    \n
  1. Jackson 依赖项\nJackson 包含 6 个用于不同目的的独立 jar,请在此处查看。在这种情况下,您只需要 \xe2\x80\x9cjackson-mapper-asl\xe2\x80\x9d 来处理转换,只需在 pom.xml 中声明以下依赖项

    \n\n
    <repositories>\n    <repository>\n        <id>codehaus</id>\n        <url>http://repository.codehaus.org/org/codehaus</url>\n    </repository>\n</repositories>\n\n<dependencies>\n    <dependency>\n        <groupId>org.codehaus.jackson</groupId>\n        <artifactId>jackson-mapper-asl</artifactId>\n        <version>1.8.5</version>\n    </dependency>\n</dependencies>\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    对于非 Maven 用户,只需在此处获取 Jackson 库即可。

  2. \n
  3. 波乔

    \n\n

    一个用户对象,用一些值初始化。稍后使用 Jackson 将此对象转换为 JSON 或从 JSON 转换。

    \n\n
    package com.mkyong.core;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class User {\n\n    private int age = 29;\n    private String name = "mkyong";\n    private List<String> messages = new ArrayList<String>() {\n        {\n            add("msg 1");\n            add("msg 2");\n            add("msg 3");\n        }\n    };\n\n    //getter and setter methods\n\n    @Override\n    public String toString() {\n        return "User [age=" + age + ", name=" + name + ", " +\n                "messages=" + messages + "]";\n    }\n}\n
    Run Code Online (Sandbox Code Playgroud)
  4. \n
  5. Java 对象转 JSON\n将 \xe2\x80\x9cuser\xe2\x80\x9d 对象转换为 JSON 格式的字符串,并将其保存到文件 \xe2\x80\x9cuser.json\xe2\x80\x9c 中。

    \n\n
    package com.mkyong.core;\n\nimport java.io.File;\nimport java.io.IOException;\nimport org.codehaus.jackson.JsonGenerationException;\nimport org.codehaus.jackson.map.JsonMappingException;\nimport org.codehaus.jackson.map.ObjectMapper;\n\npublic class JacksonExample {\n    public static void main(String[] args) {\n\n    User user = new User();\n    ObjectMapper mapper = new ObjectMapper();\n\n    try {\n\n        // convert user object to json string, and save to a file\n        mapper.writeValue(new File("c:\\\\user.json"), user);\n\n        // display to console\n        System.out.println(mapper.writeValueAsString(user));\n\n    } catch (JsonGenerationException e) {\n\n        e.printStackTrace();\n\n    } catch (JsonMappingException e) {\n\n        e.printStackTrace();\n\n    } catch (IOException e) {\n\n        e.printStackTrace();\n\n    }\n\n  }\n\n}\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    输出

    \n\n
    {"age":29,"messages":["msg 1","msg 2","msg 3"],"name":"mkyong"}\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    注意\n上面的 JSON 输出很难阅读。您可以通过启用漂亮的打印功能来增强它。

  6. \n
  7. JSON 到 Java 对象

    \n\n

    从文件 \xe2\x80\x9cuser.json\xe2\x80\x9c 中读取 JSON 字符串,并将其转换回 Java 对象。

    \n\n
    package com.mkyong.core;\n\nimport java.io.File;\nimport java.io.IOException;\nimport org.codehaus.jackson.JsonGenerationException;\nimport org.codehaus.jackson.map.JsonMappingException;\nimport org.codehaus.jackson.map.ObjectMapper;\n\npublic class JacksonExample {\n    public static void main(String[] args) {\n\n    ObjectMapper mapper = new ObjectMapper();\n\n    try {\n\n        // read from file, convert it to user class\n        User user = mapper.readValue(new File("c:\\\\user.json"), User.class);\n\n        // display to console\n        System.out.println(user);\n\n    } catch (JsonGenerationException e) {\n\n        e.printStackTrace();\n\n    } catch (JsonMappingException e) {\n\n        e.printStackTrace();\n\n    } catch (IOException e) {\n\n        e.printStackTrace();\n\n    }\n\n  }\n\n}\n
    Run Code Online (Sandbox Code Playgroud)
  8. \n
\n\n

输出

\n\n
    User [age=29, name=mkyong, messages=[msg 1, msg 2, msg 3]]\n
Run Code Online (Sandbox Code Playgroud)\n