package com.agp.layoutdemo;
import android.content.res.Resources;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.RawRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class JasonTest extends AppCompatActivity {
Button btnJason;
TextView tvShow;
String jasonfile;
StringBuilder sbResult = new StringBuilder();
Handler handler = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.jason_test);
btnJason = (Button) findViewById(R.id.btnJason);
tvShow = (TextView) findViewById(R.id.tvShow);
handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x0001) {
String str = (String) msg.obj;
tvShow.setText(str);
}
;
}
};
}
public void obtain(View view) {
new Thread() {
public void run() {
Message message = new Message();
message.what = 0x0001;
try {
String tmpstr = parseJason();
message.obj = tmpstr;
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
handler.sendMessage(message);
}
}.start();
}
public String parseJason() throws JSONException, IOException {
jasonfile = get(getResources(), R.raw.jasontest);
JSONObject jsonobj = new JSONObject(jasonfile);
String listMsg = jsonobj.getString("listMsg");
Log.i("TEST", listMsg);
sbResult.append(listMsg + "\n");
JSONArray jsonArray = jsonobj.getJSONArray("list");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsobj = (JSONObject) jsonArray.get(i);
String busId = jsobj.getInt("busId") + "";
Log.i(jsobj.toString(), busId);
sbResult.append("busId:" + busId + " ");
String busLine = jsobj.getString("busLine");
Log.i(jsobj.toString(), busLine);
sbResult.append("busLine:" + busLine + " ");
String busName = jsobj.getString("busName");
Log.i(jsobj.toString(), busName);
sbResult.append("busName:" + busName + " ");
String cityId = jsobj.getInt("cityId") + "";
Log.i(jsobj.toString(), cityId);
sbResult.append("cityId:" + cityId + " ");
String districtId = jsobj.getInt("districtId") + "";
Log.i(jsobj.toString(), districtId);
sbResult.append("districtId:" + districtId + " ");
String firstTime = jsobj.getString("firstTime");
Log.i(jsobj.toString(), firstTime);
sbResult.append("firstTime:" + firstTime + " ");
String lastTime = jsobj.getString("lastTime");
Log.i(jsobj.toString(), lastTime);
sbResult.append("lastTime:" + lastTime + " ");
String price = jsobj.getInt("price") + "";
Log.i(jsobj.toString(), price);
sbResult.append("price:" + price + " ");
String version = jsobj.getInt("version") + "";
Log.i(jsobj.toString(), version);
sbResult.append("version:" + version + " " + "\n");
}
JSONObject person = jsonobj.getJSONObject("Person");
String name = person.getString("name");
Log.i("Person", name);
sbResult.append("name:" + name + " ");
String age = person.getString("age");
Log.i("age", age);
sbResult.append("age:" + age + " ");
String title = person.getString("title");
Log.i("title", title);
sbResult.append("title:" + title + " " + "\n");
int version = jsonobj.getInt("nVersion");
Log.i("version", version + "");
sbResult.append(version + "\n");
return sbResult.toString();
}
//从Resource中获取jason数据
public String get(Resources res, int id) throws IOException {
InputStream is = res.openRawResource(id);
Log.i("res+++", res.toString());
StringBuilder sb = new StringBuilder(10000);
byte[] btyeAry = new byte[1024];
int len = is.read(btyeAry);
//btye[] toString的时候,把里面所有的1024个byte的数据都改变为String。
//所以引用的时候要用到length这个属性。
while (len != -1) {
String str = new String(btyeAry, 0, len);
sb.append(str);
len = is.read(btyeAry);
}
String sourcejson = sb.toString();
is.close();
Log.i("get()- -", sourcejson);
return sourcejson;
}
}
************************************************
{ "listMsg":"数据获取成功",
"list":[
{"busId":1,"busLine":"901","busName":"夜间快客","cityId":2,"districtId":1,
"firstTime":"8:00","lastTime":"19:00","price":4,"version":0},
{"busId":2,"busLine":"502","busName":"直达","cityId":2,"districtId":2,
"firstTime":"2","lastTime":"2","price":2,"version":0},
{"busId":3,"busLine":"aaa","busName":"中通","cityId":2,"districtId":1,
"firstTime":"aa","lastTime":"aa","price":1,"version":0}
],
"Person":{"name":"xiaoA","age":25,"title":"Teacher"},
"nVersion":3
}
通过getResoures()获取Activity的当前Rescourec资源;
通过res.openResource(id)获取Raw文件夹下的文件的输入流is。
读取is至字节数组,然后由字节数组拿出字符,append到StringBuilder。
返回字符。
JSONObject分别获取:
JSONArray
JSONObject
for(int i=0;i<JSONArray.length();i++)获取所有的数组中的对象。
************************************************