Jackson数据绑定

全屏

数据绑定API用于JSON转换和使用属性访问或使用注解POJO(普通Java对象)。以下是它的两个类型。

  • 简单数据绑定 - 转换JSON,从Java Maps, Lists, Strings, Numbers, Booleans 和 null 对象。

  • 完整数据绑定 - 转换JSON到任何JAVA类型。我们将在下一章分别绑定。

ObjectMapper读/写JSON两种类型的数据绑定。数据绑定是最方便的方式是类似XML的JAXB解析器。

简单的数据绑定

简单的数据绑定是指JSON映射到Java核心数据类型。下表列出了JSON类型和Java类型之间的关系。

Sr. No. JSON 类型 Java 类型
1 object LinkedHashMap<String,Object>
2 array ArrayList<Object>
3 string String
4 complete number Integer, Long or BigInteger
5 fractional number Double / BigDecimal
6 true | false Boolean
7 null null

让我们来看看简单的数据操作绑定。在这里,我们将映射JAVA基本类型直接JSON,反之亦然。

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

File: JacksonTester.java

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
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;

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

            Map<String,Object> studentDataMap = new HashMap<String,Object>(); 
            int[] marks = {1,2,3};

            Student student = new Student();
            student.setAge(10);
            student.setName("Mahesh");
            // JAVA Object
            studentDataMap.put("student", student);
            // JAVA String
            studentDataMap.put("name", "Mahesh Kumar");   		
            // JAVA Boolean
            studentDataMap.put("verified", Boolean.FALSE);
            // Array
            studentDataMap.put("marks", marks);

            mapper.writeValue(new File("student.json"), studentDataMap);
            //result student.json
			//{ 
            //   "student":{"name":"Mahesh","age":10},
            //   "marks":[1,2,3],
            //   "verified":false,
            //   "name":"Mahesh Kumar"
            //}
            studentDataMap = mapper.readValue(new File("student.json"), Map.class);

            System.out.println(studentDataMap.get("student"));
            System.out.println(studentDataMap.get("name"));
            System.out.println(studentDataMap.get("verified"));
            System.out.println(studentDataMap.get("marks"));
      } 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

验证输出结果

{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]


2019-05-09 23:24

JSON教程

相关教程

更多

Jackson介绍

                    ObjectMapper读/写JSON两种类型的数据绑定
                

第六章 注解式控制器详解(SpringMVC强大的数据绑定2)——跟着开涛学SpringMVC

                    6.6.6、@ModelAttribute绑定请求参数到命令对象@ModelAttribute一个具有如下三个作用:①绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用;
                

第六章 注解式控制器详解(SpringMVC强大的数据绑定1)——跟着开涛学SpringMVC

                    到目前为止,请求已经能交给我们的处理器进行处理了,接下来的事情是要进行收集数据啦,接下来我们看看我们能从请求中收集到哪些数据,除了上边提到的注解,我们还可以通过如HttpServletRequest等API得到请求数据,但推荐使用注解方式,因为使用起来更简单。
                

Jackson入门程序

                    org.codehaus.jackson.map.ObjectMapper
                

Jackson树模型JsonNode

                    
                

Jackson JsonParser类

                    
                

nginx禁止未绑定域名访问

                    对于未绑定的域名指向你的服务器时,匹配不到你配置的虚拟主机域名后,会默认使用这个虚拟主机,然后直接返回404。
                

Hadoop http address绑定内网地址

                    Hadoop默认配置里http address接口domain段均为0.0.0.0,表示可通过任一网卡访问http接口,对于双网卡服务器(一个内网,一个外网),意味着公网用户可以随意访问hadoop系统开放的web资源,存在极大的安全隐患。 我们可以修改配置将domain段替换成内网IP,这对于dfs.http.address、mapred.job.tracker.http.address没什么问
                

Jackson ObjectMapper实现JSON实际的读/写

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

微信5.0绑定银行卡教程

                    第一步、添加微信公共号   1.现在我们来完成首次支付操作以绑定银行卡。在微信主界面切换到“通讯录”界面,然后点击右上角“+”号按钮。   2.在新界面中选择“查找公众号”选项,这里以“qq充值”为例,搜索“qq充值”,点击第一个认证帐号并关注该公众帐号,如图所示,点击“关注”按钮即可关注qq充值。   第二步、激活微信内置购买功能   1.点击屏幕左下角的“微信”选项,再点击“QQ充值”公共号,
                

最新教程

更多

构建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个步骤。