步步为营_Android开发课[12]_Json学习
来源:互联网 发布:淘宝关联账户能开店吗 编辑:程序博客网 时间:2024/06/10 06:22
Focus on technology, enjoy life!—— QQ:804212028
浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305
- 主题:json学习
-JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON采用完全独立于语言的文本格式,JSON是理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。
json的数据格式:
1、对象是一个无序的“‘名称/值’对”集合。
例子:表示人的一个对象:
{"姓名":"大憨","年龄":24}
2、数组是值(value)的有序集合。
例子:一组学生
{"学生":[{"姓名":"小明","年龄":9},{"姓名":"大憨","年龄":8}],"老师":[{"姓名":"嘟嘟","年龄":23},{"姓名":"蛋蛋","年龄":24}]}
说明:此Json对象包括了一个学生数组,而学生数组中的值又是两个Json对象。
Json与xml比较:
用XML表示中国部分省市数据如下:
<?xmlversion="1.0"encoding="utf-8"?><country> <name>中国</name> <province> <name>黑龙江</name> <cities> <city>哈尔滨</city> <city>大庆</city> </cities> </province> <province> <name>广东</name> <cities> <city>广州</city> <city>深圳</city> <city>珠海</city> </cities> </province> <province> <name>台湾</name> <cities> <city>台北</city> <city>高雄</city> </cities> </province> <province> <name>新疆</name> <cities> <city>乌鲁木齐</city> </cities> </province></country>
用JSON表示如下:
{"name":"中国","province":[{"name":"黑龙江","cities":{"city":["哈尔滨","大庆"]}}, {"name":"广东","cities":{"city":["广州","深圳","珠海"]}}, {"name":"台湾","cities":{"city":["台北","高雄"]}}, {"name":"新疆","cities":{"city":["乌鲁木齐"]}} ]}
编码的可读性,xml有明显的优势,毕竟人类的语言更贴近这样的说明结构。json读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过json的索引.province[0].name就能够读取“黑龙江”这个值。
编码的手写难度来说,xml还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而xml却包含很多重复的标记字符。
在Android中包含四个与JSON相关的类和一个Exceptions:
JSONArray
JSONObject
JSONStringer
JSONTokener
JSONException
Android JSON解析实例:
import java.util.HashMap;import java.util.Map;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity { private static final String JSONString = "{" + "\"phone\":[\"12345678\",\"87654321\"]," + "\"name\":\"Tim\"," + "\"married\":false" + "}"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 解析得到一个Map对象 Map<String, Object> personMap = parseJSONString(JSONString); Log.d("-----------", "phone:" + personMap.get("phone") + "\n" + "name:" + personMap.get("name") + "\n"+ "married:" + personMap.get("married")); } /** * JSON解析 * * @param JSONString * @return */ private Map<String, Object> parseJSONString(String JSONString) { Map<String, Object> resultMap = new HashMap<String, Object>(); try { // 直接把JSON字符串转化为一个JSONObject对象 JSONObject person = new JSONObject(JSONString); resultMap.put("phone", person.getJSONArray("phone").toString()); resultMap.put("name", person.getString("name")); resultMap.put("married", person.getBoolean("married")); } catch (JSONException e) { e.printStackTrace(); } return resultMap; }}
运行结果:
Focus on technology, enjoy life!—— QQ:804212028
浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305
- 步步为营_Android开发课[12]_Json学习
- 步步为营_Android开发课[3]_Activity学习
- 步步为营_Android开发课[4]_Intent学习
- 步步为营_Android开发课[5]_Service学习
- 步步为营_Android开发课[6]_ContentProvider学习
- 步步为营_Android开发课[7]_BroadCastReceiver学习
- 步步为营_Android开发课[8]_AsyncTask学习
- 步步为营_Android开发课[9]_Handle学习
- 步步为营_Android开发课[10]_Thread学习
- 步步为营_Android开发课[11]_AIDL服务学习
- 步步为营_Android开发课[1]_认识Android开发
- 步步为营_Android开发课_番外篇[1]_AndroidManifest.xml介绍
- 步步为营_Android开发课_番外篇[2]_ADB介绍
- 步步为营_Android开发课_番外篇[3]_DDMS介绍
- 步步为营_Android开发课_番外篇[4]_Logcat介绍
- 步步为营_Android开发课[13]_用户界面之view(视图)
- 步步为营_Android开发课[14]_用户界面之Layout(布局)
- 步步为营_Android开发课[17]_用户界面之Button(按钮)
- 高级碰撞检测技术
- android input系统
- new和malloc的区别(一)
- Git学习笔记(九) 历史穿梭
- Git学习笔记(十) 改变历史
- 步步为营_Android开发课[12]_Json学习
- Java 关于paintComponent函数问题
- Linux RedHat6.4安装免费版Websphere8.5报错
- Git学习笔记(十一) Git克隆
- SimpleAdapter结合ListView的使用
- Java Virtual Machine Garbage Collection浅析
- jmeter插件
- Git学习笔记(十二) 前几章的补充
- 第二大整数