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

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

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

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

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

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

bd9713abc344eb944131a028f0a786e8.png

让我们来看看简单的数据操作绑定。在这里,我们将映射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 studentDataMap = new HashMap();

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]

全数据绑定完全数据绑定是指JSON映射到任何Java对象。

//Create an ObjectMapper instance

ObjectMapper mapper = new ObjectMapper();

//map JSON content to Student object

Student student = mapper.readValue(new File("student.json"), Student.class);

//map Student object to JSON content

mapper.writeValue(new File("student.json"), student);

让我们来看看简单的数据操作绑定。在这里,我们将直接映射Java对象到JSON,反之亦然。

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

File: JacksonTester.java

import java.io.File;

import java.io.IOException;

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 {

Student student = new Student();

student.setAge(10);

student.setName("Mahesh");

tester.writeJSON(student);

Student student1 = tester.readJSON();

System.out.println(student1);

} catch (JsonParseException e) {

e.printStackTrace();

} catch (JsonMappingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{

ObjectMapper mapper = new ObjectMapper();

mapper.writeValue(new File("student.json"), student);

}

private Student readJSON() throws JsonParseException, JsonMappingException, IOException{

ObjectMapper mapper = new ObjectMapper();

Student student = mapper.readValue(new File("student.json"), Student.class);

return student;

}

}

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: 10 ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值