JSON学习笔记
来源:互联网 发布:网络上hx是什么意思 编辑:程序博客网 时间:2024/06/03 14:18
一 理解JSON
*JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
* 本质就是具有特定格式的字符串
* JSON 数据是客户端与服务器端交互的最常用的选择
二 JSON 数据格式
1) 整体结构:
* Json 数组 : [ ]
* Json 对象 : { }
2) Json 数据的结构 : [value1, value2, value3]
3) Json 对象的结构 : {key1 : value1, key2 : value2, key3 : value3}
4) key 的数据类型 : 字符串
5) value 的数据类型:
* 数值
* 字符串
* null
* json 数组 [ ]
* json 对象 { }
三 相关API
1) Android 原生 API:
① JsonObject : json 对象 { }
* JSONObject(String json) : 将 json 字符串解析为 json 对象
* Xxx getXxx(String name) : 根据name, 在json 对象中得到对应的Value
② JsonArray : json 数组 [ ]
* JSONArray(String json) : 将json 字符串解析为json shuzu
* int length() : 得到json 数组中元素的个数
* Xxx getXxx(int index) : 根据下标得到json数组中对应的元素数据
2) Gson 框架 API
① Gson : 能解析 json 数据的类
* Gson() : 构造对象的方法
* String toJson(Object src ) : 将对象转换为对应格式的json 字符串
* T fromJson(String json Type typeOfT) : 解析Json 字符串,得到对象
② TypeToken<T> : 用来得到Type 的类
四 代码
public class JsonTest extends AndroidTestCase{/* * 1. 将json 格式的字符串{}转换为Java对象,使用原生API */public void testJsonToObject() throws JSONException{String jsonString = "{\"id\":2,\"name\":\"虾\",\"price\":12.3,\"imagePath\":\"http://11.14.4.160:8080/1.jpg\"}";//将json字符串封装为JSONObject对象JSONObject jsonObject = new JSONObject(jsonString);//从对象中根据key得到对应的valueint id = jsonObject.getInt("id");String name = jsonObject.getString("name");double price = jsonObject.getDouble("price");String imagePath = jsonObject.getString("imagePath");//封装ShopInfo对象ShopInfo shopInfo = new ShopInfo(id, name, price, imagePath);Log.e("TAG", shopInfo.toString());}/* * 2. 将json 格式的字符串{}转换为Java对象,使用Gson */public void testJsonToObject2(){String jsonString = "{\"id\":3,\"name\":\"虾\",\"price\":12.3,\"imagePath\":\"http://11.14.4.160:8080/1.jpg\"}";ShopInfo shopInfo = new Gson.fromJson(jsonString, ShopInfo.class);Log.e("TAG", shopInfo.toString());}}
2) 将 json 格式的字符串 [ ] 转换为java对象的List
/* * 3. 将json 格式的字符串[]转换为Java对象的List,使用原生API */public void testJsonToList() throws JSONException{String jsonString = "[{\"id\":1,\"name\":\"虾\",\"price\":12.3,\"imagePath\":\"http://11.14.4.160:8080/1.jpg\"},"+"{\"id\":2,\"name\":\"虾\",\"price\":12.3,\"imagePath\":\"http://11.14.4.160:8080/1.jpg\"}]";List<ShopInfo> list = new ArrayList<ShopInfo>();//将json字符串封装为JSONObject对象JSONArray jsonArray = new JSONArray(jsonString);//遍历JSONArray对象所以元素(JSONObject),并将每个元素封装为shopInfo,并添加懂啊Listfor(int i = 0;i<jsonArray.length();i++){JSONObject jsonObject = jsonArray.getJSONObject(i);//从对象中根据key得到对应的valueint id = jsonObject.getInt("id");String name = jsonObject.getString("name");double price = jsonObject.getDouble("price");String imagePath = jsonObject.getString("imagePath");//封装ShopInfo对象ShopInfo shopInfo = new ShopInfo(id, name, price, imagePath);list.add(shopInfo);}Log.e("TAG", list.toString());}/* * 4. 将json 格式的字符串[]转换为Java对象的List,使用Gson */public void testJsonToList2() throws JSONException{String jsonString = "[{\"id\":4,\"name\":\"虾\",\"price\":12.3,\"imagePath\":\"http://11.14.4.160:8080/1.jpg\"},"+"{\"id\":2,\"name\":\"虾\",\"price\":12.3,\"imagePath\":\"http://11.14.4.160:8080/1.jpg\"}]";List<ShopInfo> list = new Gson().fromJson(jsonString, new TypeToken<List<ShopInfo>>(){}.getType());Log.e("TAG", list.toString());}3) 将Java对象转换为json字符串{}
/* * 5. 将Java对象转换为json字符串{},使用Gson */public void testObjectToJson(){ShopInfo info = new ShopInfo(3,"KK",1000,"http://www.sina.com");String json = new Gson().toJson(info);Log.e("TAG", json);}4) 将Java对象的List转换为json字符串[ ]
/* * 6. 将Java对象的List转换为json字符串[],使用Gson */public void testListToJson(){List<ShopInfo> list = new ArrayList<ShopInfo>();list.add(new ShopInfo(3,"KK",1000,"http://www.sina.com"));list.add(new ShopInfo(4,"KK",2000,"http://www.sina.com"));String json = new Gson().toJson(list);Log.e("TAG", json);}5) 使用Map封装json对象key特别情况
/* * 7. 使用Map封装json对象key特别情况 */public void testJsonToMap(){String jsonString = "{\"my name\":\"虾\",\"1\":12}";Map<String,Object> map = new Gson().fromJson(jsonString,new TypeToken<Map<String,Object>>(){}.getType());Log.e("TAG", map.toString());}
- Json(Json.Net)学习笔记
- JSON学习笔记
- JSON学习笔记
- json学习笔记
- JSON学习笔记
- json格式学习笔记
- JSON学习笔记(-)
- JSON学习笔记
- JSON学习笔记
- json学习笔记
- Json学习笔记
- json学习笔记
- JSON学习笔记
- JSON taglib学习笔记
- struts2 Json 学习笔记
- JSON学习笔记一
- Ajax、json学习笔记
- Json 学习笔记
- java实现二维数组排序并定位坐标(借助list)
- QT5简易音乐播放器的设计
- jQuery事件之鼠标事件
- 编程题(4):人人网
- 1
- JSON学习笔记
- 2
- android studio创建activity时在清单文件自动加上 android:screenOrientation="portrait"
- 抽象类和接口的区别
- 用ServerSocket类与Socket类实现客户端与服务端的交互
- 面试题
- 百度地图的使用(4)
- 关于人脉
- java并发编程(二内存模型、线程安全、无锁)