JSONObject与JSONArray以及前后台数据通过json传输
来源:互联网 发布:武汉工商学院淘宝地址 编辑:程序博客网 时间:2024/05/23 12:20
1、简述JSONObject与JSONArray
JSONObject是对象,基本上是{key:value,key:value......}形式。JSONArray是数组形式。其存取数据也是有区别的,下面会详述。
2、JSONObject与JSONArray的创建
public class Test {
public static void main(String[] args) {
//JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式
//创建JsonObject第一种方法
JSONObject jsonObject = new JSONObject();
jsonObject.put("UserName", "ZHULI");
jsonObject.put("age", "30");
jsonObject.put("workIn", "ALI");
System.out.println("jsonObject1:" + jsonObject);
//创建JsonObject第二种方法
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("UserName", "ZHULI");
hashMap.put("age", "30");
hashMap.put("workIn", "ALI");
System.out.println("jsonObject2:" + 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<String> arrayList = new ArrayList<String>();
arrayList.add("ZHULI");
arrayList.add("30");
arrayList.add("ALI");
System.out.println("jsonArray2:" + 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", "20");
jsonObject2.put("workIn", "ALI");
jsonObject2.put("tel", "0000000");
jsonObject2.accumulate("tel", "1234567");//积累这个value到该key下,如果key存在,则该key的值为数组
jsonObject2.element("Array", arrayList);//如果值原来存在的话会调用accumulate
jsonObject2.put("age", 30);//如果该key已经存在则覆盖原来的值
System.out.println("jsonObject2:" + jsonObject2);
}
}
结果:
jsonObject1:{"UserName":"ZHULI","age":"30","workIn":"ALI"}
jsonObject2:{"workIn":"ALI","age":"30","UserName":"ZHULI"}
jsonArray1:["ZHULI","30","ALI"]
jsonArray2:["ZHULI","30","ALI"]
jsonArray FROM HASHMAP:[{"workIn":"ALI","age":"30","UserName":"ZHULI"}]
jsonObject2:{"UserName":"ZHULI","age":"30","workIn":"ALI","tel":["0000000","1234567"],"Array":["ZHULI","30","ALI"]}
3、解析JSON字符串:
package com.yunos.tv.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 < transitListArray.size(); i++) {
System.out.print("Array:" + transitListArray.getString(i) + " ");
}
}
}
}
返回:
UserName:ZHULI
Array:ZHULI Array:30 Array:ALI
4、前台后台的数据通过json传输
通常后端java中常见的数据保存格式为:list、map、boolean、数组、json对象、JSONArray等。以list为例,在平时的开发中都会将获取的数据保存在一个集合中如list集合,这时使用 JSONArray 对象的 JSONArray jsonarray = jar.fromObject(list); fromObject 方法将其从java变成json 数组,这时如果不繁琐 则可以直接将json数组输出,但平时为了在传递的过程中方便我们将json数组转变为string 类型, String strs = jsonarray.toString(); 之后在进行传递 , 在前台我们接受的是tostring () 类型的话我们就要使用eval() 函数进行解析,在遍历输出。
(1)前台
$.ajax({url:"/readapi",
type: "post",
data: {scf:scfname},
dataType: "json",
success: function(result){
$("#selectapi").empty();
var datas= eval(result); // 格式转化 ,将后台传递的string 转化为json对象
for(var i=0;i<datas.length;i++)
{
$("#selectapi").append("<option>"+datas[i]+"</option>");
}
}});
(2)后台
List<String> list = new ArrayList();//创建一个list集合
String scfname=beat.getRequest().getParameter("scf");
String col="apiname";
String sql="select apiname from "+scfname;
System.out.print(sql);
jdbcImp jdbc= new jdbcImp();
list=jdbc.select(sql,col);
System.out.println(list);
net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(list);
return jsonArray;
public ArrayList<String> select(String sql,String cols) {
ArrayList<String> strArray = new ArrayList<String>();
try{//监控异常
Class.forName("com.mysql.jdbc.Driver");
//获取连接对象
con=DriverManager.getConnection(url); //获取数据库连接
System.out.println("数据库连接成功!");
sta=con.createStatement();//创建语句对象
//执行SQL语句
boolean ret = sta.execute(sql);//"select * from toppromotionscf"
if(ret){
rs = sta.getResultSet();
while(rs.next()){
strArray.add(rs.getString(cols));
}
}
sta.close();
con.close();
}catch(ClassNotFoundException cnfe){cnfe.printStackTrace();}
catch(SQLException sqle){sqle.printStackTrace();}
return strArray;
}
5、java不同数据类型转换为json
(1). List集合转换成json代码
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );
(2). Map集合转换成json代码
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject json = JSONObject.fromObject(map);
(3). Bean转换成json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
(4). 数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
(5). 一般数据转换成json代码
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );
参考文章:http://blog.csdn.net/qq635785620/article/details/10436789
http://www.cnblogs.com/snake-hand/p/3167787.html
- JSONObject与JSONArray以及前后台数据通过json传输
- JSONObject与JSONArray解析Json数据例子
- JSONObject与JSONArray的区别 解析json数据
- 关于json字符串以及JSONArray以及JSONObject
- JSON实现前后台传输
- 如何使用json数据进行前后台传输(整理)
- Android小问题:String转换Json,以及org.json.JSONObject与org.json.JSONArray相互添加
- JSON数据解析(JSONArray和JSONObject)
- 用JSONObject和JSONArray 解析json数据
- Spring MVC通过JSON实现前后台数据交互
- JSONObject与JSONArray的使用-解析Json
- json前后台传输String的处理
- JSON对象中的JSONObject和JSONArray以及与Map、String、数组的转化
- 【json】JsonObject / JsonArray
- Json JsonObject JsonArray
- JSONObject,JSON,和JSONArray
- json,jsonObject , jsonArray 详解
- JSONObject/JSONArray解析json
- ubuntu openvpn服务器安装
- 30. Substring with Concatenation of All Words
- python爬虫基础之request设置问题
- Java环境变量的设置
- grails常用快捷键
- JSONObject与JSONArray以及前后台数据通过json传输
- PHP中数组排序,sort,asrot,ksort的使用示例
- 简单的登录页面设计;
- OCR开发包--你的误解有多深
- input type=file 上传图片前预览 亲测支持 ie8 chrome ff android及ios浏览器(将网上的版本整合一下)
- 使用hexo搭建个人博客
- dispatch_semaphore
- js 倒计时
- CF 361 E. Mike and Geometry Problem (排列组合+乘法逆元)