赞
踩
上篇博客讲到怎么去读取本地Json文件,此博客主要深入学习Json 的使用,毕竟,不搞明白这东西,项目没法搞了。稳扎稳打,方能步步为赢。
了解Json 的人都知道,Json本质 就是一种具有特定格式的字符串,它的数据结构分为JSON对象和JSON数组。JSON是首先一种数据结构,说白了就是对数据的描述,刚刚出现是为了取代XML,可惜并没有,但是在作为配置文件上,却是很好,由于它小巧灵活,描述数据很好,所以在网络上进行数据传输更加方便。
!!!
请记住JSON对数据的描述形式,既然是形式,那么它的数据形式是什么样的:
对象的描述是: {} 这个表示jsonobject(json对象)
数组的描述是: [] 表示jsonarray(json数组)
属性或值的描述是: “”
连接之间的描述是: :
①将Json对象转化为Java对象
一.创建或获取Json数据
//创建或获取JSON数据 String json="{\n" + "\n" + " \"id\":2,\"name\":\"小明\",\n" + "\n" + " \"phone\":\"19977443708\"\n" + "\n" + "\n" + "\n" + "}";二.解析Json数据
try { JSONObject jsonObject = new JSONObject(json);//将Json字符串解析为Json对象 // int id = jsonObject.getInt("id"); int id = jsonObject.optInt("id"); String name = jsonObject.optString("name"); String phone = jsonObject.optString("phone"); // personInfo = new PersonInfo(id, name, phone); } catch (JSONException e) { e.printStackTrace(); }
②将Json数组转化为Java集合
一.创建或获取Json数据
String json="[{\n" + "\n" + " \"id\":1,\"name\":\"小明\",\n" + "\n" + " \"phone\":\"19977443708\"\n" + "\n" + "\n" + "\n" + "},{\n" + "\n" + " \"id\":2,\"name\":\"小芳\",\n" + "\n" + " \"phone\":\"19977449708\"\n" + "\n" + "\n" + "\n" + "}]";二.解析Json数据
try { JSONArray jsonArray=new JSONArray(json); for(int i=0;i<jsonArray.length();i++) { JSONObject jsonObject=jsonArray.getJSONObject(i); if(jsonObject!=null) { int id = jsonObject.optInt("id"); String name = jsonObject.optString("name"); String phone = jsonObject.optString("phone"); //封装JAVA对象 PersonInfo personInfo=new PersonInfo(id, name, phone); personInfoList.add(personInfo); } } } catch (JSONException e) { e.printStackTrace(); }
③复杂Json数据解析
//获取或创建Json数据 String json="{\"fileNameList\":[\"丛.mp4\",\"乐.mp4\",\"乡.mp4\",\"书.mp4\",\"云.mp4\",\"井.mp4\",\"京.mp4\",\"人.mp4\",\"休.mp4\",\"伞.mp4\",\"光.mp4\",\"农.mp4\",\"动.mp4\",\"化.mp4\",\"去.mp4\",\"友.mp4\",\"叶.mp4\",\"喜.mp4\",\"园.mp4\",\"坐.mp4\",\"墙.mp4\",\"夏.mp4\",\"奔.mp4\",\"女.mp4\",\"妈.mp4\",\"学.mp4\",\"守.mp4\",\"家.mp4\",\"尾.mp4\",\"岁.mp4\",\"工.mp4\",\"巴.mp4\",\"巾.mp4\",\"帆.mp4\",\"广.mp4\",\"床.mp4\",\"弓.mp4\",\"归.mp4\",\"彩.mp4\",\"心.mp4\",\"忙.mp4\",\"思.mp4\",\"情.mp4\",\"扇.mp4\",\"打.mp4\",\"扬.mp4\",\"教.mp4\",\"明.mp4\",\"朋.mp4\",\"望.mp4\",\"杉.mp4\",\"来.mp4\",\"果.mp4\",\"树.mp4\",\"桑.mp4\",\"梦.mp4\",\"棉.mp4\",\"植.mp4\",\"止.mp4\",\"比.mp4\",\"毛.mp4\",\"水.mp4\",\"河.mp4\",\"清.mp4\",\"熊.mp4\",\"爸.mp4\",\"牙.mp4\",\"玩.mp4\",\"瓜.mp4\",\"电.mp4\",\"男.mp4\",\"看.mp4\",\"秤.mp4\",\"稻.mp4\",\"窗.mp4\",\"窝.mp4\",\"笑.mp4\",\"篮.mp4\",\"米.mp4\",\"粽.mp4\",\"羽.mp4\",\"翔.mp4\",\"肚.mp4\",\"舌.mp4\",\"舟.mp4\",\"苗.mp4\",\"草.mp4\",\"菜.mp4\",\"虫.mp4\",\"谷.mp4\",\"走.mp4\",\"足.mp4\",\"遇.mp4\",\"采.mp4\",\"量.mp4\",\"门.mp4\",\"队.mp4\",\"雨.mp4\",\"雷.mp4\",\"面.mp4\",\"飞.mp4\",\"饭.mp4\",\"马.mp4\",\"鼓.mp4\",\"龟.mp4\"],\"videoAlbumName\":\"douyin_video\"}"; // List<Character> characterList=new ArrayList<>();
try { JSONObject jsonObject3 = new JSONObject(json); String videoAlbumName=jsonObject3.optString("videoAlbumName"); String fileNameList=jsonObject3.getString("fileNameList"); JSONArray jsonArray=new JSONArray(fileNameList); for(int i=0;i<jsonArray.length();i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); if(jsonObject!=null) nameList.add(jsonObject); }
④特殊格式的Json数据解析
首先,得添加依赖。Using Gson with Gradle/Android
- dependencies {
- implementation 'com.google.code.gson:gson:2.10'
- }
然后根据不同的类型进行不同的操作
①将json转化为java对象
- private void jsonTojavaObjectByGson(){
-
- String json="{\n" +
- "\n" +
- " \"id\":2,\"name\":\"小明\",\n" +
- "\n" +
- " \"phone\":\"19977443708\"\n" +
- "\n" +
- "\n" +
- "\n" +
- "}";
- //解析数据
- Gson gson = new Gson();
- PersonInfo personInfo=gson.fromJson(json,PersonInfo.class);
-
- //显示数据
- textViewNative.setText(json);
- textViewLast.setText(personInfo.toString());
- }
②将json转化为java中 List集合
- private void jsonTojavaListByGson(){
- String json="[{\n" +
- "\n" +
- " \"id\":1,\"name\":\"小明\",\n" +
- "\n" +
- " \"phone\":\"19977443708\"\n" +
- "\n" +
- "\n" +
- "\n" +
- "},{\n" +
- "\n" +
- " \"id\":2,\"name\":\"小芳\",\n" +
- "\n" +
- " \"phone\":\"19977449708\"\n" +
- "\n" +
- "\n" +
- "\n" +
- "}]";
-
- Gson gson=new Gson();
- List<PersonInfo> personInfos= gson.fromJson(json, new TypeToken<List<PersonInfo>>() {
- }.getType());
-
- textViewNative.setText(json);
- textViewLast.setText(personInfos.toString());
-
- }
③ 将java转化为json对象
- private void javaToJsonObjectByGson(){
- //获取或创建java对象
- PersonInfo personInfo=new PersonInfo(1,"小强","19934555944");
- //生成json数据
- Gson gson=new Gson();
- String json=gson.toJson(personInfo);
- //展示代码
-
- textViewNative.setText(personInfo.toString());
- textViewLast.setText(json);
- }
④将java转化为json数组
- private void javaToJsonArrayByGson(){
- //创建java对象
- List<PersonInfo> personInfos=new ArrayList<>();
- PersonInfo xiaoFen=new PersonInfo(4,"小兰","17754553490");
- PersonInfo xiaoLi=new PersonInfo(4,"小李","17457553490");
- personInfos.add(xiaoFen);
- personInfos.add(xiaoLi);
- //生成json数据
- Gson gson=new Gson();
- String json=gson.toJson(personInfos.toString());
- }
英语:一篇阅读+写作
高等数学:还停留在一重积分
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。