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

时间:2015-06-08 06:15:36

标签: java jackson

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

提前致谢

3 个答案:

答案 0 :(得分:4)

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

Jackson是一个高性能的JSON处理器Java库。在本教程中,我们将向您展示如何使用Jackson的数据绑定将Java对象转换为JSON或从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();
    
        }
    
      }
    
    }
    
  5. 输出

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

答案 1 :(得分:0)

在java中我们可以通过很多方法将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());
            }
        }

答案 2 :(得分:0)

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

你可以使用com.fasterxml.jackson.databind.ObjectMapper类的jackson API来读取或写出一个字符串格式的json对象。