获取json数据并解析

原创
2017/04/12 10:32
阅读数 145

1、json数据

[{"id":"1","color":"red","name":"Android"},

{"id":"2","color":"yellow","name":"IOS"},

{"id":"3","color":"blck","name":"C++"},

{"id":"4","color":"red","name":".NET"},

{"id":"5","color":"back","name":"JAVA"}]

2、activity_main布局


    <Button
        android:id="@+id/json"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="解析Json数据" />

3、MainActivity.java

使用okhttp必须导入架包:http://download.csdn.net/detail/qq_26650589/9811409

Button button=(Button) findViewById(R.id.json);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				//使用okhttp获取数据
				new Thread(new Runnable() {
					@Override
					public void run() {
						OkHttpClient okHttpClient=new OkHttpClient();
						Request request=new Request.Builder().url("http://10.0.2.2/date.json").build();
						try {
							Response response=okHttpClient.newCall(request).execute();
							//得到数据date
							final String date=response.body().string();
							//将数据传入解析方法
							JsonJX(date);

						} catch (Exception e) {

							e.printStackTrace();
						} 

					}
               }).start();
			}
		});
	}
	private void JsonJX(String date) {  

		JSONArray jsonArray;
		try {
			jsonArray = new JSONArray(date);
			Log.i("TAG", "------2--------"+jsonArray);
			for (int i = 0; i < jsonArray.length(); i++) {
				//解析json
				JSONObject jsonObject = jsonArray.getJSONObject(i);
				final String id = jsonObject.getString("id");
				String color = jsonObject.getString("color");
				String name = jsonObject.getString("name");
				//打印日志
				Log.i("TAG", "id:"+id+"name:"+name+"color"+color);

			}
		} catch (Exception e) {
			e.printStackTrace();
			Log.i("TAG", "--------"+e.getMessage());
		}

4、添加网络权限

<uses-permission android:name="android.permission.INTERNET"/>

 

打印结果:

如果模拟器是4.0以下将解析失败,提示String无法换换JsonArray。连接:https://my.oschina.net/mstian/blog/185716

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部