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
}


相关问答

更多

无法删除特定扩展名的文件(Unable to delete files of certain extension)

看起来你错过了for循环中的os.listdir(dir_path) 。 It looks like you missed os.listdir(dir_path) in the for-loop.

为什么不调用OnActivate?(Why isn't OnActivate being called?)

我想通了,基本上我没想到。 激活导体/根视图的构造函数中的视图无法正常工作,因为它尚未激活。 在调用指挥/根视图的OnActivate之前, IsActive不会设置为true。 这在某些时候可能是有问题的,因为即使调用OnInitialize时导体也不活动,并且这意味着一次初始化函数和OnActivate可以被多次调用。 在我的情况下它会很好,因为我的指挥是根视图所以OnActivate只会被调用一次。 故事的道德是,当导体是根视图时,不要在导体的构造函数中调用ActivateItem 。 I

从原始字符串中提取模式(Extracting pattern from raw string)

我会使用gregexpr和regmatches regmatches(d$V1, gregexpr("(?<=,)\\d{1,3}\\.\\d+\\s\\d{1,3}\\.\\d+", d$V1, perl = TRUE)) #[[1]] #[1] "55.745011917 37.604520766" # #[[2]] #[1] "53.23452 38.7379422" 取消列出它并将其放入一个新的变量是由提问者决定的。 这里的方法是查找1到3位数后跟一个小数( \\d{1,3}\\.

某些Jmeter属性替换($ {__ P(...)})在远程测试中不起作用(some Jmeter property substitution (${__P(…)}) not working in remote test)

所以它看起来像远程服务器启动时的配置错误。 批处理文件(我们在这里说Windows)就像 "C:\apache-jmeter-3.3\bin\jmeter.bat" -s -Dserver_port=1098 -j "C:\ows\jmeter-service-ows.log" -d "C:\ows" ...因为所有杂项文件(源CSV,结果文件,日志)应该驻留在C:\ ows中。 但事实证明,当时Jmeter对它的库感到困惑。 批处理文件如下所示: "C:\apache-jmeter-3.3\

工具提示在iOS中通过本地用户界面控件?(ToolTips in iOS through native UI Controls?)

那么我最终使用了第三方工具提示CMTopTipView 。 它的开销相对较低,只是标头和实现。 稍微修改它以考虑ARC。 这是我所做的: #import "CMPopTipView.h" CMPopTipView *navBarLeftButtonPopTipView; - (void) dismissToolTip { [navBarLeftButtonPopTipView dismissAnimated:YES]; } - (void) showDoubleTap { n

相关文章

更多

最近更新

更多