数据交换格式之json

客户端与服务器常用数据交换格式xml、json、html

数据交换格式用场景

移动端(安卓、IOS)通讯方式采用http协议+JSON格式 走restful风格。
很多互联网项目都采用Http协议+JSON
因为xml比较重WebService服务采用http+xml格式 银行项目使用比较多

什么是JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂
而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过JSON来进行交换

JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON的形式是用大括号“{}”包围起来的项目列表,每一个项目间用逗号(,)分隔,而项目就是用冒号(:)分隔的属性名和属性值。这是典型的字典表示形式,也再次表明javascript里的对象就是字典结构。不管多么复杂的对象,都可以用一句JSON代码来创建并赋值。在JSON中,名称 / 值对包括字段名称(在双引号中),后面写一个冒号,然后是值

样例:

{
    "id": "10",
    "name": "itsust",
    "items": [
        {
            "itemId": "20",
            "itemName": "小吴"
        },
        {
            "itemId": "21",
            "itemName": "小马"
        }
    ]
}

JSON格式的分类

JSON有两种结构

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,“javascript”,“vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

常用JSON解析框架

fastjson(阿里)、gson(谷歌)、jackson(SpringMVC自带)
使用fastjson解析json
添加jar fastjson-1.1.43 或引入maven依赖

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.43</version>
</dependency>

使用fastjson api

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式JSON 文本 
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

解析json

static String jsonStr = "{\"sites\":[{\"name\":\"小吴\",\"url\":\"itsust\"},{\"name\":\"小马\",\"url\":\"xiao\"}]}";
解析程序:
	public static void main(String[] args) {
		JSONObject jsonObject = new JSONObject();
		// 将json字符串转为jsonbject
		JSONObject jsonStrObject = jsonObject.parseObject(jsonStr);
		JSONArray jsonArray = jsonStrObject.getJSONArray("sites");
		for (Object object : jsonArray) {
			JSONObject stObject = (JSONObject) object;
			String name = stObject.getString("name");
			String url = stObject.getString("url");
			System.out.println(name + "---" + url);
		}
	}

Json转对象

class Item {
	private String itemId;
	private String itemName;

public String getItemId() {

	return itemId;
}

public void setItemId(String itemId) {

	this.itemId = itemId;
}

public String getItemName() {

	return itemName;
}

public void setItemName(String itemName) {

	this.itemName = itemName;
}

@Override
public String toString() {
	return "Item [itemId=" + itemId + ", itemName=" + itemName + "]";
}

}

public class User {
private String id;
private String name;
private List<Item> items;

public String getId() {

	return id;
}

public void setId(String id) {

	this.id = id;
}

public String getName() {

	return name;
}

public void setName(String name) {

	this.name = name;
}

public List<Item> getItems() {

	return items;
}

public void setItems(List<Item> items) {

	this.items = items;
}

@Override
public String toString() {
	return "User [id=" + id + ", name=" + name + ", items=" + items + "]";
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值