JSON和Java

JSON概念

1. 本质:JSON是一个字符串。

2. 作用:JSON是JS对象的字符串表示法,用来表示JS的一个对象。

3. 表示法:花括号表示对象,方括号表示数组,逗号分隔数据,键值对表示数据。


JSON与Java对象之间的数据格式转换

1. 概念:JSON是一种轻量级数据交换格式,在数据交换过程中使用(如:Ajax请求),不仅仅局限于JS对象,可以与各种编程语言所支持的数据格式进行转换。我们需要将对象转换为字符串进行数据传递。花括号就表示Java中的一个对象,对象中的属性以键值对的形式写在花括号中,用逗号分割各个属性。

2. 对应关系举例:

Java中的一个Student类的对象与JSON的对应如下:

{
    "name":"李明",
    "gender":"男",
    "cid":"111111",
    "clazz":"计算机2016级04班",
    "age":"20"
}
public class Student {
	private String name;    //姓名
	private String gender;  //年龄
	private String cid;     //学号
	private String clazz;   //班级
	private int age;        //年龄
}

 如果对象中有数组的话:

{
    "cid":"1",
    "cname":"程序设计",
    "desc":"程序设计分类",
    "pid":"null",
    "children":[
        {
            "cid":"10",
            "cname":"Java",
            "desc":"Java Javascript分类",
            "pid":"1"
        },
        {
            "cid":"11",
            "cname":"PHP",
            "desc":"PHP分类",
            "pid":"1"
        },
        {
            "cid":"12",
            "cname":"HTML XML",
            "desc":"HTML XML分类",
            "pid":"1"
        },
        {
            "cid":"13",
            "cname":"C C++ VC VC++",
            "desc":"C C++ VC VC++分类",
            "pid":"1"
        },
        {
            "cid":"14",
            "cname":".NET",
            "desc":".NET分类",
            "pid":"1"
        }
    ]
}
public class Category {
	private String cid;     // 分类id
	private String cname;   // 分类名称
	private String pid;     // 二级分类所对应的一级分类的cid
	private String desc;    // 分类描述
	private List<Category> children;  // 子分类数组
}

3. Java的对象转换成JSON格式的代码:

转换单个对象为JSON,如:{"name":"liming","gender":"男","age":"20"},:

private String toJson(Category category){
	StringBuilder json = new StringBuilder("{");
	json.append("\"cid\"").append(":").append("\"").append(category.getCid()).append("\"");
	json.append(",");
	json.append("\"cname\"").append(":").append("\"").append(category.getCname()).append("\"");
	json.append("}");
	return json.toString();
}

代码解释:\"表示的就是"\是转义字符。

转换对象数组为JSON,如:[{"":""},{"":""},{"":""}]:

private String toJson(List<Category> cateList){
	StringBuilder json = new StringBuilder("[");	
	int i = 0;
	for(i=0;i<cateList.size()-1;i++){
		json.append(this.toJson( cateList.get(i) )).append(",");
	}
	json.append(this.toJson( cateList.get(i) ));
	json.append("]");
	return json.toString();
}

Ajax请求使用JSON作为返回数据的类型:

$.ajax({
	async : true,      //异步请求
	cache : false,     //不获取缓存中的数据,获取服务端最新返回的数据
	url : "/bookstore/BookServlet",   
	data : {           //请求参数
		method : "ajaxFindChildren",
		pid : pid
		},
	type : "POST",     //请求类型
	dataType : "json", //返回数据的数据类型,也就是下方arr的数据类型
	success : function(arr) {  //请求成功后的回调函数,arr就是一个json格式的对象或者对象数组
    }
});

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值