安卓解析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();
}
}
}
结果: