jsonarray 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 list = JSONArray.toList(jsonArray, Entity.class);

//利用JSONArray对象的optJSONObject方法,迭代JSONArray数组里面每个JSONObject。

//遍历一

for(int i=0;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

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

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

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

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对象,然后继续操作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值