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

网友投稿 222 2023-07-23


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

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

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

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

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

简单的数据绑定

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

让我们来看看简单的数据操作绑定。在这里,我们将映射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.jhttp://ackson.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":{"http://name":"Mahesh","age":10},

// "marks":[1,2,3],

// "verified":false,

// "name":"Mahesh Kumar"

//}

studentDataMap = mapper.readValue(new File(http://"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

falshttp://e

[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 ]


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分享网页检测摇一摇实例代码
下一篇:AJAX省市区三级联动下拉菜单(java版)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~