java jsonarray 拷贝_JSONObject与JSONArray使用
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使用相关推荐
- JAVA中 fastjson两个JSONArray叠加,合并 ,方法 addAll()
JAVA中 fastjson两个JSONArray叠加,合并用addAll() package com.map;import com.alibaba.fastjson.JSONArray; impor ...
- java jsonarray 包,JSONObject与JSONArray的使用
1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.c ...
- 5张图搞懂Java深浅拷贝
微信搜一搜 「bigsai」 关注这个专注于Java和数据结构与算法的铁铁 文章收录在github/bigsai-algorithm 欢迎star收藏 如果本篇对你有帮助,记得点赞收藏哦! 在开发.刷 ...
- java nio拷贝文件_Java 7 – NIO文件革命
java nio拷贝文件 Java 7("项目代币")已于去年7月问世. 此版本中的新增功能很有用,例如,尝试资源-从try块中自动处理可关闭的资源,switch语句中的字符串,用 ...
- java文件复制速度_【Java】Java代码拷贝文件的速度
Java代码拷贝文件的速度究竟有多快? 前言 最近学习Java到了流处理,其中有种流叫FileInputStream和FileOutputStream,简单来说,就是操作文件的,老师给我们示范了一个非 ...
- java 实例对象拷贝,实例详解java对象拷贝
这篇文章主要介绍了java对象拷贝详解及实例的相关资料,需要的朋友可以参考下 java对象拷贝详解及实例 Java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:@T ...
- java transferto_小六六学Netty系列之Java 零拷贝
前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了 ...
- Java零拷贝四步曲——HeapByteBuffer与DirectByteBuffer
HeapByteBuffer与DirectByteBuffer Nio中Buffer类继承图如下,其中最主要的类是HeapByteBuffer和DirectByteBuffer HeapByteBuf ...
- java deepcopy_详解JAVA 深层拷贝 DeepCopy的使用方式
说到复制方法,在开发程序中要怎么复制呢?其实复制Java数组的方法很多,但大多数都是浅层复制,今天爱站技术频道小编带你寻找详解JAVA 深层拷贝 DeepCopy的使用方式. 方法实现很简单,提供两种 ...
- java接收jsonarray_java-如何通过JSONArray获取API的数据
第1步:复制WEBSERVICE URL并粘贴到您的浏览器中,这将访问Web服务并向您显示响应,使用chrome可以更方便地查看JSON响应 第2步:分析JSON响应的结构 首先,您将以字符串形式阅读 ...
最新文章
- SunDay天气——开放源代码
- 【任务脚本】0528京东618叠蛋糕任务脚本全自动脚本,京东任务全自动程序稳定运行,向大神致敬...
- springboot高级——消息队列相关
- Offline spike sorter 神经元脉冲单位分类软件
- 菜单自定义图标_操作系统任务栏了解多少,Windows server 2008 R2自定义通知区域...
- 函数的作用域在各浏览器的混乱情况
- spring mvc拦截器_Spring MVC拦截器示例
- 添加蜂窝注册表及永久存储
- hdu 5631 Rikka with Graph(图)
- bootstrape实战案例_bootstrap 实战入门教程(一)
- python3.x教程_Python3.x基础教程1
- HDU1230 火星A+B【进制】
- 【贪心 和 DP】LeetCode 55. Jump Game
- 怎样对齐文体框和图像按钮
- 苹果wifi测试中文软件,WiFi测评大师
- java微博模拟登陆_java 模拟登录新浪微博(通过cookie)
- 【示波器专题】数字示波器的主要指标——带宽
- 【Blender Python】随手一记
- html调用手机NFC,怎样使用手机的NFC功能模拟门禁?
- (投影:Projector)Unity Projector 投影器原理以及优化