Android JSON解析器教程

Android JSON解析器教程

JSON (JavaScript对象表示)是一种编程语言。它是最小的、文本的,是JavaScript的一个子集。它是XML的一个替代。

Android提供支持来解析JSON对象和数组。

JSON相对于XML的优势

1)对于AJAX应用程序,JSON比XML更快更容易。

2)与XML不同,JSON更短更快速地读写。

3)它使用数组。

JSON对象

JSON对象包含类似映射的键/值对。键是字符串,值是JSON类型。 键和值用逗号分隔。{(大括号)表示JSON对象。

{
    "employee": {
        "name":       "sachin", 
        "salary":      56000, 
        "married":    true
    }
}

JSON数组

[(方括号)代表JSON数组。

["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

让我们再举一个JSON数组的例子。

{ "Employee" :
    [
     {"id":"101","name":"Sonoo Jaiswal","salary":"50000"},
     {"id":"102","name":"Vimal Jaiswal","salary":"60000"}
    ] 
}

Android JSON解析的例子

activity_main.xml

从拖放窗口中拖一个textview。现在activity_main.xml文件将变成这样:

<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="75dp"
        android:layout_marginTop="46dp"
        android:text="TextView" />

</RelativeLayout>

Activity类

让我们写代码使用dom解析器来解析xml。

package com.javatpoint.jsonparsing;

import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
public static final String JSON_STRING="{\"employee\":{\"name\":\"Sachin\",\"salary\":56000}}";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TextView textView1=(TextView)findViewById(R.id.textView1);

try{
JSONObject emp=(new JSONObject(JSON_STRING)).getJSONObject("employee");
String empname=emp.getString("name");
int empsalary=emp.getInt("salary");

String str="Employee Name:"+empname+"\n"+"Employee Salary:"+empsalary;
textView1.setText(str);

}catch (Exception e) {e.printStackTrace();}

}

}

输出:

Android JSON解析器教程

在Android中解析JSONArray

通过JSONArray类的帮助,您可以解析包含JSON对象的JSONArray。让我们看一个简单的例子来解析json数组。

package com.example.jsonparsing2;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
   @Override
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView output = (TextView) findViewById(R.id.textView1);

        String strJson="{ \"Employee\" :[{\"id\":\"101\",\"name\":\"Sonoo Jaiswal\",\"salary\":\"50000\"},{\"id\":\"102\",\"name\":\"Vimal Jaiswal\",\"salary\":\"60000\"}] }";

               String data = "";
               try {
                     // Create the root JSONObject from the JSON string.
                   JSONObject  jsonRootObject = new JSONObject(strJson);

                   //Get the instance of JSONArray that contains JSONObjects
                    JSONArray jsonArray = jsonRootObject.optJSONArray("Employee");

                    //Iterate the jsonArray and print the info of JSONObjects
                    for(int i=0; i < jsonArray.length(); i++){
                        JSONObject jsonObject = jsonArray.getJSONObject(i);

                        int id = Integer.parseInt(jsonObject.optString("id").toString());
                        String name = jsonObject.optString("name").toString();
                        float salary = Float.parseFloat(jsonObject.optString("salary").toString());

                        data += "Node"+i+" : \n id= "+ id +" \n Name= "+ name +" \n Salary= "+ salary +" \n ";
                      }
                    output.setText(data);
                 } catch (JSONException e) {e.printStackTrace();}
      }
}

下载此示例

输出:

Android JSON解析器教程

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程