解析Json数据和实例

Json数据的定义:

String jsonlzz = “{\“name”\:\"lzz\",\"age\":100,\"arr\":[1,2,3,4,\"swpu\"]}”;

其中的name就是其数据的第一个属性,值为”lzz”,相应的age就是第二个属性,值对应是100,其中的arr是该数据的数组,数组中的内容不仅仅限于一种,可以多种多样。可以以此类推添加很多对应的数据。
新建一个Json数据的对象和获取对应对象中的值的方法:

JSONObject jo = new JSONObject(jsonlzz);//将对应的数据传入该对象中
//获取对象中的数据;
String name = jo.getString("name");
//获取对象中的数组;
JSONArra arr = jo.getJSONArray("arr");
int first = arr.getInt(0);//因为已知的第一个值是int类型,所以我们可以直接用getInt.

实例开发:PM的检测。

public class MainActivity extends Activity {

    private TextView lzz;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lzz = (TextView) findViewById(R.id.textView1);
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                reloadData();
            }


        });
        reloadData();//程序运行就自动检索
    }
    private void reloadData() {
        // TODO Auto-generated method stub
        lzz.setText("正在加载...");
        new AsyncTask<Void,Void,String>(){//不能在主线程中访问网络数据
            protected String doInBackground(Void... params){
                try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(new URL("http://aqicn.org/publishingdata/json").openStream(),"utf-8"));//将我们需要访问的网页和bufferedreader对象联系起来
                String line = null;
                StringBuffer content = new StringBuffer();
                while((line = reader.readLine())!=null){
                    content.append(line);//将每行获取的数据传给content;
                    }
                reader.close();
                return content.toString();//返回该字符串
            }catch(IOException e){
                e.printStackTrace();
                }

            return null;
            }
            protected void onPostExecute(String s){
                super.onPostExecute(s);
                if(s!=null)
                {
                    try {
                        JSONArray jsonArr = new JSONArray(s);//获取S字符串中的json数组
                        JSONObject firstJo = jsonArr.getJSONObject(0);//获取数组中第一个对象
                        JSONArray pollutants = firstJo.getJSONArray("pollutants");//获取第一个对象中的数组
                        JSONObject firstPollutant = pollutants.getJSONObject(0);//获取数组中第一个对象中数组的第一个数据

                        lzz.setText(String.format("%s %s: %f",firstJo.getString("cityName"),firstJo.getString("localName"),firstPollutant.getDouble("value")));//输出所获取到的数据
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        lzz.setText("失败");
                        e.printStackTrace();
                    }
                }
            }
        }.execute();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值