JsonObject Android 读取

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++)获取所有的数组中的对象。
 
 
************************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值