应用架包: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)

  1. function buildJsonArray(){
  2.  
  3. var jsonArray = [];
  4. var json = {};
  5. $(".vote-detail .data-item").each(function(index,element){
  6.  
  7. var id = $(element).data("id");
  8.  
  9. var name= $(element).data("name");
  10.  
  11. var sex= $(element).data("sex");
  12.  
  13. json.id= id;
  14. json.name= name;
  15. json.sex= sex;
  16. jsonArray.push(JSON.stringify(json));
  17. });
  18.  
  19. var result = "["+jsonArray.join(",")+"]";
  20.  
  21. return result;
  22.  
  23. }
  24.  
  25. 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遍历

  1. public static void main(String[] args) {
  2. String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ; // 一个未转化的字符串
  3. JSONArray json = JSONArray.fromObject(str ); // 首先把字符串转成 JSONArray 对象
  4. if(json.size()>0){
  5. for(int i=0;i<json.size();i++){
  6. JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
  7. System.out.println("name="+job.get("name")+":value="+job.get("value")) ; // 得到 每个对象中的属性值
  8. }
  9. }
  10. }

六、JSONObject和JSONArray互相转换实例。获取前台users数组对象。

  1. //简单一点。传入json对象
  2. public static void main(String[] args) {
  3. String json = "{'name':'zhang',sex:1}";
  4. JSONObject jSONObject= JSONObject.fromObject(json);
  5. System.out.println(jSONObject.get("name"));
  6. }
  7.  
  8. //简单一点。传入数组(json数组)
  9. public static void main(String[] args) {
  10. String json = "[{'name':'zhang',sex:1},{'name':'li',sex:2}]";
  11. JSONArray jSONArray = JSONArray.fromObject(json);
  12. for(int i=0;i<jSONArray.size();i++){
  13. JSONObject jSONObject= jSONArray.getJSONObject(i);
  14. System.out.println(jSONObject.get("name"));
  15. }
  16. }
  17.  
  18. //复制一点。json对象users属性值是json对象数组
  19. public static void main(String[] args) {
  20. String json = "{'users':[{'name':'zhang',sex:1},{'name':'li',sex:2}],'deptName':'IT部'}";
  21. JSONObject jSONObject = JSONObject.fromObject(json);
  22. JSONArray jSONArray = jSONObject.getJSONArray("users");
  23. Object deptName = jSONObject.get("deptName");
  24. System.out.println("deptName:"+deptName);
  25. for(int i=0;i<jSONArray.size();i++){
  26. JSONObject jsonObj = jSONArray.getJSONObject(i);
  27. System.out.println("name:"+jsonObj.get("name")+",sex:"+jsonObj.get("sex"));
  28. }
  29. }
  30.  
  31. //复杂一点。json对象里面包含json对象
  32. public static void main(String[] args) {
  33. String json = "{'users':{'one':{'name':'zhang',sex:1},'tow':{'name':'li',sex:2}},'deptName':'IT部'}";
  34. JSONObject jSONObject = JSONObject.fromObject(json);
  35. Object users = jSONObject.get("users");
  36. JSONObject jSONObject_1 = JSONObject.fromObject(users);
  37. JSONObject jSONObject_2 = jSONObject_1.getJSONObject("one");
  38. System.out.println(jSONObject_2.get("name"));
  39. }

  

  

总结:如果JSONObject对象属性对应值是数组就用jSONObject.getJSONArray(key)。如果JSONObject对象属性对应值是json对象,需要再转JSONObject对象,然后继续操作。

java JSONObject/JSONArray详解的更多相关文章

  1. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  2. Java 序列化Serializable详解

    Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...

  3. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  4. 最新java数组的详解

    java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...

  5. JAVA IO 类库详解

    JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...

  6. 转:Java HashMap实现详解

    Java HashMap实现详解 转:http://beyond99.blog.51cto.com/1469451/429789 1.    HashMap概述:    HashMap是基于哈希表的M ...

  7. 淘宝JAVA中间件Diamond详解(2)-原理介绍

    淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...

  8. 【转】 java中HashMap详解

    原文网址:http://blog.csdn.net/caihaijiang/article/details/6280251 java中HashMap详解 HashMap 和 HashSet 是 Jav ...

  9. Mac下Intellij IDea发布Java Web项目详解五 开始测试

    测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...

随机推荐

  1. JSON入门学习

    JSON是一种与开发语言无关的轻量级的数据格式(JavaScript Object Notation) 优点:易于阅读和编写,易于程序解析和生产 JSON数据格式中没有日期及时间的数据格式的.一般直接 ...

  2. php+js实现分页

    使用onclick传递参数时,参数为空分页无效.因此无刷新页面时可利用js重新获取input的值同样通过get地址传递到分页显示的php页面.page参数接收和传递方式必须一致为post或get. j ...

  3. Android测试关注点

    Android系统app测试,一般有native app原生,web app网页, hybird app混合 1.功能测试,考虑业务逻辑,主要手机和APP交互功能,来电,短信,闹钟可能对app造成的影 ...

  4. What does it mean to “delegate to a sister class” via virtual inheritance?

    Consider the following example: class Base { public: ; ; }; class Der1 : public virtual Base { publi ...

  5. Ubuntu 下使用declare的问题

    Ubuntu在shell的执行上用户root和普通用户是不一样的. 使用vi /etc/passwd 我们就可以看到在用户的最后一行也就是定义shell执行位置的地方root的位置是/bin/bash ...

  6. 纯CSS 箭头流程,网上找的,留着备用

    无意之中看到一个纯CSS做的箭头导航(流程式),收藏一下,以备不时之需 实际效果 步骤一 步骤二 步骤三 步骤四 源代码: HTML: <div class="wrapper" ...

  7. Xcode下的批量编辑

    说明:目前为止我找到三种查找与替换功能,如果有更多的方式,请在下面留言 第一种:我们常用的查找以及查找与替换功能 在Windows下,使用Ctrl+f 快捷键查找.用Ctrl+h来进行查找与替换功能. ...

  8. 【Python】str类方法说明

    #capitalize():字符串首字符大写 string = 'this is a string.'new_str = string.capitalize()print(new_str)#输出:Th ...

  9. POJ 1637 混合图的欧拉回路判定

    题意:一张混合图,判断是否存在欧拉回路. 分析参考: 混合图(既有有向边又有无向边的图)中欧拉环.欧拉路径的判定需要借助网络流! (1)欧拉环的判定:一开始当然是判断原图的基图是否连通,若不连通则一定 ...

  10. 当C++多继承遇上类型转换[转]

      1 由来 客户用陈旧的VC++6.0进行项目开发,有一块功能需要我来实现.让一个早就习惯了VS2013的人去使用C++支持不太好的VC6去做开发实在是非常不爽,于是另辟蹊径,打算使用VC++201 ...