举例讲解Java的Jackson库中ObjectMapper类的使用_java

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

例子
测试类基本代码如下

/*
 * @project java
 * @package
 * @file Jackson.java
 * @version 1.0 

 */ 

public class Jackson {
  /*
   *
   * Class Descripton goes here.
   *
   * @class Jackson
   * @version 1.0
   */
  public static JsonGenerator jsonGenerator = null;
  private static ObjectMapper mapper = new ObjectMapper();
  public static void main(String[] args) {
    Student student = new Student();
    student.setIsstudent(true);
    student.setUid(1000);
    student.setUname("xiao liao");
    student.setUpwd("123");
    student.setNumber(12); 

    Map<String, Student> stuMap = new HashMap<String, Student>();
    stuMap.put("1", student);
    stuMap.put("2", student); 

    List<Object> stuList = new ArrayList<Object>();
    List<Student> stuList1 = new ArrayList<Student>();
    stuList1.add(student);
    student= new Student();
    student.setIsstudent(false);
    student.setUid(200);
    student.setUname("xiao mi");
    stuList1.add(student); 

    stuList.add(student);
    stuList.add("xiao xin");
    stuList.add("xiao er");
    stuList.add(stuMap); 

    //readJson2List();
    try {
      //readJson2Array();
      //writeArray2Json(array);
      //writeJson2List();
      //writeEntity2Json(student);
      writeJson2Entity();
      //writeMap2Json(stuMap);
      //writeList2Json(stuList1); 

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
   /**
   *
   * <code>writeEntity2Json</code>
   * @description: TODO(实体类转换成json)
   * @param object
   * @throws IOException
   */
   public static void writeEntity2Json(Object object) throws IOException {
      mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object );
      mapper.writeValue( System.out,object ); 

   }
   /**
   *
   * <code>writeArray2Json</code>
   * @description: TODO(数组转换成json数组)
   * @param object
   * @throws IOException
   */
   public static void writeArray2Json(Object object) throws IOException { 

     // writeValue具有和writeObject相同的功能
     mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object );
     mapper.writeValue(System.out,object ); 

   }
   /**
   *
   * <code>writeMap2Json</code>
   * @description: TODO(map对象转换成json对象)
   * @param object
   * @throws IOException
   * @since  2011-11-8   廖益平
   */
   public static void writeMap2Json(Object object) throws IOException { 

     System.out.println("使用ObjectMapper-----------");
     // writeValue具有和writeObject相同的功能
     System.out.println("==>"+mapper.writeValueAsString(object));
     mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object );
     mapper.writeValue( System.out , object );
   }
   /**
   *
   * <code>writeList2Json</code>
   * @description: TODO(list转换成json)
   * @param object
   * @throws IOException
   */
   public static void writeList2Json(Object object) throws IOException {
     System.out.println("==>"+mapper.writeValueAsString(object));
     mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object );
     mapper.writeValue( System.out , object );
   }
   /**
   *
   * <code>writeJson2Entity</code>
   * @description: TODO(json转换成实体)
   * @throws IOException
   */
   public static void writeJson2Entity() throws IOException {
     System.out.println("json串转换成entity-------------");
//    File file = new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt");
//    FileInputStream inputStream = new FileInputStream(file);
//    Student student = mapper.readValue(inputStream,Student.class);
//    System.out.println(student.toString());
     //漂亮输出
     //mapper.defaultPrettyPrintingWriter().writeValueAsString(value); 

     String json = "{\"uid\":1000,\"uname\":\"xiao liao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true}";
     Student student1 = mapper.readValue(json,Student.class);
     System.out.println("json2:"+student1.toString());
   }
   /**
   *
   * <code>writeJson2List</code>
   * @description: TODO(json专程list对象)
   * @throws IOException
   */
   public static void writeJson2List() throws IOException {
     System.out.println("json串转换成entity-------------");
     File file = new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt");
     FileInputStream inputStream = new FileInputStream(file);
     Student student = mapper.readValue(inputStream,Student.class);
     System.out.println(student.toString()); 

     String json = "[{\"uid\":1000,\"uname\":\"xiao liao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true},{\"uid\":200,\"uname\":\"xiao mi\",\"upwd\":null,\"number\":0.0,\"isstudent\":false}]";
     List<LinkedHashMap<String, Object>> s= mapper.readValue(json,List.class);
     for (int i = 0; i < s.size(); i++) {
       LinkedHashMap<String, Object> link = s.get(i);
       Set<String> key = link.keySet();
       for (Iterator iterator = key.iterator(); iterator.hasNext();) {
        String string = (String) iterator.next();
        System.out.println(string+"==>"+link.get(string)); 

      }
       System.out.println("json:"+i+""+s.get(i).toString()); 

    }
   }
   /**
    * JSON转换为List对象
    */
   public static void readJson2List() {
    String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
     + "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
    try {
    List<LinkedHashMap<String, Object>> list = mapper.readValue(
     json, List.class);
    System.out.println(list.size());
    for (int i = 0; i < list.size(); i++) {
     Map<String, Object> map = list.get(i);
     Set<String> set = map.keySet();
     for (Iterator<String> it = set.iterator(); it.hasNext();) {
     String key = it.next();
     System.out.println(key + ":" + map.get(key));
     }
    }
    } catch (JsonParseException e) {
    e.printStackTrace();
    } catch (JsonMappingException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
   }
   /**
    * JSON转换为List对象
    */
   public static void readJson2Array() {
     String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
       + "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
     try {
       Student[] students = mapper.readValue(json, Student[].class);
       for (Student student : students) {
        System.out.println(">"+student.toString());
      }
     } catch (JsonParseException e) {
       e.printStackTrace();
     } catch (JsonMappingException e) {
       e.printStackTrace();
     } catch (IOException e) {
       e.printStackTrace();
     }
   } 

} 

打印结果 :

串转换成entity-------------
json2:uid=1000,name=xiao liao,upwd=123,number=12.0,isStudent=true

writeMap2Json -----------
{"2":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true},"1":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true}}

readJson2Array------------------
>uid=1,name=www,upwd=456,number=234.0,isStudent=false
>uid=5,name=tom,upwd=123,number=3.44,isStudent=false
writeMap2Json -----------
{"2":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true},"1":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true}}

大家逐个自己试试吧  ,上面也是我的测试代码

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, jackson
objectmapper
jackson objectmapper、jackson mapper asl、jackson mapper、jackson mapper lgpl、xmlmapper jackson,以便于您获取更多的相关知识。

时间: 2025-01-02 01:51:17

举例讲解Java的Jackson库中ObjectMapper类的使用_java的相关文章

解析Java的Jackson库中Streaming API的使用_java

流式API读取和写入JSON内容离散事件. JsonParser读取数据,而JsonGenerator写入数据.它是三者中最有效的方法,是最低开销和最快的读/写操作.它类似于XML的Stax解析器. 在本文中,我们将展示的使用Jackson的流式API 读写JSON数据.流式API工作使用JSON为每一个细节的都是要小心处理.下面的例子将使用两个类:JsonGenerator类--写入JSON字符串.sonGenerator是定义公共API编写的Json内容的基类.使用JsonFactory实例

解析Java的Jackson库中对象的序列化与数据泛型绑定_java

Jackson对象序列化这里将介绍将Java对象序列化到一个JSON文件,然后再读取JSON文件获取转换为对象.在这个例子中,创建了Student类.创建将有学生对象以JSON表示在一个student.json文件. 创建一个名为JacksonTester在Java类文件在 C:\>Jackson_WORKSPACE. 文件: JacksonTester.java import java.io.File; import java.io.IOException; import org.codeha

实例解析Java的Jackson库中的数据绑定_java

数据绑定API用于JSON转换和使用属性访问或使用注解POJO(普通Java对象).以下是它的两个类型. 简单数据绑定 - 转换JSON,从Java Maps, Lists, Strings, Numbers, Booleans 和 null 对象. 完整数据绑定 - 转换JSON到任何JAVA类型.我们将在下一章分别绑定. ObjectMapper读/写JSON两种类型的数据绑定.数据绑定是最方便的方式是类似XML的JAXB解析器. 简单的数据绑定简单的数据绑定是指JSON映射到Java核心数

举例讲解Java的Spring框架中AOP程序设计方式的使用_java

1.什么是AOP AOP是Aspect Oriented Programming的缩写,意思是面向方面编程,AOP实际是GoF设计模式的延续. 2.关于Spring AOP的一些术语: A.切面(Aspect):在Spring AOP中,切面可以使用通用类或者在普通类中以@Aspect 注解(@AspectJ风格)来实现 B.连接点(Joinpoint):在Spring AOP中一个连接点代表一个方法的执行 C.通知(Advice):在切面的某个特定的连接点(Joinpoint)上执行的动作.通

举例讲解Java的Hibernate框架中的多对一和一对多映射_java

多对一(Many-to-One)映射多对一(many-to-one)关联是最常见的关联关系,其中一个对象可以与多个对象相关联.例如,一个相同的地址对象可以与多个雇员的对象相关联. 定义RDBMS表: 考虑一个情况,我们需要员工记录存储在EMPLOYEE表,将有以下结构: create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20)

objectmapper-Jackson库的ObjectMapper类在was6环境上找不到部分方法

问题描述 Jackson库的ObjectMapper类在was6环境上找不到部分方法 本地也是was6环境 可以正确运行, 发布到测试环境后,ObjectMapper类 报错找不到部分方法,我用反射打印方法和对应参数,结果,环境上比本地 要少输出10多个方法,百思不得其解...用的是这个版本jackson-all-1.9.11.jar

Java的Jackson库的使用及其树模型的入门学习教程_java

Jackson第一个程序在进入学习jackson库的细节之前,让我们来看看应用程序操作功能.在这个例子中,我们创建一个Student类.将创建一个JSON字符串学生的详细信息,并将其反序列化到学生的对象,然后将其序列化到JSON字符串. 创建一个名为JacksonTester在Java类文件 C:\>Jackson_WORKSPACE. 文件: JacksonTester.java import java.io.IOException; import org.codehaus.jackson.J

Java8时间日期库中的常用使用示例_java

有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之,只有任务本身才会真正促使你去探索及学习.java 8的新的日期及时间API也是一样.为了学习Java 8的这个新库,这里我创建了20个以任务为导向的例子.我们先从一个简单的任务开始,比如说如何用Java 8的时间日期库来表示今天,接着再进一步生成一个带时间及时区的完整日期,然后再研究下如何完成一些更实际的任务,比如说开发一个提醒类的应

从Java的jar文件中读取数据的方法_java

本文实例讲述了从Java的jar文件中读取数据的方法.分享给大家供大家参考.具体如下: Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR 文件格式支持压缩.身份验证和版本,以及许多其它特性. 从 JAR 文件中得到它所包含的文件内容是件棘手的事情,但也不是不可以做到.这篇技巧就将告诉你如何从 JAR 文件中取得一个文件.我们会先取得这个 JAR