json-lib使用笔记
今天再来记录一款生成JSON的工具——json-lib,它比较与我之前使用的FastJSON来说,使用都是很简单的,但是要使用json-lib要需要的jar包可真不少,所需要的依赖jar有八九个之多,就这一点来说还是使用FastJSON较为方便
json-lib需要的最全jar:
commons-beanutils.jar
commons-collections.jar
commons-lang.jar
commons-logging.jar
ezmorph.jar
json-lib-2.3-jdk15.jar
xom.jar
oro.jar
groovy-all.jar
junit.jar
只是用其主要功能需要的jar:
commons-beanutils.jar
commons-collections.jar
commons-lang.jar
commons-logging.jar
ezmorph.jar
json-lib-2.3-jdk15.jar
xom.jar
json-lib中的核心类
在json-lib中只有两个核心类:
JSONObject
JSONArray
开始使用
同样我们这里先准备一个JavaBean:
Person.java :
public class Person {
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Person(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
}
JSONObject类的使用:
直接new出JSONObject,就可以使用其方法:比如put()方法添加数据,toString()变成String 等等
//普通使用,类似使用map
@Test
public void fun1(){
JSONObject jsonObject=new JSONObject();
jsonObject.put("name", "zhangshan");
jsonObject.put("age", 21);
jsonObject.put("sex", "男");
System.out.println(jsonObject.toString());
}
这就是没有使用JavaBean的时候直接添加属性与值,类似于map的使用
显示的数据格式:
{"name":"zhangshan","age":21,"sex":"男"}
如果使用JavaBean,就可以使用JSONObject的fromObject()(静态方法)方法
//将一个JavaBean转换为JSON
@Test
public void fun2(){
Person person=new Person("lz", 21, "男");
JSONObject json = JSONObject.fromObject(person);
System.out.println(json.toString());
}
使用JavaBean的方式,最为规范最为常用
显示的数据格式:
{"age":21,"name":"lz","sex":"男"}
JSONArray类的使用
根据名字就可以猜到是处理数组/集合的类,也是先new出来该对象,然后添加数据就和list的使用较为类似
//以集合的方式生成JSON
@Test
public void fun3(){
Person person1=new Person("lz", 21, "男");
Person person2=new Person("xx", 21, "女");
JSONArray list=new JSONArray();
list.add(person1);
list.add(person2);
System.out.println(list.toString());
}
不存在集合的时候,将数据以数组形式生成JOSN
显示的数据格式:
[{"age":21,"name":"lz","sex":"男"},{"age":21,"name":"xx","sex":"女"}]
//原本就有一个集合,生成JSON格式
@Test
public void fun4(){
Person person1=new Person("lz", 21, "男");
Person person2=new Person("xx", 21, "女");
List<Person> list=new ArrayList<Person>();
list.add(person1);
list.add(person2); System.out.println(JSONArray.fromObject(list).toString());
}
原本就有一个集合,直接使用JSONArray.fromObject()方法即可
显示的数据格式:
[{"age":21,"name":"lz","sex":"男"},{"age":21,"name":"xx","sex":"女"}]
JS解释服务器发送过来的JSON字符串
服务器发送过来JSON字符串后,客户端需要对其进行解析。这时客户端需要使用eval()方法对JSON字符串进行执行!但要注意,eval()方法在执行JSON时,必须把JSON字符串使用一对圆括号括起来
var json = "{\"name\":\"zhangSan\", \"age\":\"18\", \"sex\":\"male\"}"; //手工写一段JSON数据
var person = eval("(" + json + ")"); //解析JSON为一个对象
alert(person.name + ", " + person.age + ", " + person.sex);
当然使用JQuery解析更为方便
Maven中的依赖信息
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<classifier>jdk15</classifier>
<version>2.4</version>
</dependency>
json-lib的依赖必须添加classifier节点,不然会下载不到
json-lib使用笔记的更多相关文章
- Json lib集成stucts2的使用方法 抛出 NestableRuntimeException异常的解决办法
首先贴出struts 2.3.16需要导入的包 因为使用的是2.3 版本,必须要导入这个包,否则会报java.lang.NoClassDefFoundError: org/apache/commons ...
- Json.Net学习笔记
http://www.cnblogs.com/xiaojinhe2/archive/2011/10/28/2227789.html Newtonsoft.Json(Json.Net)学习笔记 http ...
- WebService使用JSON格式传递笔记+JQuery测试
原文WebService使用JSON格式传递笔记+JQuery测试 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以 ...
- 使用JsonConfig控制JSON lib序列化
将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作.JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格 ...
- Atitit.json类库的设计与实现 ati json lib
Atitit.json类库的设计与实现 ati json lib 1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex1 2. 解决之道:1 2.1. 自定义json解析库,使用多个复合的js ...
- Newtonsoft.Json(Json.Net)学习笔记
Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summar ...
- Newtonsoft.Json(Json.Net)学习笔记-高级使用(转)
1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称 7.动态决定属性是否序列化 8.枚举值的自定义格式化问题 9.自定义类型转换 10.全 ...
- Newtonsoft.Json(Json.Net)学习笔记(转)
概述 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary&g ...
- Json.Net学习笔记(十) 保持对象引用
更多内容见这里:http://www.cnblogs.com/wuyifu/archive/2013/09/03/3299784.html 默认情况下,Json.Net将通过对象的值来序列化它遇到的所 ...
- JSON lib 里JsonConfig详解
一,setCycleDetectionStrategy 防止自包含 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void ...
随机推荐
- Ubuntu与ROS的Docker桌面系统与ROS在线练习课程(在线Linux虚拟机)
ROS在线练习课程正在逐步完善中,目前以ROS官网中文资料制作,可参考: https://www.shiyanlou.com/courses/854 邀请码 U23ERF8H 安装Ubuntu+RO ...
- Java基础面试题 (一)
1.面向对象的三个特征 封装,继承,多态.这个应该是人人皆知,有时候也会加上抽象. 2.多态的好处 允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息 ...
- [Linux] 复制文件夹下指定创建时间的文件
暂时不知道什么命令可以达到这个目标,目前的方法是分步进行: 首先,找出指定创建时间内的文件名 例如在imgs文件夹中,找出创建时间在一天内的文件 > feb_files.txt 然后将这些文件复 ...
- 5.查找最小的k个元素[Kmin]
[题目] 输入n个整数,输出其中最小的k个. 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4. [分析] 这道题最简单的思路莫过于把输入的n个整数排序,这样排在最前 ...
- Buildroot 指定内核版本
/******************************************************************************** * Buildroot 指定内核版本 ...
- Jmter-Test Fragment、Include Controller和Module Controller
Test Fragment--测试片段 The Test Fragment is used in conjunction with the Include Controller and Module ...
- hiho 1515 : 分数调查 简单bfs
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校总共有N名学生,编号1-N.学校刚刚进行了一场全校的古诗文水平测验. 学校没有公布测验的成绩,所以小Hi只能得 ...
- BZOJ1407 NOI2002 Savage 【Exgcd】
BZOJ1407 NOI2002 Savage Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...
- 如何优雅的使用RabbitMQ(转)
RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具.消息队列的使用场景大概有3种: 1.系统集成,分布式系统的设 ...
- php array_push 与 $arr[]=$value 性能比较
1.array_push方法 array_push 方法,将一个或多个元素压入数组的末尾. int array_push ( array &$array , mixed $var [, mix ...