android之JSON解析

JSON(JavaScript Object Notation)

——JSON是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管

JSON是在JavaScript的一个子集,JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。Android2.3之后可以在Android中直接解析JSON

——作用:在服务器与客户端之间进行数据传递

        XML比较: XML更轻便,效率更高

           XML可读性、描述性更差

步骤:

1.自己写一个JSON数据:

public static final String JSONDATA="{name:张三,age:26,phone:[131,132],score:{语文:100,数学:60,理综:{化学:120,物理:150}}}";

2.有俩种方式解析:

(1)JSONTokener:

JSONTokener jsonTokener=new JSONTokener(JSONDATA);
()JSONObiect:

JSONObject jsonObject=new JSONObject(JSONDATA);

3.

解析JSON:可以使用以下两种方式来解析

       ——JSONObject代表是一个JSON对象{}

              JSONArray代表是一个数组对象[]

              SONObjectJSONArray

              JSONObject rootObj=new JSONObject(json);

   Xxx n=rootObj.getXxx(String key)取相应的数据

 

       ——JSONTokener的解析方式:

              JSONTokener jsonParser = new JSONTokener(String JSON);  

             // 此时还未读取任何json文本,直接读取就是一个JSONObject对象。  

             // 如果此时的读取位置在"name" : 了,那么nextValue就是"yuanzhifei89"

            JSONObject person = (JSONObject) jsonParser.nextValue();  

             接下来就是JSONObject的方式解析了


我这里用的是 JSONTokener解析的,MainActivity代码如下:

public class MainActivity extends Activity {
	
	public static final String JSONDATA="{name:张三,age:26,phone:[131,132],score:{语文:100,数学:60,理综:{化学:120,物理:150}}}";

	private TextView tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv=(TextView) findViewById(R.id.tv);
	}
	
	
	
    public void btn1(View view){
    	//获得JSON对象
	    try {
	    	StringBuffer stringBuffer=new StringBuffer();
			//1.JSONObject jsonObject=new JSONObject(JSONDATA);
	    	//2.JSONTokener
	    	JSONTokener jsonTokener=new JSONTokener(JSONDATA);
	    	JSONObject jsonObject=(JSONObject) jsonTokener.nextValue();
			stringBuffer.append("name:"+jsonObject.getString("name")+"\n");
			stringBuffer.append("age:"+jsonObject.getString("age")+"\n");
			JSONArray phoneArray=jsonObject.getJSONArray("phone");
			stringBuffer.append("phone:"+phoneArray.getString(0)+" "+phoneArray.getString(1)+"\n");
			JSONObject scoreObject=jsonObject.getJSONObject("score");
			stringBuffer.append("语文:"+scoreObject.getString("语文")+"\n");
			stringBuffer.append("数学:"+scoreObject.getString("数学")+"\n");
			JSONObject lizongObject=scoreObject.getJSONObject("理综");
			stringBuffer.append("化学:"+lizongObject.getString("化学")+"\n");                                                                                                         
			tv.setText(stringBuffer.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
}

布局文件activity_main:

<LinearLayout 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:orientation="vertical">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btn1"
        android:text="JSON解析" />
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"/>
</LinearLayout>

效果如图:

android之JSON解析_第1张图片

要源码的:下载











你可能感兴趣的:(json,数据,服务器)