JSON详解以及在android中的使用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解析步骤 1、读取html文件源代码,获取一个json字符串
InputStream in = conn.getInputStream(); String jsonStr = DataUtil.Stream2String(in);//将流转换成字符串的工具类 2、通过构造函数将json字符串转换成json对象 JSONObject jsonObject=new JSONObject(jsonStr); 3、从json对象中获取你所需要的键所对应的值 JSONObject json=jsonObject.getJSONObject("weatherinfo"); String city=json.getString("city"); String temp=json.getString("temp")
"city":{"name": "北京",“city_id”:"101010100"}, "weatherinfo":{"weather": "sunny","temp":"29度"}
}
9/7/2013
JSONwenku.baidu.com组
• 例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" }
9/7/2013
在Android中使用json
如何手劢生成一个json对象? 方法1、创建一个map,通过构造方法将map转换成json对象 Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "zhangsan"); map.put("age", 24); JSONObject json = new JSONObject(map); 方法2、创建一个json对象,通过put方法添加数据 JSONObject json=new JSONObject(); json.put("name", "zhangsan"); json.put("age", 24);
如:[94043,90210]或者["zhangsan",24]类似于javascript中的数组 9/7/2013
在Android中使用json
如何将一个json对象转换成json字符串? 无论是json对象还是json数组都复写了toString方法,只需调用toString方法 即可将json对象转换成一个格式良好的字符串(内部使用的是JSONStringer)
JSON
讲解:李志敏
9/7/2013
概念
• JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language. 官网http://www.json.org/
JSONObject
9/7/2013
在Android中使用json
JSONObject解析丼例
在服务器上有一个html文件http://www.weather.com.cn/data/sk/101010100.html html内容如下:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"21","WD":"东南风","WS":"2级 ","SD":"78%","WSE":"2","time":"21:10","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB"}}
3、遍历数组,获取数组中每一个json对象,同时可以获取json对象中键对应的值
注意: 1、json数组并非全是由json对象组成的数组 2、json数组中的每一个元素数据类型可以丌相同
for (int i = 0; i < array.length(); i++) { JSONObject obj = array.getJSONObject(i); String title=obj.getString("title"); String description=obj.getString("description"); }
A dense indexed sequence of values. Values may be any mix of JSONObjects, other JSONArrays, Strings, Booleans, Integers, Longs, Doubles, null or NULL. Values may not be NaNs, infinities, or of any type not listed here.
•
9/7/2013
JSON书写格式
• • 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, null
]
}
9/7/2013
在javascript中使用json
• javascript解析json本身是丌需要仸何工具包的,也有一些封装好的 更方便使用的工具包(下载地址:http://www.json.org)
•
例1、翻译json字符串为json对象并解析
<script language="JavaScript"> var peopleStr='{"firstName": "Brett", "lastName":"McLaughlin" }'; var people=eval('('+peopleStr+')'); //上面两行代码相当于 //var people ={"firstName": "Brett", "lastName":"McLaughlin"}; alert(people.firstName); alert(people.lastName); </script>
9/7/2013
在javascript中使用json
• 例2:解析json数组 <script language="JavaScript"> var people =[ {"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); </script>
9/7/2013
在javascript中使用json
• 例3:解析复杂json对象
<script language="JavaScript"> var people ={ "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); </script>
9/7/2013
在Android中使用json
JSONArray
9/7/2013
在Android中使用json
JSONArray解析丼例
在服务器上有一个js文件http://192.168.1.101/Web/news.js文件内容如下: [{ title : "国家发改委:台湾降油价和大陆没可比性", description : "国家发改委副主仸朱之鑫", image : "http://192.168.1.101/Web/img/a.jpg", comment : 163 },{ title : "国家发改委:台湾降油价和大陆没可比性", description : "国家发改委副主仸朱之鑫", image : "http://192.168.1.101/Web/img/b.jpg", comment : 0 }, { title : "国家发改委:台湾降油价和大陆没可比性", description : "国家发改委副主仸朱之鑫", image : "http://192.168.1.101/Web/img/c.jpg", comment : 0 } ]; 9/7/2013
9/7/2013
JSON对象(键值对或键值对的集合)
• 例1、{ "name": "Obama"}
• 例2、{ "name": "Romney","age": 56}
• 例3、{ "city":{"name": "bj"},"weatherinfo":{"weather": "sunny"}}
• 例4、{
9/7/2013
在java中使用json
在javase 或者javaee中解析json格式的数据是需要导入jar包的,jar包有很多种
可以到官网下载,具体使用自己研究
9/7/2013
在Android中使用json
Android中内置了json的解析Api
9/7/2013
在Android中使用json
在Android中使用json
解析步骤 1、读取js文件源代码,获取一个json字符串
String jsonStr = DataUtil.Stream2String(in);
2、通过构造函数将json字符串转换成json数组
JSONArray array = new JSONArray(jsonStr);
InputStream in = conn.getInputStream(); String jsonStr = DataUtil.Stream2String(in);//将流转换成字符串的工具类 2、通过构造函数将json字符串转换成json对象 JSONObject jsonObject=new JSONObject(jsonStr); 3、从json对象中获取你所需要的键所对应的值 JSONObject json=jsonObject.getJSONObject("weatherinfo"); String city=json.getString("city"); String temp=json.getString("temp")
"city":{"name": "北京",“city_id”:"101010100"}, "weatherinfo":{"weather": "sunny","temp":"29度"}
}
9/7/2013
JSONwenku.baidu.com组
• 例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" }
9/7/2013
在Android中使用json
如何手劢生成一个json对象? 方法1、创建一个map,通过构造方法将map转换成json对象 Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "zhangsan"); map.put("age", 24); JSONObject json = new JSONObject(map); 方法2、创建一个json对象,通过put方法添加数据 JSONObject json=new JSONObject(); json.put("name", "zhangsan"); json.put("age", 24);
如:[94043,90210]或者["zhangsan",24]类似于javascript中的数组 9/7/2013
在Android中使用json
如何将一个json对象转换成json字符串? 无论是json对象还是json数组都复写了toString方法,只需调用toString方法 即可将json对象转换成一个格式良好的字符串(内部使用的是JSONStringer)
JSON
讲解:李志敏
9/7/2013
概念
• JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language. 官网http://www.json.org/
JSONObject
9/7/2013
在Android中使用json
JSONObject解析丼例
在服务器上有一个html文件http://www.weather.com.cn/data/sk/101010100.html html内容如下:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"21","WD":"东南风","WS":"2级 ","SD":"78%","WSE":"2","time":"21:10","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB"}}
3、遍历数组,获取数组中每一个json对象,同时可以获取json对象中键对应的值
注意: 1、json数组并非全是由json对象组成的数组 2、json数组中的每一个元素数据类型可以丌相同
for (int i = 0; i < array.length(); i++) { JSONObject obj = array.getJSONObject(i); String title=obj.getString("title"); String description=obj.getString("description"); }
A dense indexed sequence of values. Values may be any mix of JSONObjects, other JSONArrays, Strings, Booleans, Integers, Longs, Doubles, null or NULL. Values may not be NaNs, infinities, or of any type not listed here.
•
9/7/2013
JSON书写格式
• • 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, null
]
}
9/7/2013
在javascript中使用json
• javascript解析json本身是丌需要仸何工具包的,也有一些封装好的 更方便使用的工具包(下载地址:http://www.json.org)
•
例1、翻译json字符串为json对象并解析
<script language="JavaScript"> var peopleStr='{"firstName": "Brett", "lastName":"McLaughlin" }'; var people=eval('('+peopleStr+')'); //上面两行代码相当于 //var people ={"firstName": "Brett", "lastName":"McLaughlin"}; alert(people.firstName); alert(people.lastName); </script>
9/7/2013
在javascript中使用json
• 例2:解析json数组 <script language="JavaScript"> var people =[ {"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); </script>
9/7/2013
在javascript中使用json
• 例3:解析复杂json对象
<script language="JavaScript"> var people ={ "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); </script>
9/7/2013
在Android中使用json
JSONArray
9/7/2013
在Android中使用json
JSONArray解析丼例
在服务器上有一个js文件http://192.168.1.101/Web/news.js文件内容如下: [{ title : "国家发改委:台湾降油价和大陆没可比性", description : "国家发改委副主仸朱之鑫", image : "http://192.168.1.101/Web/img/a.jpg", comment : 163 },{ title : "国家发改委:台湾降油价和大陆没可比性", description : "国家发改委副主仸朱之鑫", image : "http://192.168.1.101/Web/img/b.jpg", comment : 0 }, { title : "国家发改委:台湾降油价和大陆没可比性", description : "国家发改委副主仸朱之鑫", image : "http://192.168.1.101/Web/img/c.jpg", comment : 0 } ]; 9/7/2013
9/7/2013
JSON对象(键值对或键值对的集合)
• 例1、{ "name": "Obama"}
• 例2、{ "name": "Romney","age": 56}
• 例3、{ "city":{"name": "bj"},"weatherinfo":{"weather": "sunny"}}
• 例4、{
9/7/2013
在java中使用json
在javase 或者javaee中解析json格式的数据是需要导入jar包的,jar包有很多种
可以到官网下载,具体使用自己研究
9/7/2013
在Android中使用json
Android中内置了json的解析Api
9/7/2013
在Android中使用json
在Android中使用json
解析步骤 1、读取js文件源代码,获取一个json字符串
String jsonStr = DataUtil.Stream2String(in);
2、通过构造函数将json字符串转换成json数组
JSONArray array = new JSONArray(jsonStr);