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

How to convert input string to json string or json object using jackson in java

如何在 java.

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

提前致谢

这在 mkyong 上有记录并在此处引用:

Jackson 是一个高性能 JSON 处理器 Java 库。在本教程中,我们将向您展示如何使用 Jackson 的数据绑定将 Java 对象与 JSON.

对象相互转换

对于object/json转换,你需要知道以下两种方法:

//1. Convert Java object to JSON format
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("c:\user.json"), user);
//2. Convert JSON to Java object
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\user.json"), User.class);

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

  1. 杰克逊依赖 Jackson 包含 6 个用于不同用途的独立罐子,请在此处查看。在这种情况下,您只需要“jackson-mapper-asl”来处理转换,只需在 pom.xml

    中声明以下依赖项
    <repositories>
        <repository>
            <id>codehaus</id>
            <url>http://repository.codehaus.org/org/codehaus</url>
        </repository>
    </repositories>
    
    <dependencies>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.8.5</version>
        </dependency>
    </dependencies>
    

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

  2. POJO

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

    package com.mkyong.core;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class User {
    
        private int age = 29;
        private String name = "mkyong";
        private List<String> messages = new ArrayList<String>() {
            {
                add("msg 1");
                add("msg 2");
                add("msg 3");
            }
        };
    
        //getter and setter methods
    
        @Override
        public String toString() {
            return "User [age=" + age + ", name=" + name + ", " +
                    "messages=" + messages + "]";
        }
    }
    
  3. Java 反对 JSON 将“user”对象转换为JSON格式的字符串,并保存到文件“user.json”中。

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

    输出

    {"age":29,"messages":["msg 1","msg 2","msg 3"],"name":"mkyong"}
    

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

  4. JSON 到 Java 对象

    从文件“user.json”中读取JSON字符串,并将其转换回Java对象。

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

输出

    User [age=29, name=mkyong, messages=[msg 1, msg 2, msg 3]]

在 java 中,我们可以通过大量 methods.You 将 String 转换为 json 可以为此目的使用集合 HashMap 为您提供 {key:value} 对中的值,这可能是对您有用,如果您正在使用 Spring,这可能对您有帮助。

   //****************** update The user Info**********************//
        @RequestMapping(value = "/update/{id}",  method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
        public @ResponseBody
        Status updateMsBuddy(@RequestBody MsBuddyInfo msBuddyInfo){

            try{
                if(msBuddyService.updateMsBuddy(msBuddyInfo))
                return new Status(1, "MsBuddyInfo updated Successfully",+msBuddyInfo.getId());
                else
                    return new Status(1, "unable to updated Profile",+msBuddyInfo.getId());
            }
            catch(Exception e){

                return new Status(0,e.toString());
            }
        }

来自 journaldev 的非常好的教程 Jackson-JSON processing

您可以使用 jackson API 的 com.fasterxml.jackson.databind.ObjectMapper class 来读取或写入字符串格式的 json 对象。