(A4,一)java数据交换格式---Json详解
2017-12-21 14:07
417 查看
java数据交换格式—Json详解
一、什么是数据交换格式
客户端与服务器常用数据交换格式xml、json、html二、数据交换格式使用场景
1、移动端(安卓、IOS)通讯方式采用http协议+JSON格式 走restful风格。2、很多互联网项目都采用Http协议+JSON
3、因为xml比较重,WebService服务采用http+xml格式, 银行项目使用比较多!
移动端和PC端服务器是接口是怎么设计的?
画图演示
三、JSON简单使用
什么是JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过JSON来进行交换。JSON样例:
{ "name": "王永圣", "age": "21", "details": [ { "sex": "男", "url": "http://www.wangys.xin" } ] }
JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON的形式是用大括号“{}”包围起来的项目列表,每一个项目间用逗号(,)分隔,而项目就是用冒号(:)分隔的属性名和属性值。这是典型的字典表示形式,也再次表明javascript里的对象就是字典结构。不管多么复杂的对象,都可以用一句JSON代码来创建并赋值。
在JSON中,名称 / 值对包括字段名称(在双引号中),后面写一个冒号,然后是值。
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.jar 或引入maven依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.43</version> </dependency>
使用fastjson api
// 把JSON文本parse为JSONObject或者JSONArray public static final Object parse(String text); // 把JSON文本parse成JSONObject public static final JSONObject parseObject(String text); // 把JSON文本parse为JavaBean public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse成JSONArray public static final JSONArray parseArray(String text); //把JSON文本parse成JavaBean集合 public static final <T> List<T> parseArray(String text, Class<T> clazz); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object); // 将JavaBean序列化为带格式的JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); //将JavaBean转换为JSONObject或者JSONArray。 public static final Object toJSON(Object javaObject);
解析json
public class JsonTest001 { /** * 定义一个json字符串 */ public static String strJson="{\"age\":\"21\",\"details\":[{\"sex\":\"男\",\"url\":\"http://www.wangys.xin\"}],\"name\":\"王永圣\"}"; public static void main(String[] args) { // 将json字符串转为jsonbject JSONObject jsonObject = JSONObject.parseObject(strJson); //用key值获得value值 String age = jsonObject.getString("age"); String name = jsonObject.getString("name"); System.out.println(name+"---"+age); //解析json里的数组 JSONArray details = jsonObject.getJSONArray("details"); //循环遍历 for(Object object:details){ //按索引循环取数组里的json对象 JSONObject stObject = (JSONObject) object; //用key值获得value值 String sex = stObject.getString("sex"); String url = stObject.getString("url"); System.out.println(sex+"---"+url); } } }
运行结果:
Json转对象
定义类://定义user类 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 + "]"; } } //定义Item类 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 + "]"; } }
json转换对象demo
public class jsonToObject { public static String json="{\"id\":\"01\",\"items\":[{\"itemId\":\"20\",\"itemName\":\"美团外卖\"},{\"itemId\":\"30\",\"itemName\":\"饿了么\"}],\"name\":\"张三\"}"; public static void main(String[] args) { //json转换对象 User test = new JSONObject().parseObject(json, User.class); System.out.println(test.toString()); } }
运行结果:
组装json
[b]Json api封装json[/b]public static void main(String[] args) { // 1.json api 封装json JSONObject root = new JSONObject(); root.put("id", "01"); root.put("name", "大圣"); JSONArray arrayList = new JSONArray(); JSONObject object1 = new JSONObject(); object1.put("itemId", "20"); object1.put("itemName", "美团外卖"); JSONObject object2 = new JSONObject(); object2.put("itemId", "30"); object2.put("itemName", "饿了么"); arrayList.add(object1); arrayList.add(object2); root.put("items", arrayList); System.out.println(root.toJSONString()); }
运行结果:
[b]将对象转换成json字符串[/b]
public static void main(String[] args) { User user = new User(); user.setId("01"); user.setName("大圣"); List<Item> items =new ArrayList<Item>(); Item item1 = new Item(); item1.setItemId("20"); item1.setItemName("美团外卖"); Item item2 = new Item(); item2.setItemId("30"); item2.setItemName("饿了么"); items.add(item1); items.add(item2); user.setItems(items); System.out.println(JSON.toJSONString(user)); }
运行结果:
相关文章推荐
- (A4,二)java数据交换格式---Xml详解
- json 数据交换格式与java
- 【Java Web】: JSON 数据格式详解
- JSON与java各种数据的交换
- 使用 C++ 处理 JSON 数据交换格式
- 【转】一个java处理JSON格式数据的通用类
- java中Json格式数据的应用
- 一个java处理JSON格式数据的通用类(封装了一个class)
- 在.NET使用JSON作为数据交换格式
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
- 采用JSON数据交换格式实现框架
- 在.NET使用JSON作为数据交换格式
- JSON JavaScript数据交换格式
- 在.NET使用JSON作为数据交换格式
- PHP JSON格式数据交互实例代码详解
- JSON数据交换格式
- Java数据类型与JSON的数据交换
- 一个java处理JSON格式数据的通用类
- 一个java处理JSON格式数据的通用类(封装了一个class)
- 很好用的Google 开源项目Gson在java中解析和创建json格式的数据