java JSONObject/JSONArray详解
应用架包:json-lib-2.4-jdk15.jar、及相关依赖架包。
一、JSONObject和JSONArray对象
-------------------------------------------------------分割线----------------------------------------------------------------
String jsonObject_str = "{'name':'张三','age':25,sex:'男'}" //一个json对象
JSONObject jSONObject = JSONObject.fromObject(jsonObject_str); // json对象字符串转成JSONArray对象
-------------------------------------------------------分割线----------------------------------------------------------------
String jsonArray_str = "[{'name':'张三','age':25,sex:'男'},{'name':'李四','age':18,sex:'女'}]"; //一个json对象数组
JSONArray jSONArray = JSONArray.fromObject(jsonArray_str); // json数组字符串转成JSONArray对象
-------------------------------------------------------分割线----------------------------------------------------------------
String jsonObject_str = "{'users':[{'name':'张三','age':25,sex:'男'},{'name':'李四','age':18,sex:'女'}],'deptName':''}"; //一个json对象,json对象users属性对应值是json对象数组
JSONObject jSONObject= JSONObject.fromObject(jsonObject_str); // json数组字符串转成JSONArray对象
JSONArray jSONArray = jSONObject.getJSONArray("users"); //JSONArray可以迭代取出每一个JSONObject
-------------------------------------------------------分割线----------------------------------------------------------------
javascript前端应该程序,可以利用{}对象和数组组织复杂的参数到后台。
前端复杂json数组组装,后端用JSONObject/JSONArray互相转换读取。
{}是json对象,[]数组对象。两个互相嵌套组合,组合成复杂的参数。
var json = {};
var array = [];
-------------------------------------------------------分割线----------------------------------------------------------------
二、前台组织json数据(JSONObject/JSONArray)
function buildJsonArray(){
var jsonArray = [];
var json = {};
$(".vote-detail .data-item").each(function(index,element){
var id = $(element).data("id");
var name= $(element).data("name");
var sex= $(element).data("sex");
json.id= id;
json.name= name;
json.sex= sex;
jsonArray.push(JSON.stringify(json));
});
var result = "["+jsonArray.join(",")+"]";
return result;
}
String jsonArray= buildJsonArray();
$.post("/demo/saveUser.do",{jsonArray:jsonArray}}); //传数据,请求后台处理。
三、前台传json对象数组->后台。传json对象数组必须加中括号“[]”
String jsonArray= [{'id':1,'name':'张三','sex':1},{'id':1,'name':'李四','sex':2}];
JSONArray jsonArray= JSONArray.fromObject(jsonArray);
//将JSONArray转换成List,但需要传入实例类(实体类与json具有相同的属性)
List<Entity> list = JSONArray.toList(jsonArray, Entity.class);
//利用JSONArray对象的optJSONObject方法,迭代JSONArray数组里面每个JSONObject。
//遍历一
for(int i=0;i<jsonArray.size();i++){
JSONObject jsonObject = jsonArray.optJSONObject(i);
Object id= jsonObject.get("id");
String name = jsonObject.getString("name");
Integer sex= jsonObject.getInt("sex");
}
//遍历二
for(int i=0;i<jsonArray.size();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Object id= jsonObject.get("id");
String name = jsonObject.getString("name");
Integer sex= jsonObject.getInt("sex");
}
四、前台传json对象->后台
String jsonObject = {'id':1,'name':'张三','sex':1};
JSONObject jsonObj = JSONObject.fromObject(jsonObject);
System.out.println(jsonObj .get("name"));
五、JSONArray遍历
public static void main(String[] args) {
String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ; // 一个未转化的字符串
JSONArray json = JSONArray.fromObject(str ); // 首先把字符串转成 JSONArray 对象
if(json.size()>0){
for(int i=0;i<json.size();i++){
JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
System.out.println("name="+job.get("name")+":value="+job.get("value")) ; // 得到 每个对象中的属性值
}
}
}
六、JSONObject和JSONArray互相转换实例。获取前台users数组对象。
//简单一点。传入json对象
public static void main(String[] args) {
String json = "{'name':'zhang',sex:1}";
JSONObject jSONObject= JSONObject.fromObject(json);
System.out.println(jSONObject.get("name"));
} //简单一点。传入数组(json数组)
public static void main(String[] args) {
String json = "[{'name':'zhang',sex:1},{'name':'li',sex:2}]";
JSONArray jSONArray = JSONArray.fromObject(json);
for(int i=0;i<jSONArray.size();i++){
JSONObject jSONObject= jSONArray.getJSONObject(i);
System.out.println(jSONObject.get("name"));
}
} //复制一点。json对象users属性值是json对象数组
public static void main(String[] args) {
String json = "{'users':[{'name':'zhang',sex:1},{'name':'li',sex:2}],'deptName':'IT部'}";
JSONObject jSONObject = JSONObject.fromObject(json);
JSONArray jSONArray = jSONObject.getJSONArray("users");
Object deptName = jSONObject.get("deptName");
System.out.println("deptName:"+deptName);
for(int i=0;i<jSONArray.size();i++){
JSONObject jsonObj = jSONArray.getJSONObject(i);
System.out.println("name:"+jsonObj.get("name")+",sex:"+jsonObj.get("sex"));
}
} //复杂一点。json对象里面包含json对象
public static void main(String[] args) {
String json = "{'users':{'one':{'name':'zhang',sex:1},'tow':{'name':'li',sex:2}},'deptName':'IT部'}";
JSONObject jSONObject = JSONObject.fromObject(json);
Object users = jSONObject.get("users");
JSONObject jSONObject_1 = JSONObject.fromObject(users);
JSONObject jSONObject_2 = jSONObject_1.getJSONObject("one");
System.out.println(jSONObject_2.get("name"));
}
总结:如果JSONObject对象属性对应值是数组就用jSONObject.getJSONArray(key)。如果JSONObject对象属性对应值是json对象,需要再转JSONObject对象,然后继续操作。
java JSONObject/JSONArray详解的更多相关文章
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Java 序列化Serializable详解
Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- 最新java数组的详解
java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...
- JAVA IO 类库详解
JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...
- 转:Java HashMap实现详解
Java HashMap实现详解 转:http://beyond99.blog.51cto.com/1469451/429789 1. HashMap概述: HashMap是基于哈希表的M ...
- 淘宝JAVA中间件Diamond详解(2)-原理介绍
淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...
- 【转】 java中HashMap详解
原文网址:http://blog.csdn.net/caihaijiang/article/details/6280251 java中HashMap详解 HashMap 和 HashSet 是 Jav ...
- Mac下Intellij IDea发布Java Web项目详解五 开始测试
测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...
随机推荐
- 柏克EPS应急电源签约联达大厦保安全
近日,柏克EPS应急电源成功签约佛山市联达大厦,保障大厦电力安全. 佛山市联达大厦占地6674㎡,总建筑面积约4.6万㎡,设有两层地下室,提供201个停车位,地面29层.大厦大楼分为主楼和副楼,主楼地 ...
- suspend
两个线程的run方法同时调用一个加了同步锁的方法,如果一个线程使用了suspend方法,那么会独占并且锁死这个同步方法,别的线程就永远没有办法进入这个线程了. 特别的是,在main方法中,调用一个线程 ...
- python入门笔记
创建变量 python的变量不需要声明数据类型. >>> fred=100 >>> print (fred) 100 >>> fred 100 创 ...
- sql 聚合函数、排序方法详解
聚合函数 count,max,min,avg,sum... select count (*) from T_Employee select Max(FSalary) from T_Employee 排 ...
- hive学习
大数据的仓库Hive学习 10期-崔晓光 2016-06-20 大数据 hadoop 10原文链接 我们接着之前学习的大数据来学习.之前说到了NoSql的HBase数据库以及Hadoop中 ...
- script标签里的defer属性
入职新公司,看代码的时候注意到有的script标签中有一个defer属性,查了一下.在这里分享出来. 需要注意的有三点,其中前两点是在错误中分辨出来的: 错误来源:http://www.w3schoo ...
- em 和 px相互转换
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Struts2版本升级到struts2 2.3.15.1操作说明
Struts2的官网公布了一个远程命令执行漏洞,官方强烈建议升级到2.3.15.1或者以上版本,该版本包含校正过的struts2核心库. 我们之前开发项目主要采用的Struts2版本是2.2.1,本文 ...
- Unity3D 处理Label的颜色代码
UILabel m_name = transform.Find("Name").GetComponent<UILabel>(); m_name.text = GetNa ...
- BackTrack5-r3配置网络信息
设置静态IP在BT终端输入:ifconfig -a 按回车// 查看所有网卡在BT终端输入:vi /etc/network/interfaces ...