JSON亲测解析 实现北京的天气预报信息

经过俩天的学习与实践 本次通过一个天气预报小小数据虽说仅仅只接了一组数据但大体还是了解JSON的解析的基本过程。下面就是先关解析的过程:先把解析封装成一个类:

package com.zzy.test;

import java.io.BufferedReader;

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.http.HttpConnection;

import org.apache.http.util.ByteArrayBuffer;

import org.json.JSONArray;

import org.json.JSONObject;

import android.R.integer;

import android.app.Activity;

import android.util.Log;

public class JSON extends Activity

{

public static List<Map<String, String>> getJsonpath(String path) throws Exception

{

List<Map<String,String>> list =new ArrayList<Map<String,String>>();

String json=null;

Map<String, String> map;

URL url=new URL(path);

/// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.

HttpURLConnection cn=(HttpURLConnection) url.openConnection();

//设置网络连接超时

cn.setConnectTimeout(5*1000);

//设置请求方式一般简单用getpost这里用get方法

cn.setRequestMethod("GET");

//得到读取的内容

InputStreamReader in=new InputStreamReader(cn.getInputStream());

//流的应用与读取

BufferedReader bu=new BufferedReader(in);

String line=bu.readLine().toString();

bu.close();

in.close();

//把字符数组转换成字符串

json=new String(line);

//这里是以对象的形式

JSONObject item1=new JSONObject(json);

//得到对象中的对象

JSONObject item=item1.getJSONObject("weatherinfo");

// System.out.println(path);

//获取对象中的每一个数值

System.out.println(json);

String name=item.getString("city");

String id=item.getString("cityid");

String temp=item.getString("temp");

String fengxiang=item.getString("WD");

String daxiao=item.getString("WS");

String wet=item.getString("SD");

String time=item.getString("time");

String isreader=item.getString("isRadar");

String Radar=item.getString("Radar");

//添加到MAP

map=new HashMap<String, String>();

map.put("name", name);

map.put("id", id);

map.put("temp", temp);

map.put("fengxiang", fengxiang);

map.put("daxiao", daxiao);

map.put("wet", wet);

map.put("time", time);

map.put("isReader", isreader);

map.put("Rader", Radar);

list.add(map);

//测试数据

for(Map<String, String> list1:list)

{

System.out.println(list1.get("name"));

System.out.println(list1.get("id"));

System.out.println(list1.get("temp"));

System.out.println(list1.get("fengxiang"));

System.out.println(list1.get("daxiao"));

}

return list;

}

}

上面是一个仅仅解析一个北京市的天气预报,其他城市的类似。尤其注意的是解析需要注册上网许可应在Androidmainfest注册:

Activity中的代码是:

package com.zzy.test;

import java.net.URL;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import javax.security.auth.PrivateCredentialPermission;

import android.R.string;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class DoActivity extends Activity {

private TextView textView1=null;

private TextView textView2=null;

private TextView textView3=null;

private TextView textView4=null;

private List<Map<String, String>> list =new ArrayList<Map<String,String>>();

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.textView1=(TextView)findViewById(R.id.do1);

this.textView2=(TextView)findViewById(R.id.do2);

this.textView3=(TextView)findViewById(R.id.do3);

this.textView4=(TextView)findViewById(R.id.do4);

try

{

String path="http://www.weather.com.cn/data/sk/101010100.html";

//传递路径

list=JSON.getJsonpath(path);

for(Map<String,String> list1:list)

{

System.out.println(list1.get("name"));

System.out.println(list1.get("id"));

System.out.println(list1.get("temp"));

System.out.println(list1.get("fengxiang"));

System.out.println(list1.get("daxiao"));

textView1.setText("城市 :"+list1.get("name"));

textView2.setText("风向 :" +list1.get("fengxiang"));

textView3.setText(list1.get("temp"));

System.out.println(list1.get("fengxiang"));

textView4.setText(list1.get("daxiao"));

}

} catch (Exception e)

{

// TODO: handle exception

}

}

}

显示效果:

整体的效果就是这样 通过一个简单的解析让我们简单的对JSON的使用有一个清晰的认识!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值