JSONObject与JSONArray

Java不像PHP解析和生产JSON总是一个比较痛苦的过程。但是使用JSONObject和JSONArray会让整个过程相对舒服一些。

JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式

需要依赖的包:

commons-lang.jar

commons-beanutils.jar

commons-collections.jar

commons-logging.jar

ezmorph.jar

json-lib-2.2.2-jdk15.jar

生成JSON:

public class Test2 {

public static void main(String[] args) {

/* 创建JsonObject第一种方法 */

JSONObject jsonObject = new JSONObject();

jsonObject.put("UserName", "ZHULI");

jsonObject.put("age", "30");

jsonObject.put("workIn", "ALI");

System.out.println("jsonObject1:" + jsonObject);

/* 创建JsonObject第二种方法 */

HashMap hashMap = new HashMap();

hashMap.put("UserName", "ZHULI");

hashMap.put("age", "30");

hashMap.put("workIn", "ALI");

System.out.println("jsonObject2 FROM HASHMAP:" + JSONObject.fromObject(hashMap));

/* 创建一个JsonArray方法1 */

JSONArray jsonArray = new JSONArray();

jsonArray.add(0, "ZHULI");

jsonArray.add(1, "30");

jsonArray.add(2, "ALI");

System.out.println("jsonArray1:" + jsonArray);

/* 创建JsonArray方法2 */

ArrayList arrayList = new ArrayList();

arrayList.add("ZHULI");

arrayList.add("30");

arrayList.add("ALI");

System.out.println("jsonArray2 FROM ArrayList:" + JSONArray.fromObject(arrayList));

/* 如果JSONArray解析一个HashMap,则会将整个对象的放进一个数组的值中 */

System.out.println("jsonArray FROM HASHMAP:" + JSONArray.fromObject(hashMap));

/* 组装一个复杂的JSONArray */

JSONObject jsonObject2 = new JSONObject();

jsonObject2.put("UserName", "ZHULI");

jsonObject2.put("age", "30");

jsonObject2.put("workIn", "ALI");

jsonObject2.element("Array", arrayList);

jsonObject2.element("Object", jsonObject);

System.out.println("jsonObject2:" + jsonObject2);

}

}

结果:

jsonObject1:{"workIn":"ALI","age":"30","UserName":"ZHULI"}

jsonObject2 FROM HASHMAP:{"workIn":"ALI","age":"30","UserName":"ZHULI"}

jsonArray1:["ZHULI","30","ALI"]

jsonArray2 FROM ArrayList:["ZHULI","30","ALI"]

jsonArray FROM HASHMAP:[{"workIn":"ALI","age":"30","UserName":"ZHULI"}]

jsonObject2:{"workIn":"ALI","age":"30","Array":["ZHULI","30","ALI"],"UserName":"ZHULI","Object":{"workIn":"ALI","age":"30","UserName":"ZHULI"}

解析JSON:

package com.xxx.video.resource.controller.web;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class Test {

public static void main(String[] args) {

String jsonString = "{\"UserName\":\"ZHULI\",\"age\":\"30\",\"workIn\":\"ALI\",\"Array\":[\"ZHULI\",\"30\",\"ALI\"]}";

/* 将Json字符串转为java对象 */

JSONObject obj = JSONObject.fromObject(jsonString);

/* 获取Object中的UserName */

if (obj.has("UserName")) {

System.out.println("UserName:" + obj.getString("UserName"));

}

/* 获取ArrayObject */

if (obj.has("Array")) {

JSONArray transitListArray = obj.getJSONArray("Array");

for (int i = 0; i

System.out.print("Array:" + transitListArray.getString(i) + " ");

}

}

}

}

返回:

UserName:ZHULI

Array:ZHULI Array:30 Array:ALI

对象遍历

if (!obj.isNull("sku")) {

HashMap skuMap = new HashMap();

JSONObject skuObject = obj.getJSONObject("sku");

Iterator keys = skuObject.keys();

String key;

Object o;

while (keys.hasNext()) {

key = keys.next();

o = skuObject.get(key);

skuMap.put(key, String.valueOf(o));

}

}

gson使用

gson和其他现有Javajson类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。

生成JOSN

public class Test2 {

public static void main(String[] args) {

Gson gson = new Gson();

HashMap map = new HashMap(); //实例化一个hashmap

map.put("username", "initphp"); //新增一个数据

map.put("password", "test");

map.put("age", "100");

String mapToJson = gson.toJson(map);

System.out.println(mapToJson);

}

}

结果:

{"username":"initphp","age":"100","password":"test"}

第二种,有确定的数据结构:

有一个person的类了

publicclass Person {

private String name;

privateint age;

/**

* @return the name

*/

public String getName() {

return name;

}

/**

* @param name the name to set

*/

publicvoid setName(String name) {

this.name = name;

}

/**

* @return the age

*/

publicint getAge() {

return age;

}

/**

* @param age the age to set

*/

publicvoid setAge(int age) {

this.age = age;

}

@Override

public String toString()

{

return name +":"+age;

}

}

public class Test2 {

public static void main(String[] args) {

Gson gson = new Gson();

List persons = new ArrayList();

for (int i = 0; i

Person p = new Person();

p.setName("name" + i);

p.setAge(i * 5);

persons.add(p);

}

String str = gson.toJson(persons);

}

}

结果:

[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}]

解析JSON

JSON字符串转对象稍微复杂点。分多种情况。

第一种,我们无法确定JSON里面的数据结构,但是能判断这个JSON是一维的结构,我们可以用HashMap来装载这个数据。

public class Test2 {

public static void main(String[] args) {

Gson gson = new Gson();

String hashString = "{\"username\":\"initphp\", \"age\":\"100\"}";

HashMap map = gson.fromJson(hashString,

new TypeToken>() {

}.getType());

System.out.print(map.get("age"));

}

}

第二种,有确定的数据结构:

Person person = gson.fromJson(str, Person.class);

java jsonarray 拷贝_JSONObject与JSONArray使用相关推荐

  1. JAVA中 fastjson两个JSONArray叠加,合并 ,方法 addAll()

    JAVA中 fastjson两个JSONArray叠加,合并用addAll() package com.map;import com.alibaba.fastjson.JSONArray; impor ...

  2. java jsonarray 包,JSONObject与JSONArray的使用

    1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.c ...

  3. 5张图搞懂Java深浅拷贝

    微信搜一搜 「bigsai」 关注这个专注于Java和数据结构与算法的铁铁 文章收录在github/bigsai-algorithm 欢迎star收藏 如果本篇对你有帮助,记得点赞收藏哦! 在开发.刷 ...

  4. java nio拷贝文件_Java 7 – NIO文件革命

    java nio拷贝文件 Java 7("项目代币")已于去年7月问世. 此版本中的新增功能很有用,例如,尝试资源-从try块中自动处理可关闭的资源,switch语句中的字符串,用 ...

  5. java文件复制速度_【Java】Java代码拷贝文件的速度

    Java代码拷贝文件的速度究竟有多快? 前言 最近学习Java到了流处理,其中有种流叫FileInputStream和FileOutputStream,简单来说,就是操作文件的,老师给我们示范了一个非 ...

  6. java 实例对象拷贝,实例详解java对象拷贝

    这篇文章主要介绍了java对象拷贝详解及实例的相关资料,需要的朋友可以参考下 java对象拷贝详解及实例 Java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:@T ...

  7. java transferto_小六六学Netty系列之Java 零拷贝

    前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了 ...

  8. Java零拷贝四步曲——HeapByteBuffer与DirectByteBuffer

    HeapByteBuffer与DirectByteBuffer Nio中Buffer类继承图如下,其中最主要的类是HeapByteBuffer和DirectByteBuffer HeapByteBuf ...

  9. java deepcopy_详解JAVA 深层拷贝 DeepCopy的使用方式

    说到复制方法,在开发程序中要怎么复制呢?其实复制Java数组的方法很多,但大多数都是浅层复制,今天爱站技术频道小编带你寻找详解JAVA 深层拷贝 DeepCopy的使用方式. 方法实现很简单,提供两种 ...

  10. java接收jsonarray_java-如何通过JSONArray获取API的数据

    第1步:复制WEBSERVICE URL并粘贴到您的浏览器中,这将访问Web服务并向您显示响应,使用chrome可以更方便地查看JSON响应 第2步:分析JSON响应的结构 首先,您将以字符串形式阅读 ...

最新文章

  1. SunDay天气——开放源代码
  2. 【任务脚本】0528京东618叠蛋糕任务脚本全自动脚本,京东任务全自动程序稳定运行,向大神致敬...
  3. springboot高级——消息队列相关
  4. Offline spike sorter 神经元脉冲单位分类软件
  5. 菜单自定义图标_操作系统任务栏了解多少,Windows server 2008 R2自定义通知区域...
  6. 函数的作用域在各浏览器的混乱情况
  7. spring mvc拦截器_Spring MVC拦截器示例
  8. 添加蜂窝注册表及永久存储
  9. hdu 5631 Rikka with Graph(图)
  10. bootstrape实战案例_bootstrap 实战入门教程(一)
  11. python3.x教程_Python3.x基础教程1
  12. HDU1230 火星A+B【进制】
  13. 【贪心 和 DP】LeetCode 55. Jump Game
  14. 怎样对齐文体框和图像按钮
  15. 苹果wifi测试中文软件,WiFi测评大师
  16. java微博模拟登陆_java 模拟登录新浪微博(通过cookie)
  17. 【示波器专题】数字示波器的主要指标——带宽
  18. 【Blender Python】随手一记
  19. html调用手机NFC,怎样使用手机的NFC功能模拟门禁?
  20. (投影:Projector)Unity Projector 投影器原理以及优化

热门文章

  1. 继承中的盲点,成员或者析构函数,成员函数中为什么有时候需要定义,有时候不需要呢,(已解决)...
  2. 简单易懂的排序算法演示
  3. 17 java 存在的问题(转)
  4. 命令行参数解析函数 getopt
  5. BOW( opencv源码)
  6. 拓端tecdat|R语言Meta分析效应量
  7. 计算机操作系统笔记(六)
  8. Graphviz神经网络的绘图
  9. 20171017在线编程题
  10. 《Attention-based LSTM for Aspect-level Sentiment Classification》阅读笔记