您的位置:首页 > 移动开发 > Android开发

Android解析JSON字符串

2014-11-11 13:48 316 查看
public class MainActivity extends Activity {
private TextView tv_json;

private String weatherInfo;

//接收JSON字符串的地址
private String URl = "http://m.weather.com.cn/data/101010100.html";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_json = (TextView) findViewById(R.id.tv_json);

new Thread() {
public void run() {
try {
URL url = new URL(URl);
// 联网
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();//联网代码要在子线程中执行
conn.setRequestMethod("GET");
conn.setConnectTimeout(4000);
int code = conn.getResponseCode();
if (code == 200) {// 联网成功
InputStream is = conn.getInputStream();
String result = StreamTools.readFromStream(is);

JSONObject json = new JSONObject(result);
JSONObject weather = json.getJSONObject("weatherinfo");
weatherInfo = (String) weather.get("city");
System.out.println(weatherInfo);
runOnUiThread(new Runnable() {//在UI线程中更新界面

@Override
public void run() {
// TODO Auto-generated method stub
tv_json.setText(weatherInfo);
}
});
} else {

}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}


把输入流转换成字符串的工具类

public class StreamTools {
/**
* @param is 输入流
* @return String 返回的字符串
* @throws IOException
*/
public static String readFromStream(InputStream is) throws IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while((len = is.read(buffer))!=-1){
baos.write(buffer, 0, len);
}
is.close();
String result = baos.toString();
baos.close();
return result;
}
}


加上网络访问权限

<uses-permission android:name="android.permission.INTERNET"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: