JSON解析之json-lib和jackson的API

部分 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);

猜你喜欢

转载自blog.csdn.net/weixin_42476601/article/details/81700981
今日推荐