您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > JSON详解以及在android中的使用
4/11/2020JSON讲解:李志敏4/11/2020概念•JSON(JavaScriptObjectNotation)isalightweightdata-interchangeformat.Itiseasyforhumanstoreadandwrite.Itiseasyformachinestoparseandgenerate.ItisbasedonasubsetoftheJavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999.JSONisatextformatthatiscompletelylanguageindependentbutusesconventionsthatarefamiliartoprogrammersoftheC-familyoflanguages,includingC,C++,C#,Java,JavaScript,Perl,Python,andmanyothers.ThesepropertiesmakeJSONanidealdata-interchangelanguage.•官网书写格式•JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。•一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。规则如下:•1)映射用冒号(“:”)表示。名称:值•2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2•3)映射的集合(对象)用大括号(“{}”)表示。{名称1:值,名称2:值2}•4)并列数据的集合(数组)用方括号(“[]”)表示。[{名称1:值,名称2:值2},{名称1:值,名称2:值2}]•5)元素值可具有的类型:string,number,object,array,true,false,null4/11/2020JSON对象(键值对或键值对的集合)•例1、{name:Obama}•例2、{name:Romney,age:56}•例3、{city:{name:bj},weatherinfo:{weather:sunny}}•例4、{city:{name:北京,“city_id”:101010100},weatherinfo:{weather:sunny,temp:29度}}4/11/2020JSON数组•例1、[{name:张三,age:22,email:zhangsan@qq.com},{name:李四,age:23,email:lisi@qq.com},{name:王五,age:24,email:wangwu@qq.com}]•例2、{student:[{name:张三,age:22,email:zhangsan@qq.com},{name:李四,age:23,email:lisi@qq.com},{name:王五,age:24,email:wangwu@qq.com}]}4/11/2020在javascript中使用json•javascript解析json本身是不需要任何工具包的,也有一些封装好的更方便使用的工具包(下载地址:)•例1、翻译json字符串为json对象并解析scriptlanguage=JavaScriptvarpeopleStr='{firstName:Brett,lastName:McLaughlin}';varpeople=eval('('+peopleStr+')');//上面两行代码相当于//varpeople={firstName:Brett,lastName:McLaughlin};alert(people.firstName);alert(people.lastName);/script4/11/2020在javascript中使用json•例2:解析json数组scriptlanguage=JavaScriptvarpeople=[{firstName:Brett,email:brett@newInstance.com},{firstName:Mary,email:mary@newInstance.com}];alert(people[0].firstName);alert(people[0].email);alert(people[1].firstName);alert(people[1].email);/script4/11/2020在javascript中使用json•例3:解析复杂json对象scriptlanguage=JavaScriptvarpeople={username:mary,info:{tel:1234566,celltelphone:788666},address:[{city:beijing,code:1000022},{city:shanghai,code:2210444}]};alert(people.username);alert(people.info.tel);alert(people.address[0].city);/script4/11/2020在java中使用json在javase或者javaee中解析json格式的数据是需要导入jar包的,jar包有很多种可以到官网下载,具体使用自己研究4/11/2020在Android中使用jsonAndroid中内置了json的解析Api4/11/2020在Android中使用jsonJSONObject4/11/2020在Android中使用jsonJSONObject解析举例在服务器上有一个html文件内容如下:{weatherinfo:{city:北京,cityid:101010100,temp:21,WD:东南风,WS:2级,SD:78%,WSE:2,time:21:10,isRadar:1,Radar:JC_RADAR_AZ9010_JB}}解析步骤1、读取html文件源代码,获取一个json字符串InputStreamin=conn.getInputStream();StringjsonStr=DataUtil.Stream2String(in);//将流转换成字符串的工具类2、通过构造函数将json字符串转换成json对象JSONObjectjsonObject=newJSONObject(jsonStr);3、从json对象中获取你所需要的键所对应的值JSONObjectjson=jsonObject.getJSONObject(weatherinfo);Stringcity=json.getString(city);Stringtemp=json.getString(temp)4/11/2020在Android中使用jsonJSONArray4/11/2020在Android中使用jsonJSONArray解析举例在服务器上有一个js文件文件内容如下:[{title:国家发改委:台湾降油价和大陆没可比性,description:国家发改委副主任朱之鑫,image::163},{title:国家发改委:台湾降油价和大陆没可比性,description:国家发改委副主任朱之鑫,image::0},{title:国家发改委:台湾降油价和大陆没可比性,description:国家发改委副主任朱之鑫,image::0}];4/11/2020在Android中使用json解析步骤1、读取js文件源代码,获取一个json字符串StringjsonStr=DataUtil.Stream2String(in);2、通过构造函数将json字符串转换成json数组JSONArrayarray=newJSONArray(jsonStr);3、遍历数组,获取数组中每一个json对象,同时可以获取json对象中键对应的值for(inti=0;iarray.length();i++){JSONObjectobj=array.getJSONObject(i);Stringtitle=obj.getString(title);Stringdescription=obj.getString(description);}注意:1、json数组并非全是由json对象组成的数组2、json数组中的每一个元素数据类型可以不相同Adenseindexedsequenceofvalues.ValuesmaybeanymixofJSONObjects,otherJSONArrays,Strings,Booleans,Integers,Longs,Doubles,nullorNULL.ValuesmaynotbeNaNs,infinities,orofanytypenotlistedhere.如:[94043,90210]或者[zhangsan,24]类似于javascript中的数组4/11/2020在Android中使用json如何将一个json对象转换成json字符串?无论是json对象还是json数组都复写了toString方法,只需调用toString方法即可将json对象转换成一个格式良好的字符串(内部使用的是JSONStringer)4/11/2020在Android中使用json如何手动生成一个json对象?方法1、创建一个map,通过构造方法将map转换成json对象MapString,Objectmap=newHashMapString,Object();map.put(name,zhangsan);map.put(age,24);JSONObjectjson=newJSONObject(map);方法2、创建一个json对象,通过put方法添加数据JSONObjectjson=newJSONObject();json.put(name,zhangsan);json.put(age,24);4/11/2020在Android中使用json如何手动生成一个json数组?方法1、创建一个list,通过构造方法将list转换成json对象MapString,Objectmap1=newHashMapString,Object();map1.put(name,zhangsan);map1.put(age,24);MapString,Objectmap2=newHashMapString,Object();map2.put(name,lisi);map2.put(age,25);ListMapString,Objectlist=newArrayListMapString,Object();list.add(map1);list.add(map2);JSONArrayarray=newJSONArray(list);System.out.println(array.toString());4/11/2020在Android中使用json如何手动生成一个json数组?方法2、创建一个json数组对象,通过put的方式添加数据JSONArrayarray=newJSONArray();array.put(0,zhangsan);array.put(1,lisi);System.out.println(array.toStr
本文标题:JSON详解以及在android中的使用
链接地址:https://www.777doc.com/doc-4765765 .html