JSON解析
1.API
Xxx getXxx(int index) : 根据下标得到json数组中对应的元素数据
Xxx optXxx(int index) : 根据下标得到json数组中对应的元素数据
注意:
optXxx方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值,但是getString方法会出现空指针异常的错误。
2.特殊json数据解析
{ "code": 0, "list": { "0": { "aid": "6008965", "author": "哔哩哔哩番剧", "coins": 170, "copyright": "Copy", "create": "2016-08-25 21:34" }, "1": { "aid": "6008938", "author": "哔哩哔哩番剧", "coins": 404, "copyright": "Copy", "create": "2016-08-25 21:33" } } }
public class FilmInfo { private int code; private List<FilmBean> list; public static class FilmBean{ private String aid; private String author; private int coins; private String copyright; private String create; } }
// 创建封装的Java对象 FilmInfo filmInfo = new FilmInfo(); // 2 解析json try { JSONObject jsonObject = new JSONObject(json); // 第一层解析 int code = jsonObject.optInt("code"); JSONObject list = jsonObject.optJSONObject("list"); // 第一层封装 filmInfo.setCode(code); List<FilmInfo.FilmBean> lists = new ArrayList<>(); filmInfo.setList(lists);
// 第二层解析 for (int i = 0; i < list.length(); i++) { JSONObject jsonObject1 = list.optJSONObject(i + ""); if(jsonObject1 != null) { String aid = jsonObject1.optString("aid"); String author = jsonObject1.optString("author"); int coins = jsonObject1.optInt("coins"); String copyright = jsonObject1.optString("copyright"); String create = jsonObject1.optString("create"); // 第二层数据封装 FilmInfo.FilmBean filmBean = new FilmInfo.FilmBean(); filmBean.setAid(aid); filmBean.setAuthor(author); filmBean.setCoins(coins); filmBean.setCopyright(copyright); filmBean.setCreate(create); lists.add(filmBean); } } } catch (JSONException e) { e.printStackTrace(); }
3.Gson框架技术
(1)将json格式的字符串{}转换为Java对象
API:
fromJson(String json, Class<T> classOfT);
步骤 1)将Gson的jar包导入到项目中 2)创建Gson对象 : Gson gson = new Gson(); 3)通过创建的Gson对象调用fromJson()方法,返回该JSON数据对应的Java对象: ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);
Gson gson = new Gson(); ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);
(2)将json格式的字符串[]转换为Java对象的List
API:
fromJson(String json, Type typeOfT);
Gson gson = new Gson(); List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {}.getType());
(3)将Java对象转换为json字符串{}
API:
String toJson(Object src);
// 1 获取或创建Java对象 ShopInfo shopInfo = new ShopInfo(1,"鲍鱼",250.0,"baoyu"); // 2 生成JSON数据 Gson gson = new Gson(); String json = gson.toJson(shopInfo);
(4)将Java对象的List转换为json字符串[]
API:
String toJson(Object src);
// 1 获取或创建Java对象 List<ShopInfo> shops = new ArrayList<>(); ShopInfo baoyu = new ShopInfo(1, "鲍鱼", 250.0, "baoyu"); ShopInfo longxia = new ShopInfo(2, "龙虾", 251.0, "longxia"); shops.add(baoyu); shops.add(longxia); // 2 生成JSON数据 Gson gson = new Gson(); String json = gson.toJson(shops);
4.FastJson框架技术
(1)将json格式的字符串{}转换为Java对象
API:
parseObject(String json, Class<T> classOfT);
ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class);
(2)将json格式的字符串[]转换为Java对象的List
API:
List<T> parseArray(String json,Class<T> classOfT);
List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);
(3)将Java对象转换为json字符串{}
API:
String toJSONString(Object object);
步骤:
1)导入fastjson的jar包
2)JSON调用toJSONString()方法,获取转换后的json数据
例如:
ShopInfo shopInfo = new ShopInfo(1, "鲍鱼", 250.0, "baoyu"); String json = JSON.toJSONString(shopInfo);
(4)将Java对象的List转换为json字符串[]
API:
String toJSONString(Object object);
List<ShopInfo> shops = new ArrayList<>(); ShopInfo baoyu = new ShopInfo(1, "鲍鱼", 250.0, "baoyu"); ShopInfo longxia = new ShopInfo(2, "龙虾", 251.0, "longxia"); shops.add(baoyu); shops.add(longxia); String json = JSON.toJSONString(shops);
相关文章
- 【面试】吃透了这些Redis知识点,面试官一定觉得你很NB(干货 | 建议珍藏) c#自定义Attribute获取接口实现 纯JS ajax 聊聊DataTable下载 二进制数据的序列化反序列化和Json的序列化反序列化的重要区别
- Golang 【basic_leaming】结构体和 Json 相互转换序列化反序列化
- Uncaught TypeError: Converting circular structure to JSON
- uni-app - 解决 pages.json 中写条件编译报错导致白屏的问题(在 pages.json 里写条件编译语法后小程序端控制台直接报错白屏了)编译时 pages.json 解析失败解决教程
- springMVC捕获404错误并统一返回json格式
- 使用json-lib进行Java和JSON之间的转换【转载】
- 0-ajax操作json(番外篇)
- JavaScript 字符串与json对象互转的几种方法
- Structs2中Action返回json到前台方法
- springMvc中406错误解决,springMvc使用json出现406 (Not Acceptable)
- GO语言练习:构建json 和 解析JSON 实例
- 用javascript向一个网页连接接口发送请求,并接收该接口返回的json串
- 浅析mybatis懒加载导致无法序列化的问题、Json序列化对象时错误Could not write JSON: No serializer found for class
- 前后台JSON传值得一个问题和异常处理net.sf.json.JSONException: Unquotted string '"name"'
- 【Unity3D编辑器扩展】Unity3D中实现Excel转XML、Json、CSV文件
- MessagePack:最可能取代JSON的存在。
- JSON和GSON操作json数据
- node 通过指令创建一个package.json文件