Json-lib简单使用

Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。

1、 首先要去官方下载json-lib工具包(http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/)

Json-lib 依赖下面几个包:

下面言归正传 开始介绍json-lib的使用:

在实际项目中,为了代码复用性,减少代码冗余,常常对某些方法进行封装,用到的时候直接调用,不必要每次都重写相同代码。

Json-lib 可以处理集合或者单个对象转换成json字符串,针对集合或者单个对象json-lib采用了不同的方法来分开处理:

1)  当参数为单个对象:

//将参数对象转化成JSONObject对象

JSONObject jsonObject = JSONObject.fromObject(pObject);

//通过JSONObject的toString()方法得到json字符串

String jsonString = jsonObject.toString();

2)  当参数为集合类型

//将参数对象转换成JSONArray对象

JSONArray jsonArray = JSONArray.fromObject(pObject);

//通过jsonArray的toString()方法得到json字符串

String  jsonString = jsonArray.toString();

※json-lib在处理日期格式化的时候要注意,如果你要格式化输出日期,需要手动实现JsonValueProcessor接口,来对日期进行处理。JsonValueProcessor接口中声明了两个方法:processArrayValue(Object value, JsonConfig jsonConfig)和 processObjectValue(String key, Object value,JsonConfig jsonConfig)顾名思义,分别针对数组集合和单个对象进行处理。

下面是我的实现:

/**

实现JsonValueProcessor接口

*/

public class DateJsonValueProcessor implements JsonValueProcessor{

private String format  = "yyyy-MM-dd HH:mm:ss" ;

public DateJsonValueProcessor(String format){

this.format = format;

}

/**

*

针对数组进行处理

*/

public Object processArrayValue(Object value, JsonConfig jsonConfig) {

String[] obj = {};

if (value instanceof java.util.Date[]) {

SimpleDateFormat sf = new SimpleDateFormat(format);

java.util.Date[] dates = (java.util.Date[]) value;

obj = new String[dates.length];

for (int i = 0; i < dates.length; i++) {

obj[i] = sf.format(dates[i]);

}

}

if (value instanceof Timestamp[]) {

SimpleDateFormat sf = new SimpleDateFormat(format);

Timestamp[] dates = (Timestamp[]) value;

obj = new String[dates.length];

for (int i = 0; i < dates.length; i++) {

obj[i] = sf.format(dates[i]);

}

}

if (value instanceof java.sql.Date[]) {

SimpleDateFormat sf = new SimpleDateFormat(format);

java.sql.Date[] dates = (java.sql.Date[]) value;

obj = new String[dates.length];

for (int i = 0; i < dates.length; i++) {

obj[i] = sf.format(dates[i]);

}

}

return obj;

}

/**

* 格式化单一对象

*/

public Object processObjectValue(String key, Object value,

JsonConfig jsonConfig) {

//判断value是否为空

if(GSUtils.isEmpty(value)){

return "";

}

//判断value类型

if (value instanceof Timestamp) {

String str = new SimpleDateFormat(format).format((Timestamp) value);

return str;

} else if (value instanceof java.util.Date) {

String str = new SimpleDateFormat(format).format((java.util.Date) value);

return str;

} else if (value instanceof java.sql.Date) {

String str = new SimpleDateFormat(format).format((java.sql.Date) value);

return str;

}

return value.toString();

}

public String getFormat() {

return format;

}

public void setFormat(String format) {

this.format = format;

}

}

实现了JsonValueProcessor接口,还没有完,因为json-lib不知道啊,所以还要继续下去,现在我们需要用到JsonConfig类,通过使用这个类,可以将我们自定义的实现注册到json-lib上,关键代码如下:

JsonConfig cfg = new JsonConfig();

cfg.registerJsonValueProcessor(java.sql.Timestamp.class, new DateJsonValueProcessor(pFormatString));

cfg.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor(pFormatString));

cfg.registerJsonValueProcessor(java.sql.Date.class, new DateJsonValueProcessor(pFormatString));

到了这一步 我们终于要完成任务了,但是还是继续看吧,我们需要将jsonconfig对象传入fromObject中,注意cfg

1)  当参数为单个对象:

//将参数对象转化成JSONObject对象

JSONObject jsonObject = JSONObject.fromObject(pObject,cfg);

//通过JSONObject的toString()方法得到json字符串

String jsonString = jsonObject.toString();

2) 当参数为集合类型

//将参数对象转换成JSONArray对象

JSONArray jsonArray = JSONArray.fromObject(pObject,cfg);

//通过jsonArray的toString()方法得到json字符串

String  jsonString = jsonArray.toString();

...

关于json-lib 功能还是非常强大的,这里只是工作涉及到这部分知识点,更多功能请参考API,这里简单介绍一些工作中常用的方法:

toBean(String jsonString, Class targetClass)---将json字符串转化为目标对象,需要注意的是目标类中必须有空的构造函数。

toString()---将java对象转换成json字符串

toArray() -- 从json字串中得到相应java数组

toArray() -- 将list转换成Array

Json-lib简单使用,布布扣,bubuko.com

时间: 2024-08-25 14:13:58

Json-lib简单使用的相关文章

json的简单介绍

一.选择的意义 在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式.为了更好的使用ajax,我们将学习一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象.JSON是一种简单的数据交换格式,在某些方面,它的作用与XML非常类似,但比XML更为简单,JSON的语法简化了数据交换的难度,而且提供了一种伪对象的方式. Java的对象 < - >JavaScript对象(json数据格式) 二.J

使用fastjson转换json的简单例子

pom添加依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> 代码: package JsonTest.JsonTest; import java.util.ArrayList; import java.util.Hash

json字符串与json对象简单介绍

json字符串与json对象简单介绍:本章节介绍一下标题两个称呼所指的内容是什么.在网上或者一些前端群里,经常会看到json字符串或者json对象两个称呼.关于json字符串大家几乎没有什么异议,那就是一个字符串,具有一定的格式,代码如下: var web = '{ "name": "蚂蚁部落", "url": "www.softwhy.com" }'; 下面就该到了json对象这个称呼了,先看一个代码实例: var obj

JSON.NET 简单的使用

JSON.NET(http://json.codeplex.com/)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?) 首先为了例子随便定义一个类型: public class Product { public string Name { get; set; } public DateTime Expiry { get; set; } public decimal Price { get; set; } public st

json的简单使用

JSON(JavaScript Object  Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包. JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合.一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号):“‘名称/值’对”之间使用“,”(逗号)分隔.   规则如下:       1)映射用冒号(“:”)表示.名称:值     

Struts2+json+hignchart(简单柱状图实现--适合jquery小白)

做了一个简单的基于Struts2 + Json + HighChart的小例子,费了一下午+晚上的时间,虽然简单,但对于我这种Jquery+Ajax小白的人还是很值得记录的. 哈哈哈 # 0. 关键点找到highchart的模板网站 https://www.hcharts.cn/docs/basic-tooltip # 1. 关键点,在struts.xml中配置返回类型为json <action name="queryItemsJson" class="com.best

JSON的简单介绍以及C语言的JSON库使用

JSON概述 JSON: JavaScript 对象表示法( JavaScript Object Notation) .是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式, 但是也使用了类似于C语言家族的习惯( 包括C. C++. C#. Java. JavaScript. Perl. Python等) .这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写, 同时也易于机器解析和生成(一般用于提升网络传输速率). JSON 解析器

腾讯云数据库团队:MySQL5.7 JSON实现简单介绍

作者介绍:吴双桥 腾讯云project师 阅读原文.很多其它技术干货.请訪问fromSource=gwzcw.57435.57435.57435">腾云阁. 本文主要介绍在MySQL 5.7.7開始引入的非结构化数据类型JSON的特性以及详细的实现方式(包含存储方式).首先介绍为什么要引入JSON的原生数据类型的支持:接着介绍MySQL给用户提供的JSON操作函数,以及JSON路径表达式语法.结合两者,用户能够在数据库级别操作JSON的随意键值和数据:之后.重点介绍JSON在server側

java使用JSON进行简单的数据封装

在网络数据传输的过程中,常常要使用到数据的交换,json是比较好的一种数据交换格式. 假如要交换的数据有: username:welins password:123 那么,封装的格式应该是这样的: {“username":"welins","password":"123"} 1,发送方应该这样来进行数据的封装 JSONObject json=new JSONObject(); String username="welins&q

JavaEE-stuts2返回json数据简单实现

CSDN的ASK频道,看到关于struts2返回json数据的问题,整理了下struts2的简单demo,完成JSON数据的展示. Action定义 public class ValidateAction extends ActionSupport { private static final long serialVersionUID = 1L; private String username; public Map<String, Object> result = new HashMap&