1.json的含义
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言 *
- JSON 具有自我描述性,更易理解
2. json的作用
1.json的作用于前后端进行数据传输
2.与json有这同样作用的还有xml
3.介绍了json和xml的区别 https://www.cnblogs.com/SanMaoSpace/p/3139186.html
3. json的基础结构
-
json的基本结构 有两种,分别为 对象类型 和 数组类型
-
数组(Array)用方括号(“[]”)表示。 ["值1",值2..,{key:value}]
-
对象(Object)用大括号(”{}”)表示。 {key:value1,key=value2}
-
名称/值对(name/value)组合成数组和对象。 key:是String类型,但是不能为null
value:JSONObject JSONArray String Boolean Double NULL.. LONG -
名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。
-
并列的数据之间用逗号(“,”)分隔
4.json的解析方式
- 手动解析
private void json05() throws JSONException { String json="{'person':['lisi',23],'book':{'price':[12,{'music':'aa'}]}}"; JSONObject object = new JSONObject(json); //['lisi',23] JSONArray person = object.getJSONArray("person"); for (int i = 0; i <person.length() ; i++) { /si---23 Object o = person.get(i); } //{'price':[12,{'music'}]} JSONObject book = object.getJSONObject("book"); //[12,{'music':'aa'}] JSONArray price = book.getJSONArray("price"); //{'music':'aa'} // JSONArray jsonArray = price.getJSONArray(1); JSONObject jsonObject = price.getJSONObject(1); //'aa' String music = jsonObject.getString("music"); } private void json04() throws JSONException { String json="['name',{'book':'java think'},['age',{'price':20}]]"; JSONArray jsonArray = new JSONArray(json); //name String namer=jsonArray.getString(0); //{'book':'java think'}---'java think JSONObject jsonObject = jsonArray.getJSONObject(1); String book = jsonObject.getString("book"); //['age',{'price':20}]--->20 JSONArray jsonArray1 = jsonArray.getJSONArray(2); //{'price':20} JSONObject jsonObject1 = jsonArray1.getJSONObject(1); int price = jsonObject1.getInt("price"); } private void json03() throws JSONException { String json="['name',['book','music']]"; JSONArray jsonArray = new JSONArray(json); JSONArray jsonArray1 = jsonArray.getJSONArray(1); //['book','music'] String string = jsonArray1.getString(1); } /** * 数组类型JSONArray */ private void json02() throws JSONException { String json="['zs',12,true]"; JSONArray jsonArray = new JSONArray(json); String string = jsonArray.getString(0); int anInt = jsonArray.getInt(1); boolean aBoolean = jsonArray.getBoolean(2); Log.e("tag","--->"+string+"-->"+anInt+"-->"+aBoolean); //jsonArray.length()获取数组中元素的长度 for (int i = 0; i <jsonArray.length() ; i++) { Object o = jsonArray.get(i); Log.e("tag","--->"+o); } } private void json01() { String json = "{\n" + " \"name\": \"zs\"\n" + "}"; //jsonObject String json01="{'name':{'age':12}}";//{ "{}":{""}} /** * {"name":{'age':12},"sex":true} */ try { JSONObject object = new JSONObject(json01); object.put("sex",true); //{"sex":true,"name":{"age":12}} Log.e("tag",object+"<--"); // String name = object.getString("name"); JSONObject name = object.getJSONObject("name"); int age = name.getInt("age"); Log.e("tag","---->"+age);//12 } catch (JSONException e) { e.printStackTrace(); } } - gson解析
private void parser6() { String json="[{'name':'zs','age':12},{'name':'lisi','age':23}]"; Gson gson = new Gson(); List<Person> list = gson.fromJson(json, new TypeToken<List<Person>>() { }.getType()); // // [Person{name='zs', age=12}, Person{name='lisi', age=23}] Log.e("tag",list+"--->"); } /** * 通过json生成对象 */ public void parser5(){ String json="{'name':'zs','age':12}"; //根据key作为实体类的属性 name age Gson gson = new Gson(); Type type=new TypeToken<Person>(){}.getType(); //对象 Person o = gson.fromJson(json, type); //Person{name='zs', age=12} Log.e("tag",o+"--->"); }package com.it.feicui.testapp; /** * Created by Administrator on 2017/10/23. */ public class Person { private String name; private int age; //key ---[]-->[""] // private List<String> data; public Person(String name, int age) { this.name = name; this.age = age; } // public Person(String name, int age, List<String> data) { // this.name = name; // this.age = age; // this.data = data; // } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } - FastJson解析 https://www.cnblogs.com/wgale025/p/5875430.html
5.Android开发中可以使用到的小知识
我们作为Android开发人员,一般情况都是后台给我们接口,我们访问这个接口就得到json数据,(大公司都会有接口文档,包含项目中所有的接口)
如果你基础比较扎实,可以和后台开发人员商量着定义json的数据结构
我们请求后台给我们的接口时,可以将接口(也就是个网址)在浏览器中访问,看是否有数据,改接口是否正确,或者下载一个Postman软件进行访问,
如果接口有Post请求和Get请求 之分,Get请求直接访问就能拿到json,Post请求需要在接口后边拼接请求参数,用Postman软件可以不用你自己拼接,
访问网络接口时,
- Httpconnection ——最基本的 https://www.jianshu.com/p/e3321c801d21
- OKHTTP框架,Volley框架,XUtils框架等等——需要在依赖中引入包 https://www.cnblogs.com/onone/articles/6606448.html
- HttpClient——过气的方法(弃用)
我们在生成json对应的实体类时,一种是自己手写,另一种是用插件GsonFormat:根据Json自动生成JavaBean
https://blog.youkuaiyun.com/g984160547/article/details/70257415
有时在第一个页面请求网络,进行某种操作后跳转到第二个页面时将数据展示,会遇到intent传数据,intent传字符串,boolean,int等类型值,也可以传对象,在传对象时需要将实体类(也包含内部类) 实现序列化接口
本文介绍了JSON的含义,它是轻量级文本数据交换格式,独立于语言且易理解。阐述了其作用,用于前后端数据传输,并对比了与xml的区别。讲解了基础结构,有对象和数组类型。还介绍了解析方式,如手动、gson、FastJson解析。最后分享了Android开发中使用JSON的小知识。
10万+

被折叠的 条评论
为什么被折叠?



