zoukankan      html  css  js  c++  java
  • 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对象,然后继续操作。

  • 相关阅读:
    记一则玄乎奇玄的ADG误删自救事件
    ORACLE 日常信息查询sql
    Linux脚本判断磁盘容量
    postgresql数据库创建触发器记录表修改时间
    centos7关闭防火墙
    centos7 安装mysql5.7(二进制tar包方式)
    Oracle11G RMAN-06214: Datafile Copy /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_cpbd.f
    SQLPlus中set命令
    oradehub命令
    记一报错解决:ORA-00845: MEMORY_TARGET not supported on this system
  • 原文地址:https://www.cnblogs.com/chenweichu/p/6249159.html
Copyright © 2011-2022 走看看