您的位置:首页 > Web前端 > JavaScript

JSON解析之json-lib和jackson的API

2017-02-17 10:12 357 查看

部分 json-lib

Ⅰ Maven依赖

<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk15</classifier>
</dependency>


Ⅱ 知识点

1. List集合转换成json代码

List list = newArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 =JSONArray.fromObject( list );


2. Map集合转换成json代码

Map map = newHashMap();
map.put("name","json");
map.put("bool",Boolean.TRUE);
map.put("int", newInteger(1));
map.put("arr", new String[] {"a", "b" });
map.put("func", "function(i){return this.arr[i]; }");
JSONObject json =JSONObject.fromObject(map);


3. Bean转换成json代码

JSONObject jsonObject =JSONObject.fromObject(new JsonBean());


4. 数组转换成json代码 ###

boolean[] boolArray = newboolean[] { true, false, true };
JSONArray jsonArray1 =JSONArray.fromObject(boolArray);


5. 一般数据转换成json代码 ###

JSONArray jsonArray3 =JSONArray.fromObject("['json','is','easy']" );


6. 传入Html中的Json,需要使用commons-lang.jar的StringEscapeUtils工具进行转码

StringEscapeUtils.escapeHtml(json); // json是json字符串


第二部分 jackson

Ⅰ Maven依赖

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.4</version>
</dependency>


Ⅱ 准备

准备java bean: Course类

package t20161220.vo;

import java.sql.Timestamp;

public class Course {

private String courseName;
private int courseId;
private String teacherName;
private String courseDescription;
private Timestamp startTime;

// 提供所有属性的构造方法
public Course(String courseName, int courseId, String teacherName,
String courseDescription, Timestamp startTime) {
super();
this.courseName = courseName;
this.courseId = courseId;
this.teacherName = teacherName;
this.courseDescription = courseDescription;
this.startTime = startTime;
}

// getter...setter...方法
}


1. List集合转换成json代码

List<Course> courses = new ArrayList<Course>();
for(int i=0;i<3;i++){
Course e = new Course("语文", (i+1), "张雨生"+i, "语文课是一门必修课",
new Timestamp(System.currentTimeMillis()));
courses.add(e);
Thread.sleep(100);
}

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(courses);
System.out.println(json);


打印结果

[
{
"courseName": "语文",
"courseId": 1,
"teacherName": "张雨生0",
"courseDescription": "语文课是一门必修课",
"startTime": 1482202619377
},
{
"courseName": "语文",
"courseId": 2,
"teacherName": "张雨生1",
"courseDescription": "语文课是一门必修课",
"startTime": 1482202619491
},
{
"courseName": "语文",
"courseId": 3,
"teacherName": "张雨生2",
"courseDescription": "语文课是一门必修课",
"startTime": 1482202619591
}
]


2. 普通java bean转json

Course c = new Course("语文", 0, "张雨生", "语文课是一门必修课",
new Timestamp(System.currentTimeMillis()));
ObjectMapper m = new ObjectMapper();
String s = m.writeValueAsString(c);
System.out.println(s);
// {"courseName":"语文","courseId":0,"teacherName":"张雨生","courseDescription":"语文课是一门必修课","startTime":"2016年12月20日
// 11:41:46"}
// 日期类型被转化为了yyyy年MM月dd HH:mm:ss的形式,是因为在Course类的startTime属性上添加了注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")


3. java.util.Date 按格式转化

jackson默认将java.util.Date类型的数据转化为Timestamp格式。

objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);


为了能将Date类型格式化为yyyy-MM-dd HH:mm:ss 的格式,可以在封装的java bean上添加注解
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")


public class Course{
// ...
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date startTime;
// ...
}


4. HashMap 转json

Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("age", 14);
map.put("birthday", new Date());
String json1 = mapper.writeValueAsString(map);
System.out.println(json1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息