json 按照我的理解来说,就是一个字串表,可以用来表示对象的字符串,也可以用来表示数组。它比 xml 文件节省了很多标签的内容。

关于什么是 json,在这里我们就不过多介绍了。

Json-lib 是一个 Java 类库(官网:http://json-lib.sourceforge.net/)可以实现如下功能:

1、转换 javabeans、maps、collections、 Java arrays 和 XML 成为 json 格式数据:
2、转换 json 格式数据成为 javabeans 对象。

Json-lib 的 jar 包貌似不太好找,我在这里提供了一个版本,仅供参考。不过个人建议,还是从官网下载 jar 包会好一点,毕竟这也是一种能力。

Json-lib的基本jar包.rar

Json-lib 需要的 jar 包:

(1)commons-beanutils-1.8.3.jar
(2)commons-collections-3.2.1.jar
(3)commons-lang-2.6.jar
(4)commons-logging-1.1.1.jar
(5)ezmorph-1.0.6.jar
(6)json-lib-2.4-jdk15.jar

第一部分:将 Java 对象转换成 JSON 格式(字符串)

1、处理多个对象(数组、集合 List 或者 Set)

将“数组”类型的对象转换成 JSON 格式

JSONArray.fromObject(传入一个“数组”类型的对象);

说明:这里的数组对象可以是 Array、对象数组,集合类(Set集合);

2、处理单个对象(Map 或者 JavaBean)

将 Map类型的对象,或者单个的 JavaBean 或者嵌套的对象转换成 JSON 格式;

JSONObject.fromObject(传入一个 Map类型的对象,或者单个的 JavaBean 或者嵌套的对象);

3、使用 JsonConfig 过虑属性:适用于 JavaBean、Map;

示例代码:

JsonConfig config = new JsonConfig();
config.setExcludes(new String[] { "name" }); // 指定在转换时不包含哪些属性
Person person = new Person("A001", "Jack");
SONObject jsonObject = JSONObject.fromObject(person, config); // 在转换时传入之前的配置对象
System.out.println(jsonObject);

第二部分:将 JSON 格式(字符串)的数据转换成 Java 对象

1、处理多个对象

将 JSON 格式的字符串转换成 Array:

JSONArray jsonArray = JSONArray.fromObject("[89,90,99]");
Object array = JSONArray.toArray(jsonArray);
System.out.println(array);
System.out.println(Arrays.asList((Object[]) array));

2、处理单个对象

将 Json 串转成 JavaBean 和 Map:

核心的方法:
(1)将 Json 形式的字符串转换为 Map:

JSONObject jsonObject = JSONObject.fromObject(str);
Map<String, Object> map = (Map<String, Object>) JSONObject.toBean(jsonObject, Map.class);

(2)将 Json 形式的字符串转换为 JavaBean:

jsonObject = JSONObject.fromObject(str);
Person person = (Person) JSONObject.toBean(jsonObject, Person.class);

注意:在将 Json 形式的字符串转换为 JavaBean 的时候需要注意 JavaBean 中必须有无参构造函数,否则会报找不到初始化方法的错误。

参考资料:

1、Json 和 Jsonlib 的使用 - sunzn - 博客园
http://www.cnblogs.com/sunzn/archive/2013/02/12/2910241.html

说明:可以作文入门级别的使用教程,本身 Json-lib 就不难。

2、

JSON-lib框架,转换JSON、XML不再困难 - hoojo - 博客园
http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html

3、

java对象与json对象间的相互转换 - gchb9527的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/gchb9527/article/details/8688279

4、

Json lib 教程 - OPEN 开发经验库
http://www.open-open.com/lib/view/open1326597921734.html

5、

Json lib 教程 - OPEN 开发经验库
http://www.open-open.com/lib/view/open1326597921734.html

Json-lib 的学习笔记的更多相关文章

  1. 模块urllib requests json xml configparser 学习笔记

    发起http请求 获取返回值 返回值是字符串 第三方模块安装 pip install requests 返回值格式 xml  html  jaon json 功能  loads   字符串>&g ...

  2. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  3. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

  4. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  5. Json.Net学习笔记

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

  6. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  7. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

  8. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  9. 【Spring学习笔记-MVC-4】SpringMVC返回Json数据-方式2

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  10. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

随机推荐

  1. Luogu P3959 [NOIP2017]宝藏

    题目 STO rqy OTZ 首先这种题一看我们就知道可以爆搜. prim一眼假了,但是加个SA也能过. 所以我们来写状压. 记\(f_{i,j,S}\)表示起点到\(j\)距离为\(i\),我们现在 ...

  2. layer弹出框的简易封装和使用

    1. 封装layer 下载layer绿色版和jquery引入页面 <!DOCTYPE html> <html lang="zh-CN"> . . . < ...

  3. C#获取主机信息

    获取主机信息 最近需要做一个配合集控系统收集各个终端设备的一些信息,大致需要收集终端设备的硬件信息,CPU.内存以及硬盘使用率等信息.网上查看了一番,使用WMI来获取这些信息是最方便的.实现代码如下: ...

  4. [转载]Jupyter notebook调试

    原文来自:https://blog.csdn.net/dlhlsc/article/details/84309410 jupyter的调试是通过python自带的pdb库来实现的. 下面讲一下在not ...

  5. ES的索引、type、document、filer、mapping、id

    一.ES的存储结构 1.索引 es 中存储数据的基本单位,比如说你现在要在 es 中存储一些订单数据,你就应该在 es 中创建一个索引 order_idx,所有的订单数据就都写到这个索引里面去.看了一 ...

  6. 现身说法:面对DDoS攻击时该如何防御?

    上周,我们的网站遭到了一次DDoS攻击.虽然我对DDoS的防御还是比较了解,但是真正遇到时依然打了我个措手不及.DDoS防御是一件比较繁琐的事,面对各种不同类型的攻击,防御方式也不尽相同.对于攻击来的 ...

  7. 一、Core基于MVC的全局过滤器验证

    一.Core基于MVC的过滤器验证 1.添加一个过滤器.在Startup 中ConfigureServices方法里添加一个Filters 即我们自己授权代码类. public void Config ...

  8. Directed Roads CodeForces - 711D (基环外向树 )

    ZS the Coder and Chris the Baboon has explored Udayland for quite some time. They realize that it co ...

  9. Python修炼之路-函数

    Python编程之函数 程序的三种方式 面向对象:类------->class 面向过程:过程------>def 函数式编程:函数------>def 定义函数 函数:逻辑结构化与 ...

  10. vue项目中引入vant 使用rem布局问题

    postcss.config.js const autoprefixer = require('autoprefixer') const pxtorem = require('postcss-pxto ...