Jackson ObjectMapper实现JSON实际的读/写

2019-05-09 23:21|来源: 网路

ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。

类声明

以下是org.codehaus.jackson.map.ObjectMapper类的声明:

public class ObjectMapper
   extends ObjectCodec
      implements Versioned

嵌套类

S.N. 类 & 描述
1 static class ObjectMapper.DefaultTypeResolverBuilder
定制TypeResolverBuilder,提供所谓的“默认输入”使用类型解析构建器(见enableDefaultTyping()了解详细信息)。
2 static class ObjectMapper.DefaultTyping
使用enableDefaultTyping()枚举指定什么样的类型(类)默认输入应该使用。

构造函数

S.N. 构造函数 & 描述
1 ObjectMapper()
默认的构造函数,这将构建默认JsonFactory必要时使用StdSerializerProvider作为其SerializerProvider,并BeanSerializerFactory作为其SerializerFactory。
2 ObjectMapper(JsonFactory jf)
构造使用指定的JsonFactory构建必要的JsonParsers和/或JsonGenerators映射。
3 ObjectMapper(JsonFactory jf, SerializerProvider sp, DeserializerProvider dp)
4 ObjectMapper(JsonFactory jf, SerializerProvider sp, DeserializerProvider dp, SerializationConfig sconfig, DeserializationConfig dconfig)
5 ObjectMapper(SerializerFactory sf)
不推荐使用。使用其他构造来代替; 注意,可以设置序列化工厂setSerializerFactory(org.codehaus.jackson.map.SerializerFactory)

继承的方法

这个类继承了以下类方法:

  • java.lang.Object

ObjectMapper示例

选择使用任何编辑器创建以下java程序在 C:/> Jackson_WORKSPACE

File: JacksonTester.java

import java.io.IOException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;

public class JacksonTester {
   public static void main(String args[]){
      ObjectMapper mapper = new ObjectMapper();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";

      //map json to student
      try {
         Student student = mapper.readValue(jsonString, Student.class);
         System.out.println(student);
         mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
         jsonString = mapper.writeValueAsString(student);
         System.out.println(jsonString);

      } catch (JsonParseException e) {
         e.printStackTrace();
      } catch (JsonMappingException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

class Student {
   private String name;
   private int age;
   public Student(){}
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   public String toString(){
      return "Student [ name: "+name+", age: "+ age+ " ]";
   }	
}


验证结果

使用 javac 编译如下类:

C:\Jackson_WORKSPACE>javac JacksonTester.java

现在运行jacksonTester看到的结果:

C:\Jackson_WORKSPACE>java JacksonTester

验证输出

Student [ name: Mahesh, age: 21 ]
{
  "name" : "Mahesh",
  "age" : 21
}


相关问答

更多

杰克逊,如何设置如此可以使用?(Jackson, how to set up so could be used?)

好吧,类ObjectMapper在jackson-databind中。 你的导入中有com.fasterxml.jackson.databind.ObjectMapper吗? 你是如何设置班级路径的? 你在用Maven吗? 这是在你的IDE吗? Well, the class ObjectMapper is in jackson-databind. Do you have com.fasterxml.jackson.databind.ObjectMapper in your imports? H

使用RoboSpice与Jackson2和Spring(Using RoboSpice with Jackson2 and Spring)

如果你使用Jackson 2,那么你需要使用Jackson2SpringAndroidSpiceService而不是JacksonSpringAndroidSpiceService 。 2件事:) If you use Jackson 2, then you need to use a Jackson2SpringAndroidSpiceService and not a JacksonSpringAndroidSpiceService. The 2 matters :)

Jackson ObjectMapper,带'/'字符作为JSON键(Jackson ObjectMapper with '/' Character as JSON key)

问题出在getClass().getResource( "/my-file.json" ).getFile() 。 getFile()返回文件路径而不是文件内容。 ObjectMapper readValue(String content, ..)函数将内容作为其第一个参数。 您可以使用 Map value = om.readValue(getClass().getResourceAsStream("/my-file.json"), HashMap.class); om.readValue(n

Spring Boot如何配置我的Jackson ObjectMapper?(How is Spring Boot configuring my Jackson ObjectMapper here?)

SpringBoot自己实例化ObjectMapper,因为Spring将Java对象转换为JSON,反之亦然。 所以如果它在类路径中找到Spring引导,它将加载objectMapper。 现在在configureJackson方法中,您已经引用了ObjectMapper和@Autowired注释,因此Spring将为此方法提供ObjectMapper的实例。 @Autowired注释正在做你所指的魔术。 @Autowired Fizz fizz(Buzz buzz) { new Fizz

Jackson UnrecognizedPropertyException(Jackson UnrecognizedPropertyException)

这里的问题是OP混合了两种不同的Jackson版本: 1.9来自org.codehaus ( org.codehaus.jackson.map.exc.UnrecognizedPropertyException显示) 来自com.fasterxml 2.x(在进口import com.fasterxml.jackson.annotation.可见import com.fasterxml.jackson.annotation. ) 正如山姆在评论中指出的那样,OP应该只使用一个版本。 使用2.x进

相关文章

更多

最近更新

更多