- 浏览: 23065 次
- 性别:
- 来自: 北京
最新评论
一、简介
json-lib是一个Java类库,提供将Java对象,包括beans,maps,collections,java arrays和xml等转换成JSON,或者反向转换的功能。
二、准备
在使用json-lib之前,我们应该到官方网址下载如下包:
jakarta commons-lang 2.5
jakarta commons-beanutils 1.8.0
jakarta commons-collections 3.2.1
jakarta commons-logging 1.1.1
ezmorph 1.0.6
并将这些jar包引入到Eclipse项目当中,即可调用。
三、讲解
在进行下面的代码演示之前,我们先将几个基本的类介绍一下:
MyBean类:
[java] view plaincopy
public class MyBean {
private String id = null;
private String name = null;
ᅠ private Date date = null;
ᅠ private List cardNum = null;
private String[] cardType = {"身份证", "银行卡" , "公车卡"};
ᅠ ᅠ public String getId() {
return id;
}
ᅠ ᅠ public void setId(String id) {
this.id = id;
}
public String getName() {
return name; [color=blue][/color]
}
ᅠ ᅠ public void setName(String name) {
this.name = name;
}
ᅠ ᅠ public Date getDate() {
return date;
}
ᅠ ᅠ public void setDate(Date date) {
this.date = date;
}
ᅠ ᅠ public List getCardNum() {
ᅠ ᅠ ᅠ ᅠ return cardNum;
}
ᅠ ᅠ public void setCardNum(List cardNum) {
ᅠ ᅠ ᅠ ᅠ this.cardNum = cardNum;
}
ᅠ ᅠ public String[] getCardType() {
ᅠ ᅠ ᅠ ᅠ return cardType;
}
ᅠ ᅠ public void setCardType(String[] cardType) {
this.cardType = cardType;
}
}
Person类:
[java] view plaincopy
public class Person {
private String name = null;
public Person(){
}
public Person(String name){
this.name = name;
}
ᅠ ᅠ public String getName() {
return name;
}
ᅠ ᅠ public void setName(String name) {
this.name = name;
}
}
MyBeanWithPerson类:
public class MyBeanWithPerson {
private List<Person> list = null;
ᅠ ᅠ private Map<String,Person> map = null;
ᅠ ᅠ public List getList() {
return list;
}
ᅠ ᅠ public void setList(List list) {
this.list = list;
}
ᅠ ᅠ public Map getMap() {
return map;
}
ᅠ ᅠ public void setMap(Map map) {
this.map = map;
}
}
1.将json字符串转换成JSON,根据情况用JSONArray或JSONObject
[java] view plaincopy
public static void testJsonStrToJSON() {
JSONArray jsonArray = JSONArray.fromObject("[\"json\",\"is\",\"easy\"]");
ᅠ ᅠ System.out.println(jsonArray);
}
2.将Java Bean转换成JSON对象
[java] view plaincopy
public static void testBeadToJSON() {
MyBean bean = new MyBean();
bean.setId("001");
bean.setName("银行卡");
bean.setDate(new Date());
ᅠ ᅠ List cardNum = new ArrayList();
cardNum.add("农行");
cardNum.add("工行");
cardNum.add("建行");
cardNum.add(new Person("test"));
ᅠ ᅠ bean.setCardNum(cardNum);
ᅠ ᅠ JSONObject jsonObject = JSONObject.fromObject(bean);
ᅠ ᅠ System.out.println(jsonObject);
}
3.将一般的数组转换成JSON
[java] view plaincopy
public static void testArrayToJSON() {
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray = JSONArray.fromObject(boolArray);
System.out.println(jsonArray);
}
4.将Collection对象转换成JSON
[java] view plaincopy
public static void testListToJSON() {
List list = new ArrayList();
list.add("first");
list.add("second");
ᅠ ᅠ JSONArray jsonArray = JSONArray.fromObject(list);
ᅠ ᅠ System.out.println(jsonArray);
} <span style="font-family: Simsun; font-size: 15.555556297302246px;"> </span>
5.将Map转换成JSON
[java] view plaincopy
public static void testMapToJSON() {
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
ᅠ ᅠ JSONObject jsonObject = JSONObject.fromObject(map);
ᅠ ᅠ System.out.println(jsonObject);
}
6.将普通类型的JSON字符串转换成JSON
[java] view plaincopy
public static void testJSONToObject() throws Exception {
// 将JSon字符串转换成JsonObject对象
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:\"function(a){ return a; }\",array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(json);
System.out.println(jsonObject);
// 将JsonObject对象转换成JavaBean对象
Object bean = JSONObject.toBean(jsonObject);
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "name"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "bool"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "int"));
System.out.println(PropertyUtils.getProperty(bean, "double"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "func"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "array"));
ᅠ ᅠ List arrayList = (List) JSONArray.toCollection(jsonObject.getJSONArray("array"));
ᅠ ᅠ for (Object object : arrayList) {
System.out.println(object);
}
} <span style="font-family: Simsun; font-size: 15.555556297302246px;"> </span>
7.将复合类型的JSON字符串转换成复合对象,包含List
[java] view plaincopy
public static void testJSONToBeanHavaList() {
String json = "{list:[{name:\"test1\"},{name:\"test2\"}]}";
Map classMap = new HashMap();
classMap.put("list", Person.class);
ᅠ ᅠ MyBeanWithPerson diyBean = (MyBeanWithPerson) JSONObject.toBean(
ᅠ ᅠ JSONObject.fromObject(json), MyBeanWithPerson.class, classMap);
ᅠ ᅠ System.out.println(diyBean);
ᅠ ᅠ List list = diyBean.getList();
for (Object o : list) {
if (o instanceof Person) {
Person p = (Person) o;
ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ System.out.println(p.getName());
}
}
}
8.将复合类型的JSON字符串转换成复合对象,包含Map
[java] view plaincopy
public static void testJSONToBeanHavaMap() {
// 把Map看成一个对象
String json = "{list:[{name:\"test1\"},{name:\"test2\"}],map:{test1:{name:\"test1\"},test2:{name:\"test2\"}}}";
Map classMap = new HashMap();
classMap.put("list", Person.class);
classMap.put("map", Map.class);
// 使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析
MyBeanWithPerson diyBean =(MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json), MyBeanWithPerson.class, classMap);
ᅠ ᅠ System.out.println(diyBean);
ᅠ ᅠ System.out.println("do the list release");
List<Person> list = diyBean.getList();
for (Person o : list) {
Person p = (Person) o;
ᅠ ᅠ ᅠ ᅠ System.out.println(p.getName());
}
ᅠ ᅠ System.out.println("do the map release");
// 先往注册器中注册变换器,需要用到ezmorph包中的类
MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();
ᅠ ᅠ Morpher dynaMorpher = new BeanMorpher(Person.class, morpherRegistry);
morpherRegistry.registerMorpher(dynaMorpher);
ᅠ ᅠ Map map = diyBean.getMap();
//这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象
ᅠ ᅠ System.out.println(map);
ᅠ ᅠ ᅠList<Person> output = new ArrayList();
ᅠ ᅠ for (Iterator i = map.values().iterator(); i.hasNext();) {
// 使用注册器对指定DynaBean进行对象变换
output.add((Person) morpherRegistry.morph(Person.class, i.next()));
}
for (Person p : output) {
ᅠ ᅠ ᅠ ᅠ System.out.println(p.getName());
}
}
json-lib是一个Java类库,提供将Java对象,包括beans,maps,collections,java arrays和xml等转换成JSON,或者反向转换的功能。
二、准备
在使用json-lib之前,我们应该到官方网址下载如下包:
jakarta commons-lang 2.5
jakarta commons-beanutils 1.8.0
jakarta commons-collections 3.2.1
jakarta commons-logging 1.1.1
ezmorph 1.0.6
并将这些jar包引入到Eclipse项目当中,即可调用。
三、讲解
在进行下面的代码演示之前,我们先将几个基本的类介绍一下:
MyBean类:
[java] view plaincopy
public class MyBean {
private String id = null;
private String name = null;
ᅠ private Date date = null;
ᅠ private List cardNum = null;
private String[] cardType = {"身份证", "银行卡" , "公车卡"};
ᅠ ᅠ public String getId() {
return id;
}
ᅠ ᅠ public void setId(String id) {
this.id = id;
}
public String getName() {
return name; [color=blue][/color]
}
ᅠ ᅠ public void setName(String name) {
this.name = name;
}
ᅠ ᅠ public Date getDate() {
return date;
}
ᅠ ᅠ public void setDate(Date date) {
this.date = date;
}
ᅠ ᅠ public List getCardNum() {
ᅠ ᅠ ᅠ ᅠ return cardNum;
}
ᅠ ᅠ public void setCardNum(List cardNum) {
ᅠ ᅠ ᅠ ᅠ this.cardNum = cardNum;
}
ᅠ ᅠ public String[] getCardType() {
ᅠ ᅠ ᅠ ᅠ return cardType;
}
ᅠ ᅠ public void setCardType(String[] cardType) {
this.cardType = cardType;
}
}
Person类:
[java] view plaincopy
public class Person {
private String name = null;
public Person(){
}
public Person(String name){
this.name = name;
}
ᅠ ᅠ public String getName() {
return name;
}
ᅠ ᅠ public void setName(String name) {
this.name = name;
}
}
MyBeanWithPerson类:
public class MyBeanWithPerson {
private List<Person> list = null;
ᅠ ᅠ private Map<String,Person> map = null;
ᅠ ᅠ public List getList() {
return list;
}
ᅠ ᅠ public void setList(List list) {
this.list = list;
}
ᅠ ᅠ public Map getMap() {
return map;
}
ᅠ ᅠ public void setMap(Map map) {
this.map = map;
}
}
1.将json字符串转换成JSON,根据情况用JSONArray或JSONObject
[java] view plaincopy
public static void testJsonStrToJSON() {
JSONArray jsonArray = JSONArray.fromObject("[\"json\",\"is\",\"easy\"]");
ᅠ ᅠ System.out.println(jsonArray);
}
2.将Java Bean转换成JSON对象
[java] view plaincopy
public static void testBeadToJSON() {
MyBean bean = new MyBean();
bean.setId("001");
bean.setName("银行卡");
bean.setDate(new Date());
ᅠ ᅠ List cardNum = new ArrayList();
cardNum.add("农行");
cardNum.add("工行");
cardNum.add("建行");
cardNum.add(new Person("test"));
ᅠ ᅠ bean.setCardNum(cardNum);
ᅠ ᅠ JSONObject jsonObject = JSONObject.fromObject(bean);
ᅠ ᅠ System.out.println(jsonObject);
}
3.将一般的数组转换成JSON
[java] view plaincopy
public static void testArrayToJSON() {
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray = JSONArray.fromObject(boolArray);
System.out.println(jsonArray);
}
4.将Collection对象转换成JSON
[java] view plaincopy
public static void testListToJSON() {
List list = new ArrayList();
list.add("first");
list.add("second");
ᅠ ᅠ JSONArray jsonArray = JSONArray.fromObject(list);
ᅠ ᅠ System.out.println(jsonArray);
} <span style="font-family: Simsun; font-size: 15.555556297302246px;"> </span>
5.将Map转换成JSON
[java] view plaincopy
public static void testMapToJSON() {
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
ᅠ ᅠ JSONObject jsonObject = JSONObject.fromObject(map);
ᅠ ᅠ System.out.println(jsonObject);
}
6.将普通类型的JSON字符串转换成JSON
[java] view plaincopy
public static void testJSONToObject() throws Exception {
// 将JSon字符串转换成JsonObject对象
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:\"function(a){ return a; }\",array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(json);
System.out.println(jsonObject);
// 将JsonObject对象转换成JavaBean对象
Object bean = JSONObject.toBean(jsonObject);
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "name"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "bool"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "int"));
System.out.println(PropertyUtils.getProperty(bean, "double"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "func"));
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "array"));
ᅠ ᅠ List arrayList = (List) JSONArray.toCollection(jsonObject.getJSONArray("array"));
ᅠ ᅠ for (Object object : arrayList) {
System.out.println(object);
}
} <span style="font-family: Simsun; font-size: 15.555556297302246px;"> </span>
7.将复合类型的JSON字符串转换成复合对象,包含List
[java] view plaincopy
public static void testJSONToBeanHavaList() {
String json = "{list:[{name:\"test1\"},{name:\"test2\"}]}";
Map classMap = new HashMap();
classMap.put("list", Person.class);
ᅠ ᅠ MyBeanWithPerson diyBean = (MyBeanWithPerson) JSONObject.toBean(
ᅠ ᅠ JSONObject.fromObject(json), MyBeanWithPerson.class, classMap);
ᅠ ᅠ System.out.println(diyBean);
ᅠ ᅠ List list = diyBean.getList();
for (Object o : list) {
if (o instanceof Person) {
Person p = (Person) o;
ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ System.out.println(p.getName());
}
}
}
8.将复合类型的JSON字符串转换成复合对象,包含Map
[java] view plaincopy
public static void testJSONToBeanHavaMap() {
// 把Map看成一个对象
String json = "{list:[{name:\"test1\"},{name:\"test2\"}],map:{test1:{name:\"test1\"},test2:{name:\"test2\"}}}";
Map classMap = new HashMap();
classMap.put("list", Person.class);
classMap.put("map", Map.class);
// 使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析
MyBeanWithPerson diyBean =(MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json), MyBeanWithPerson.class, classMap);
ᅠ ᅠ System.out.println(diyBean);
ᅠ ᅠ System.out.println("do the list release");
List<Person> list = diyBean.getList();
for (Person o : list) {
Person p = (Person) o;
ᅠ ᅠ ᅠ ᅠ System.out.println(p.getName());
}
ᅠ ᅠ System.out.println("do the map release");
// 先往注册器中注册变换器,需要用到ezmorph包中的类
MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();
ᅠ ᅠ Morpher dynaMorpher = new BeanMorpher(Person.class, morpherRegistry);
morpherRegistry.registerMorpher(dynaMorpher);
ᅠ ᅠ Map map = diyBean.getMap();
//这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象
ᅠ ᅠ System.out.println(map);
ᅠ ᅠ ᅠList<Person> output = new ArrayList();
ᅠ ᅠ for (Iterator i = map.values().iterator(); i.hasNext();) {
// 使用注册器对指定DynaBean进行对象变换
output.add((Person) morpherRegistry.morph(Person.class, i.next()));
}
for (Person p : output) {
ᅠ ᅠ ᅠ ᅠ System.out.println(p.getName());
}
}
发表评论
-
Myeclipse激活教程(windows&linux)
2014-03-03 14:42 0Myeclipse激活教程(windows&linux ... -
JAVA学习路线图
2014-03-03 14:40 0第一阶段-Java基础 ... -
java.util.Date和java.sql.Date的区别及应用
2014-03-03 14:36 556java.util.Date 就是在除了SQL语句的情况下面使 ... -
Java程序员面试中的多线程问题
2014-03-03 14:25 695很多核心Java面试题来源于多线程(Multi-Threadi ... -
如何从Oracle公司官网下载java7 API文档
2014-03-03 14:19 17151、首先打开官网: http://www.oracle.com ... -
java 4中代码块执行顺序
2014-03-03 14:04 587public class FF extends DD { ... -
java 代码块分类说明
2014-03-03 13:42 429一、普通代码块 直 ... -
String转变Date
2014-02-27 18:42 512import java.text.DateFormat; im ... -
Java正则表达式大全
2014-02-26 08:50 955[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+ ... -
java多线程总结
2014-01-16 11:38 957在java中要想实现多线程 ... -
Java中观察者模式的使用
2014-01-11 14:37 606在一对多依赖的对象关系中, 如果这个'一'对象状态发生了 ... -
java 中枚举类型,整型,字符串之间转换
2014-01-08 20:31 507enum<->int enum -> int ... -
创建Json
2014-01-08 09:39 425JSON解析类可以分为以下几个类 JSONObje ...
相关推荐
总的来说,`json-lib-2.3-jdk15`是一个强大的工具,为Java开发者提供了处理JSON数据的强大支持,尤其对于那些使用JDK 1.5环境的项目。通过其丰富的API和高效的性能,开发者可以方便地进行JSON操作,提升项目的开发...
总的来说,`json-lib-2.2.3-jdk15.jar`是一个适用于Java 1.5环境的JSON处理库,它提供了一整套工具,帮助开发者在Java应用程序中方便地处理JSON数据。尽管现在有更现代的替代品如Gson、Jackson等,但在某些场景下,...
`json-lib-2.4-jdk15`是JSON库的一个特定版本,专为JDK 1.5设计,确保在该环境下能够正常运行。 `json-lib`库主要包含以下组件和功能: 1. **JSON转换**:`json-lib`提供了将Java对象如Map、List、自定义类等转换...
JSON库如json-lib-2.4是Java开发者在处理JSON数据时的重要工具,它提供了一系列API,使得JSON与Java对象之间的转换变得更加简单。本文将深入探讨json-lib-2.4及其在Java开发中的应用。 首先,json-lib-2.4是一个...
在使用`json-lib-2.3-jdk15`时,你需要确保正确地将其加入到项目的类路径中,通常是通过Maven或Gradle等构建工具来管理依赖。对于压缩包中的`json-lib.jar`,可以直接将它放入项目的`lib`目录,然后在运行时确保JVM...
json-lib-2.2.2-jdk15.jar是JSON库的一个版本,特别针对Java 1.5(JDK 1.5)进行了优化。这个压缩包包含了json-lib库的二进制文件,用于在Android和Java平台上解析和生成JSON数据。尽管这个版本是针对JDK 1.5,但...
`json-lib-2.4-jdk15.jar`是这个库的一个特定版本,适用于JDK 1.5环境。 在Java开发中,`json-lib`库提供了多种将Java对象序列化为JSON字符串的方法,包括: 1. **Java Bean到JSON**: 只需传入一个Java Bean对象,...
3. ** Commons Lang**:Apache Commons Lang库,提供了很多Java语言功能的扩展,可能用于处理JSON解析过程中的各种任务。 4. **Commons BeanUtils**:Apache Commons BeanUtils库,简化了JavaBean属性的操作,可能在...
4. **json-lib-2.4-jdk13.jar**:这是核心的json-lib库,包含了JSON解析和序列化的具体实现,针对Java 1.3版本进行了优化。它可以将Java对象如数组、列表、映射等转换成JSON格式,反之也可以将JSON文本解码为相应的...
总的来说,`json-lib-2.4-jdk15-sources.jar`为开发者提供了一个强大的工具,不仅能够方便地处理JSON数据,还通过源码开放了学习和定制的空间,对于提升Java Web开发技能大有裨益。通过研究这个库,我们可以更好地...
标题中的"ezmorph-1.0.6.jar"和"json-lib-2.2.2-jdk15.rar"指的是两个不同的Java库,用于处理数据转换和JSON操作。ezmorph是一个Java库,提供了对象到对象的转换功能,而json-lib是另一个库,专门用于处理JSON...
json-lib-2.3.jar是这个库的一个版本,用于支持将Java对象转换成JSON格式和将JSON数据反序列化为Java对象。 标题中提到的"json-lib-2.3.jar"是json-lib库的一个具体实现,主要包含了一系列处理JSON的类和方法。这个...
JSON-Lib-2.4-jdk15是JSON-Lib的一个特定版本,它针对JDK 1.5进行了优化,以适应该版本的Java环境。这个库包含了处理JSON的多种功能,包括将Java对象转换为JSON字符串,以及将JSON文本解析回相应的Java对象。这对于...
总之,`json-lib-2.4 jar`为Java开发者提供了一个方便的工具,用于在Java代码和JSON数据之间进行交互。尽管存在更新的替代品,但对于某些项目,特别是那些已经使用JSON-Lib并希望保持向后兼容性的项目,它仍然是一个...
`json-lib-2.4-jdk15.jar所需全部JAR包.rar`这个压缩包很可能包含了上述所有依赖,解压后需要将它们放入项目的`lib`目录,或者在构建工具(如Maven或Gradle)中配置依赖。 下面是一个简单的示例,展示了如何使用`...
5. **JSON解析和生成**:解析JSON字符串以获取数据,并生成符合JSON规范的字符串。 6. **JSON对象操作**:添加、删除、修改JSON对象的属性,以及遍历和查询JSON对象的结构。 在实际开发中,这两个库经常一起使用,...
"json-lib-2.1-jdk15.jar" 是一个针对Java 1.5版本优化的JSON库实现,由json-lib项目提供。这个特定的版本(2.1)表明它是该库的一个稳定版本,适用于Java 1.5及更高版本的环境。这个JAR(Java Archive)文件包含了...
json-lib是java工程中常用到的json解析工具,使用简单灵活,本压缩包中包括的文件有(使用json-lib必备的jar包): commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-...
1. `json-lib-2.4-jdk15-sources.jar`:这是源代码的归档文件,开发者可以查看和研究`json-lib`库的内部实现。源代码对于学习和调试非常有用,特别是当你遇到问题或者想要扩展或定制库功能时。通过源代码,你可以...
"json-lib"核心包包含了JSON解析、序列化和反序列化的基本功能,而其他五个依赖包可能是为了提供额外的支持,例如与其他数据格式(如XML、Hibernate对象等)之间的转换,或者提供更高效的解析和生成机制。...