环境

commons-beanutils-1.8.3.jar

commons-collections-3.1.jar

commons-lang-2.6.jar

commons-logging-1.1.1.jar

ezmorph-1.0.6.jar

json-lib-2.4-jdk15.jar

API

JSONArray是一个有序的值序列。它的外部文本形式是一个用方括号括起来的字符串,用逗号分隔值。内部表单是具有 索引的对象getopt用于通过索引访问值的element方法,以及用于添加或替换值的方法。的值可以是任何这些类型的: BooleanJSONArrayJSONObject, NumberString,或 JSONNull object

构造函数可以将JSON文本转换为Java对象。该 toString方法转换为JSON文本。

get方法返回如果可以找到一个值,并且抛出异常如果不能找到。一个opt方法返回一个默认值,而不是抛出异常,所以是用于获得可选值是有用的。

泛型get()opt()方法返回一个可以转换或查询类型的对象。还有一些类型 getopt方法可以为您进行类型检查和输入coersion。

toString方法 生成的文本严格遵循JSON语法规则。构造者在他们接受的文本中更宽容:

  • 额外的, (逗号)可能出现在结束括号之前。
  • null当有, (逗号)省略时,将插入该值 。
  • 字符串' 可以引用(单引号)。
  • 如果字符串不以引号或单引号开头,并且如果它们不包含前导或尾随空格,并且它们不包含任何这些字符{ } [ ] / \ : , = ; #,则根本不需要引用它们: 如果它们看起来不像号,如果它们不是保留字truefalsenull
  • 值可以用; (分号) 和, (逗号)分隔。
  • 数字可以具有0- (八进制)或 0x- (十六进制)前缀。
  • 使用斜杠,斜杠和散列约定编写的注释将被忽略。

实现

简化的用户类:

package com.sshmobai;

import java.util.Date;

public class User {
	private String username;
	private String password;
	private Date createdTime;
	
   public User(){super();}
	   
	public User(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}

	public User(String username, String password, Date createdTime) {
		super();
		this.username = username;
		this.password = password;
		this.createdTime = createdTime;
	}

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Date getCreatedTime() {
		return createdTime;
	}
	public void setCreatedTime(Date createdTime) {
		this.createdTime = createdTime;
	}
	
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", createdTime=" + createdTime + "]";
	}
}

测试1

User user = new User("ssh", "mobai", new Date());
System.out.println(user);
System.out.println(JSONObject.fromObject(user).toString());

结果1

User [username=ssh, password=mobai, createdTime=Mon Jul 30 16:30:41 CST 2018]
{"createdTime":{"date":30,"day":1,"hours":16,"minutes":30,"month":6,"seconds":41,"time":1532939441331,"timezoneOffset":-480,"year":118},"password":"mobai","username":"ssh"}

测试2

User user = new User("ssh", "mobai", new Date());
System.out.println(user);

JsonConfig config = new JsonConfig();  
config.registerJsonValueProcessor(Date.class, new JsonValueProcessor() {
       //自定义日期格式
       SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
       @Override
       /**
        * 处理单个Date对象
        */
       public Object processObjectValue(String propertyName, Object date,JsonConfig config) {
          return simpleDateFormat.format(date);
       }
     
       @Override
       /**
        * 处理数组中的Date对象
        */
       public Object processArrayValue(Object date, JsonConfig config) {
          return simpleDateFormat.format(date);
       }
    });
System.out.println(JSONObject.fromObject(user, config).toString());

结果2

User [username=ssh, password=mobai, createdTime=Mon Jul 30 16:35:41 CST 2018]
{"createdTime":"2018-07-30 16:35:41","password":"mobai","username":"ssh"}

测试3

User user = new User("ssh", "mobai", new Date());
System.out.println(user);

JsonConfig config = new JsonConfig();  
config.setExcludes( new String[]{"password"});
System.out.println(JSONObject.fromObject(user,config).toString());

结果3

User [username=ssh, password=mobai, createdTime=Mon Jul 30 16:39:28 CST 2018]
{"createdTime":{"date":30,"day":1,"hours":16,"minutes":39,"month":6,"seconds":28,"time":1532939968378,"timezoneOffset":-480,"year":118},"username":"ssh"}

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐