安卓解析JSON文件

根据JOSN文件的格式,文件只有两种数据,一是对象数据,以 {}为分隔,二是数组,以[]分隔

以下介绍安卓如何解析一个JSON文件,该文件存放在assets目录下,即:assets/xx.json

工程目录结构以及简单布局:



要解析的JSON文件数据


代码实现:



package com.lhy.nojsonfile; 
   
import java.io.BufferedReader; 
   
import java.io.IOException; 
   
import java.io.InputStream; 
   
import java.io.InputStreamReader; 
   
import org.json.JSONException; 
   
import org.json.JSONObject; 
   
import android.os.Bundle; 
   
import android.app.Activity; 
   
import android.util.Log; 
   
import android.view.View; 
   
import android.view.View.OnClickListener; 
   
import android.widget.Button; 
   
import android.widget.TextView; 
   
public 
   class MainActivity 
   extends Activity 
   
{ 
   
    Button bt_Json; 
   
    TextView tv_Json; 
   
    @Override 
   
    protected 
   void onCreate ( Bundle savedInstanceState) 
   
    { 
   
        super.onCreate(savedInstanceState); 
   
        setContentView(R.layout.activity_main); 
   
        bt_Json 
   = (Button) 
   this.findViewById(R.id.bt_Json); 
   
        bt_Json.setOnClickListener( 
   new OnClickListener() 
   
        { 
   
            @Override 
   
            public 
   void onClick ( View v) 
   
            { 
   
                bt_Json_click(); 
   
            } 
   
        }); 
   
    tv_Json 
   = (TextView) 
   this.findViewById(R.id.tv_Json); 
   
    } 
   
    // 解析JSON文件 
   
    protected 
   void bt_Json_click () 
   
    { 
   
        try 
   
        { 
   
        // 获取json文件数据源,流的方式呈现 
   
        InputStream inputStream 
   = 
   this.getAssets().open( 
   "xx.json"); 
   
        // 读取JSON文件流 
   
        InputStreamReader inputStreamReader 
   = 
   new InputStreamReader(inputStream, 
   "gbk"); 
   
        BufferedReader bufferedReader 
   = 
   new BufferedReader(inputStreamReader); 
   
        String temp 
   = 
   ""; 
   
        String jsonSource 
   = 
   ""; 
   
            //一行一行的读取 
   
            while ((temp 
   = bufferedReader.readLine()) 
   != null) 
   
            { 
   
                jsonSource 
   += temp; 
   
            } 
   
        //关闭 
   
        bufferedReader.close(); 
   
        inputStream.close(); 
   
        // JSON解析对象 
   
        JSONObject jsonObject 
   = 
   new JSONObject(jsonSource); 
   
        // 获取JOSN文件当中的数据对象weatherinfo【可知JSON文件数据只有两种,一是对象{},二是数组[]】 
   
        JSONObject jsonObjectWeatherinfo 
   = jsonObject.getJSONObject( 
   "weatherinfo"); 
   
        // JSOn文件某一数据对象的属性,例如weatherinfo对象的属性city 
   
        String result 
   = jsonObjectWeatherinfo.getString( 
   "city"); 
   
        tv_Json.setText(result); 
   
        } 
   
    catch (JSONException e) 
   
    { 
   
        e.printStackTrace(); 
   
        Log.i( 
   "lhy", 
   "JSONException:" 
   + e.toString()); 
   
    } 
   
    catch (IOException e) 
   
    { 
   
        Log.i( 
   "lhy", 
   "IOException:" 
   + e.toString()); 
   
        e.printStackTrace(); 
   
    } 
   
   } 
   
}



结果: