在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。

用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二

一、介绍

JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究。

二、下载jar依赖包:可以去这里下载

三、基本方法介绍

1. List集合转换成json方法

List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );

2. Map集合转换成json方法

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 json = JSONObject.fromObject(map);

3. Bean转换成json代码

JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

4. 数组转换成json代码

boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

5. 一般数据转换成json代码

JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

6. beans转换成json代码

List list = new ArrayList();
JsonBean2 jb1 = new JsonBean2();
jb1.setCol(1);
jb1.setRow(1);
jb1.setValue("xx");JsonBean2 jb2 = new JsonBean2();
jb2.setCol(2);
jb2.setRow(2);
jb2.setValue("");list.add(jb1);
list.add(jb2);
JSONArray ja = JSONArray.fromObject(list);

四、演示示例

这里以基本的几个常用方法进行测试

package com.json;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;/*** 使用json-lib构造和解析Json数据* * @author Alexia* @date 2013/5/23**/
public class JsonTest {/*** 构造Json数据* * @return*/public static String BuildJson() {// JSON格式数据解析对象JSONObject jo = new JSONObject();// 下面构造两个map、一个list和一个Employee对象Map<String, String> map1 = new HashMap<String, String>();map1.put("name", "Alexia");map1.put("sex", "female");map1.put("age", "23");Map<String, String> map2 = new HashMap<String, String>();map2.put("name", "Edward");map2.put("sex", "male");map2.put("age", "24");List<Map> list = new ArrayList<Map>();list.add(map1);list.add(map2);Employee employee = new Employee();employee.setName("wjl");employee.setSex("female");employee.setAge(24);// 将Map转换为JSONArray数据JSONArray ja1 = JSONArray.fromObject(map1);// 将List转换为JSONArray数据JSONArray ja2 = JSONArray.fromObject(list);// 将Bean转换为JSONArray数据JSONArray ja3 = JSONArray.fromObject(employee);System.out.println("JSONArray对象数据格式:");System.out.println(ja1.toString());System.out.println(ja2.toString());System.out.println(ja3.toString());// 构造Json数据,包括一个map和一个Employee对象jo.put("map", ja1);jo.put("employee", ja2);System.out.println("\n最终构造的JSON数据格式:");System.out.println(jo.toString());return jo.toString();}/*** 解析Json数据* * @param jsonString Json数据字符串*/public static void ParseJson(String jsonString) {// 以employee为例解析,map类似JSONObject jb = JSONObject.fromObject(jsonString);JSONArray ja = jb.getJSONArray("employee");List<Employee> empList = new ArrayList<Employee>();// 循环添加Employee对象(可能有多个)for (int i = 0; i < ja.size(); i++) {Employee employee = new Employee();employee.setName(ja.getJSONObject(i).getString("name"));employee.setSex(ja.getJSONObject(i).getString("sex"));employee.setAge(ja.getJSONObject(i).getInt("age"));empList.add(employee);}System.out.println("\n将Json数据转换为Employee对象:");for (int i = 0; i < empList.size(); i++) {Employee emp = empList.get(i);System.out.println("name: " + emp.getName() + " sex: "+ emp.getSex() + " age: " + emp.getAge());}}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub
ParseJson(BuildJson());}}

运行结果如下

五、与org.json比较

json-lib和org.json的使用几乎是相同的,我总结出的区别有两点:

1. org.json比json-lib要轻量得多,前者没有依赖任何其他jar包,而后者要依赖ezmorph和commons的lang、logging、beanutils、collections等组件

2. json-lib在构造bean和解析bean时比org.json要方便的多,json-lib可直接与bean互相转换,而org.json不能直接与bean相互转换而需要map作为中转,若将bean转为json数据,首先需要先将bean转换为map再将map转为json,比较麻烦。

总之,还是那句话—适合自己的才是最好的,大家要按需选取使用哪种方法进行解析。最后给大家介绍两款解析Json数据的工具:一是在线工具JSON Edit(http://braincast.nl/samples/jsoneditor/);另一个是Eclipse的插件JSON Tree Analyzer,都很好用,推荐给大家使用!


      联系我

转载于:https://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html

Java构造和解析Json数据的两种方法详解一相关推荐

  1. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  2. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  3. java构建json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  4. json解析详解 java_Java解析Json数据的两种方式详解

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  5. 站长在线Python精讲:在Python中格式化字符串的两种方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...

  6. oracle如何对数据库进行备份,对Oracle数据库进行备份的两种方法详解

    首页 > 演讲稿 > 自我介绍演讲稿 > 对Oracle数据库进行备份的两种方法详解 对Oracle数据库进行备份的两种方法详解 时间:2019-05-05   来源:自我介绍演讲稿 ...

  7. Java构造和解析Json数据之org.json

    一.介绍 org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www ...

  8. Redis中持久化的两种方法详解

    Redis提供了两种不同的持久化方法来将数据存储到硬盘里面.一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里;另一种方法教只追加文件(append-only f ...

  9. php 带建数组转字符串,php数组转换为字符串的两种方法详解【附视频】

    本篇文章主要给大家介绍PHP数组转换为字符串的两种方法.(文章末尾附有对应的视频教程) 第一种方法:使用PHP本身的函数implode来直接将数组转换为字符串. 第二种方法:使用循环遍历数组元素拼接成 ...

最新文章

  1. 密码学研究-玩转密钥
  2. python3 判断进程是否存在
  3. Matlab--sort排序
  4. Java 技术篇-IntelliJ IDEA 导入数据库驱动jar包实例演示
  5. CCSpriteBatchNode的使用
  6. 全球视频监控设备市场规模分析
  7. echarts 山东地图_用Python画中国地图,实现各省份数据可视化
  8. HTML+CSS+JS实现 ❤️创意时间轮盘时钟特效❤️
  9. c#sql数据导出到excel
  10. mysql 建立索引_mysql建立索引的原则
  11. Flink-org.apache.flink.api.common.functions.AggregateFunction
  12. java 设置颜色_java 中怎样设置窗口的颜色
  13. centeros 卸载mysql_完全卸载MySql
  14. Windows CE如何根据文件名获取其对应文件图标icon
  15. python中re.group()
  16. 类人猿手游内存技术教程
  17. 微信怎么加入黑名单?微信黑名单怎么恢复好友
  18. ZigBee Routing Tables 路由表
  19. Pascal VOC转COCO格式亲测有效
  20. 2015版本的pdf文件合并拆分软件

热门文章

  1. python职能-最受欢迎的10家互联网公司揭秘Python薪资!
  2. c++强大还是python强大-Python 到底是强类型语言,还是弱类型语言?
  3. python画图-如何用python画图
  4. python 仪表盘-跟小白学Python数据分析——绘制仪表盘
  5. python慕课视频-python爬虫:爬取网站视频
  6. python爬虫requests-Python爬虫之requests介绍
  7. php和python交互-python与php的比较
  8. 学python需要什么基础知识-没学过Python先要学习哪些基础知识?
  9. python语音在线编辑-python实现语音在线合成,让你的小说自己念给你听
  10. python语言怎么用-这些小游戏是怎么用Python语言制作出来的……