Android开发--Json数据的解析
在执行解析数据之前,需要将一个类库应用到你的程序中,下载的地址是:
http://code.google.com/p/google-gson/
下载解压之后你需要将蓝色标记的文件放入到你的程序之中应用
首先,我们需要知道什么是Json数据:
JSON的定义:
一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。 – Json.org
说到这里,可能会发现Json数据与XML文件很相似,下面,我们看下它们之间的对比:
1.JSON和XML的数据可读性基本相同
2.JSON和XML同样拥有丰富的解析手段
3.JSON相对于XML来讲,数据的体积小
4.JSON与JavaScript的交互更加方便
5.JSON对数据的描述性比XML较差
6.JSON的速度要远远快于XML
下面,我们看下Android官方文档给出的一个Json的例子:
第一个按钮的作用是利用Google提供的Api解析Json数据,这里给出的是一个数组,具体的实现代码如下:
public class MainActivity extends Activity {/* * 1.开始解析数组 * 2.开始解析对象 * 3.解析键值对(多个) * 4.解析对象结束 * 5.开始解析对象 * 6.解析键值对 * 7.解析对象结束 * 8.解析数组结束 */private String jsonData="[{\"name\":\"BruceZhang\",\"age\":20},{\"name\":\"ZhangHu\",\"age\":23}]";private String jsonData2="{\"name\":\"BruceZhang\",\"age\":20}";private Button button;private Button button2;private Button button3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(Button)findViewById(R.id.button);button.setOnClickListener(new MyButton());button2=(Button)findViewById(R.id.button2);button2.setOnClickListener(new MyButton());button3=(Button)findViewById(R.id.button3);button3.setOnClickListener(new MyButton());}class MyButton implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.button:jsonArray(jsonData);break;case R.id.button2:userJson(jsonData2);break;case R.id.button3:userJsonArray(jsonData);break;default:break;}}}private void jsonArray(String jsonData) {JsonUtils jsonUtils=new JsonUtils();jsonUtils.parseJson(jsonData);}private void userJson(String jsonData){JsonUtils2 jsonUtils=new JsonUtils2();jsonUtils.parseUserFromJson(jsonData);}private void userJsonArray(String jsonData){JsonUtils3 jsonUtils=new JsonUtils3();jsonUtils.parseUserFromJson(jsonData);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}