Jackson使用具体的Java对象和类型强制转换到JSON使用

在简单的数据绑定中,我们使用String作为关键对象,并作为一个值对象映射类。相反,我们可以使用具体的Java对象和类型强制转换到JSON使用。

考虑下面的例子使用一个类的UserData来保存用户专用数据。

创建一个名为JacksonTester在Java类文件目录 C:\>Jackson_WORKSPACE.

文件名: JacksonTester.java

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;

public class JacksonTester {
   public static void main(String args[]){
      JacksonTester tester = new JacksonTester();
         try {
            ObjectMapper mapper = new ObjectMapper();

            Map userDataMap = new HashMap();
            UserData studentData = new UserData(); 
            int[] marks = {1,2,3};

            Student student = new Student();
            student.setAge(10);
            student.setName("Mahesh");
            // JAVA Object
            studentData.setStudent(student);
            // JAVA String
            studentData.setName("Mahesh Kumar");
            // JAVA Boolean
            studentData.setVerified(Boolean.FALSE);
            // Array
            studentData.setMarks(marks);
            TypeReference ref = new TypeReference>() { };
            userDataMap.put("studentData1", studentData);
            mapper.writeValue(new File("student.json"), userDataMap);
            //{
            //   "studentData1":
            //	 {
            //		"student":
            //		{
            //			"name":"Mahesh",
            //			"age":10
            //      },
            //      "name":"Mahesh Kumar",
            //      "verified":false,
            //      "marks":[1,2,3]
            //   }
            //}
            userDataMap = mapper.readValue(new File("student.json"), ref);

            System.out.println(userDataMap.get("studentData1").getStudent());
            System.out.println(userDataMap.get("studentData1").getName());
            System.out.println(userDataMap.get("studentData1").getVerified());
            System.out.println(Arrays.toString(userDataMap.get("studentData1").getMarks()));
      } 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+ " ]";
   }	
}

class UserData {
   private Student student;
   private String name;
   private Boolean verified;
   private int[] marks;

   public UserData(){}

   public Student getStudent() {
      return student;
   }
   public void setStudent(Student student) {
      this.student = student;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public Boolean getVerified() {
      return verified;
   }
   public void setVerified(Boolean verified) {
      this.verified = verified;
   }
   public int[] getMarks() {
      return marks;
   }
   public void setMarks(int[] marks) {
      this.marks = marks;
   }		
}

验证输出

使用javac编译如下类:

C:\Jackson_WORKSPACE>javac JacksonTester.java

现在运行jacksonTester看到的结果:

C:\Jackson_WORKSPACE>java JacksonTester

验证输出

Student [ name: Mahesh, age: 10 ]
Mahesh Kumar
false
[1, 2, 3]


2019-05-09 23:30

JSON教程

相关教程

更多

javascript 对象转换成json格式数据(使用JSON.stringify)

                    方法一:new Object(),方法二:使用{}。然后使用JSON.stringify转为json格式数据
                

Jackson JSON映射到任何Java对象

                    
                

关于两种对象类型使用

                    直接描述的我的问题了。  我的需求是读取本地或异地的数据,程序中用到ResultSet(本地读取)和DepartResultset(异地读取,自己写的)来获得数据,程序就像这样:  本地:代码一conn = DBUtil.getConnection();                Statement stmt = conn.createStatement(ResultSet.TYPE_SCRO
                

Java对象和类

                     Java对象和类    Java作为一种面向对象语言。支持以下基本概念:      多态  继承  封装  抽象  类  对象  实例  方法  消息解析    本节我们重点研究对象和类的概念。      对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种
                

如何在jsf标签中使用java的枚举类型

                    在后台Java对象中有个枚举类型属性,例如学生的学科用枚举类型表示  class Student {  private Subject subject;  public enum Subject{  yuwen("语文"),shuxue("数学"),yingyu("英语"),;  private String desc;  private
                

net.sf.json解析json对象

                    JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包。在本例中,我们将使用JSONObject类创建JSONObject对象,然后我们打印这些对象的值。为了使用 JSONObject对象,我们要引入"net.sf.json"包
                

使用Gson解析Json数据

                    我想要解析类似:{"total":100,"rows":[{"key":"key1","value":"value1"}{"key":"key2","value":"value2"}]};这种格式的数
                

java强制删除文件

                    各位,我用File类中的delete()方法删除一个文件夹得到false返回结果  在命令行中用del命令也无法删除,报错文件夹里有文件拒绝访问,  请问要强制删除这个目录要怎么操作呢??
                

Spring Boot使用FastJson解析JSON数据

                    Spring Boot默认使用jackson,国内很多人比较习惯用fastjson。所以我们看一下怎么在spring boot 中使用fastjson
                

数组数据 与json 的转换``

                    我用的是hibernate +struts  <%  dtreeBS treebs= new dtreeBS();  List list = (List)treebs.getAllDtreelist();  List li= new ArrayList();  for(int i=0;i<list.size();i++)  {  Dtree tree=(Dtree)list.get(i
                

使用 XSLT 将 XML 转换为 XHTML

                    
                

mongodb删除文档操作-使用shell和java操作mongodb文档

                    删除集合中的文档,使用命令 db.集合名称.remove({删除条件}),例如,db.c1.remove({name:"user1"})为删除c1集合中name为user1的文档     > db.student1.find();    { "_id" : ObjectId("575cfa2c9e40f510312c76a2"), 
                

JSON 数据类型

                    
                

最新教程

更多

构建Disruptor实例-生产消费模型完成整个入门示例

                    初始化Disruptor,构建Disruptor只要需要以下几个参数:1 eventFactory: 消息(event)工厂对象,2 ringBufferSize: 容器的长度,​3 executor: 线程池(建议使用自定义线程池) RejectedExecutionHandler,​4 ProducerType: 单生产者 还是 多生产者, ​5 waitStrategy: 等待策略2、初始化好Disruptor之后,通过该对象的handleEventsWith添加消费者的监听。3、然后启动D...
                

数据生产者向disruptor容器RingBuffer中推送数据

                    RingBuffer是disruptor中不同的上下文(线程)之间传递数据的buffer,以下是数据生产者向disruptor容器RingBuffer中推送数据示例
                

数据消费者:实现EventHandler监听接口处理数据

                    实现EventHandler监听接口,重写onEvent方法处理数据
                

Disruptor实现EventFactory接口创建实例对象

                    创建具体实体类,实现 EventFactory 工厂类接口,重写newInstance方法,在此方法中创建对象
                

快速了解Sentinel 如何使用

                    从定义资源、流量控制规则、熔断降级规则、系统保护规则、访问控制规则、热点规则、查询修改规则、异常和监控等方面快速了解Sentinel 如何使用
                

Sentinel更新计划 Roadmap

                    Sentinel更新计划包括:注解支持、异步调用支持、热点参数限流、黑白名单功能、集群限流、与更多主流框架适配、与更多的数据源适配、Reactive 支持、指标/监控 API 标准化、高版本 Java 适配(JDK 11)、Service Mesh 支持、多语言支持(集群限流客户端)、智能化、自适应限流
                

Sentinel快速入门

                    提供 本地运行 demo 和 公网 demo 来帮助新手快速入门Sentinel。这两种方式都只需要您执行2到5个步骤。