今天再来记录一款生成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使用笔记的更多相关文章

  1. Json lib集成stucts2的使用方法 抛出 NestableRuntimeException异常的解决办法

    首先贴出struts 2.3.16需要导入的包 因为使用的是2.3 版本,必须要导入这个包,否则会报java.lang.NoClassDefFoundError: org/apache/commons ...

  2. Json.Net学习笔记

    http://www.cnblogs.com/xiaojinhe2/archive/2011/10/28/2227789.html Newtonsoft.Json(Json.Net)学习笔记 http ...

  3. WebService使用JSON格式传递笔记+JQuery测试

    原文WebService使用JSON格式传递笔记+JQuery测试 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以 ...

  4. 使用JsonConfig控制JSON lib序列化

    将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作.JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格 ...

  5. Atitit.json类库的设计与实现 ati json lib

    Atitit.json类库的设计与实现 ati json lib 1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex1 2. 解决之道:1 2.1. 自定义json解析库,使用多个复合的js ...

  6. Newtonsoft.Json(Json.Net)学习笔记

    Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summar ...

  7. Newtonsoft.Json(Json.Net)学习笔记-高级使用(转)

    1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称 7.动态决定属性是否序列化 8.枚举值的自定义格式化问题 9.自定义类型转换 10.全 ...

  8. Newtonsoft.Json(Json.Net)学习笔记(转)

    概述 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary&g ...

  9. Json.Net学习笔记(十) 保持对象引用

    更多内容见这里:http://www.cnblogs.com/wuyifu/archive/2013/09/03/3299784.html 默认情况下,Json.Net将通过对象的值来序列化它遇到的所 ...

  10. JSON lib 里JsonConfig详解

    一,setCycleDetectionStrategy 防止自包含 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void ...

随机推荐

  1. Win10 64bit下安装GPU版Tensorflow+Keras

    Tensorflow和Keras都是支持Python接口的,所以本文中说的都是搭建一个Python的深度学习环境. Keras是对Tensorflow或者Theano的再次封装,也就是以Tensorf ...

  2. windows 按时自动化任务

    参考文章: 1. 巧用Windows 7计划任务设置定时提醒 http://jingyan.baidu.com/article/acf728fd279fe5f8e510a333.html 2. cmd ...

  3. python2 使用matplotlib

    背景 由於pyh在python3上沒法兒用,所以只能在python2上用pyh2 相應地也要在python2上使用matplotlib 下載 有兩種方法,pip & dnf pip爲: pip ...

  4. 真机调试watch的一系列bug

    真机调试watch的一系列bug 系列一 WatchKit 2.0 app's bundle ID com.jiaoshi.memoKB is not prefixed by the parent a ...

  5. Jenkins构建持续集成

    Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变得可能.现在软件开发追求的是效率以及质量,Jenkins使得自动化成为可能! 亮点 采用shell自定义脚本,控制 ...

  6. 让ASP.NET第一次请求不变慢

    网页开发者早期最常遇到一个问题,当网站布署到IIS时候,每当IIS或是Application Pool重启后,第一位进入网站的使用者,其体验往往第一个反应就是网站很慢,然后就一直询问IT为什么网站这么 ...

  7. 20179223《Linux内核原理与分析》第七周学习笔记

    视频知识学习 1.fork()函数被调用一次,但返回两次: 2.Linux通过复制父进程来创建一个子进程,通过调用fork来实现: 3.Linux会为每个子进程动态的分配一个task_struct结构 ...

  8. NullReferenceException,就不应该存在!

    如果要你说出 .NET 中的三个异常,NullReferenceException 一定会成为其中一个:如果说出 .NET 中的一个异常,NullReferenceException 也会被大多数人说 ...

  9. 访问Mat矩阵中的元素并为其赋值

    在OpenCV中有三种方式访问矩阵中的数据元素:容易的方式,困难的方式,以及正确的方式.今天主要讲容易方式: 最容易的方式是使用宏CV_MAT_ELEM( matrix, elemtype, row, ...

  10. 重温CLR(十四) 可空类型

    我们知道,一个值类型的变量永远不可能为null.它总是包含值类型本身.遗憾的是,这在某些情况下会成为问题.例如,设计一个数据库时,可将一个列定义成为一个32位的整数,并映射到FCL的Int32数据类型 ...