Android开发之JSON解析
2016-10-02 19:56
375 查看
什么是JSON?
JSON(JavaScript Object Notation),是一种解析方式,性质和XML解析一样。JSON相对于XML来说,数据体积小,解析稍微方便一点。JSON数据
JSON数据是一系列键值对的集合。JSON数据可分为JSON数组和JSON对象两种,JSON数组可包含多个JSON对象。JSON的解析步骤
1.开始解析JSON数组2.开始解析JSON对象(若解析对象是JSON对象,则直接从这一步开始进行)
3.解析键值对
4.重复第3步,直到所有的键值对解析完毕
5.结束解析JSON对象
6.重复第2-5步(若解析对象是JSON对象,则在这一步结束解析)
7.重复第2-6步,直到所有的JSON对象解析完毕
8.结束解析JSON数组
Ex:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.mycompany.jsonanalysis.MainActivity"> <Button android:id="@+id/button1" android:text="开始解析JSON数据" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>
JsonUtils.java:
package com.mycompany.jsonanalysis; import android.util.JsonReader; import java.io.StringReader; /** * Created by Administrator on 2016/10/2. * 该类是自定义的Json工具类,包含一个解析JSON数据的成员函数 */ public class JsonUtils { /** * 该函数对JSON数据进行解析 * @param jsonData * @return */ void parseJson(String jsonData){ JsonReader reader = new JsonReader(new StringReader(jsonData)); // 创建一个JsonReader对象来读取Json数据 try { reader.beginArray(); //开始读取Json数组 while (reader.hasNext()) { // 判断是否还有下一个Json对象 reader.beginObject(); // 开始读取Json对象 while (reader.hasNext()) { // 判断是否还有下一个键值对 String tagName = reader.nextName(); // 读取键名 if (tagName.equals("name")) // 此处不能使用“==”对二者进行比较 System.out.println("name:" + reader.nextString()); // 输出与键名对应的值 else if (tagName.equals("age")) System.out.println("age:" + reader.nextString()); // 输出与键名对应的值 } reader.endObject(); // 结束读取Json对象,endObject()不可省 } reader.endArray(); // 结束读取Json数组,endArray()也不可省 } catch(Exception e){ e.printStackTrace(); } } }
MainActivity.java:
package com.mycompany.jsonanalysis; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private Button button; String jsonData = "[{\"name\":\"zhangsan\",\"age\":20}, {\"name\":\"lisi\",\"age\":21}]"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); button.setOnClickListener(new Button1Listener()); } class Button1Listener implements View.OnClickListener { @Override public void onClick(View view) { JsonUtils jsonUtils = new JsonUtils(); System.out.println("----->开始解析"); jsonUtils.parseJson(jsonData); } } }
相关文章推荐
- Android开发视频第二季之十二:JSON数据解析
- Android开发--Json数据的解析
- 开发android客户端需要了解的知识--JSON数据解析
- 【Android开发经验】比Gson解析速度快10倍!——Json解析神器Jackson使用介绍
- 【Android应用开发】-(17)获取Google天气预报通过Xml和JSON解析数据
- Android应用开发之(JSON解析库的选择)
- 【Android网络开发の4】解析和生成JSON数据
- Android网络开发中如何使用JSON进行网络通信---Android_JSON数据通讯方法解析
- Android开发之JSON数据解析详解(二)
- 【Android开发经验】超好用的json解析工具——Gson项目使用详解
- 老罗Android开发视频教程( android解析json数据 )4集集合
- Android开发之解析JSon数据(二)
- Android 微盘开发步骤-登录界面之JSON解析
- 开发android客户端需要了解的知识--JSON数据解析
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- Android开发--Json数据的解析
- java&android开发中简化json解析过程--选择json解析库
- Android开发之解析JSon数据
- Android开发智能机器人聊天项目(2)- Json数据解析
- Android开发之Gson解析Json嵌套数据