数组和Json的相互转换
2016-12-14 21:48
381 查看
JSON是一种轻量级的数据交换格式。 JSON采用完全独立于语言的文本格式。网络通信时用到json和数据间的转换。为了更好的理解json的用法,这里分别对类和json转换、数组和json的转换编写 理解,并且尝试获取天气预报的数据。
自定义一个person类:
效果图如下:
自定义一个person类:
public class Person { String name; int age; boolean sex; public void fly() { System.out.println("I can't fly~~"); }
public class MainActivity extends Activity { private Button btn1; private Button btn2; private Button btn3; private Button btn4; private TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.bnt1); btn2 = (Button) findViewById(R.id.bnt2); btn3 = (Button) findViewById(R.id.bnt3); btn4 = (Button) findViewById(R.id.bnt4); tv1 = (TextView) findViewById(R.id.tv1); btn1.setOnClickListener(new OnClickListener() { // 类转化为JSON @Override public void onClick(View v) { // TODO Auto-generated method stub Person p = new Person(); p.age = 20; p.name = "张三"; p.sex = false; Gson gson = new Gson(); String str = gson.toJson(p); tv1.setText(str); } }); btn2.setOnClickListener(new OnClickListener() { // 数组转化为JSON @Override public void onClick(View v) { // TODO Auto-generated method stub Person p1 = new Person(); p1.age = 20; p1.name = "张三"; p1.sex = false; Person p2 = new Person(); p2.age = 20; p2.name = "李四"; p2.sex = false; Person p3 = new Person(); p3.age = 20; p3.name = "王五"; p3.sex = false; Person[] p = {p1, p2, p3}; Gson gson = new Gson(); String str = gson.toJson(p); tv1.setText(str); } }); btn3.setOnClickListener(new OnClickListener() { // JSON转化为类 @Override public void onClick(View v) { // TODO Auto-generated method stub String str = tv1.getText().toString(); Gson gson = new Gson(); Person p = gson.fromJson(str, Person.class); tv1.setText("名字:"+p.name); } }); btn4.setOnClickListener(new OnClickListener() { //json转换为数组 @Override public void onClick(View v) { // TODO Auto-generated method stub String str = tv1.getText().toString(); tv1.setText(" "); Gson gson = new Gson(); List<Person> list = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType()); for(Person p : list){ tv1.append("名字:"+p.name); } } }); } public void DoGET(View v){ //请求网络中的数据 final Handler handle = new Handler(){ public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); String data = msg.obj.toString(); tv1.setText(data); Toast.makeText(MainActivity.this, "来了吗?", Toast.LENGTH_SHORT).show(); } }; // 进行网络的请求和访问,需要在 线程中进行 Thread t = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub StringBuffer strbuff = new StringBuffer(); //定义字符串缓冲区 String buf = null; BufferedReader buff = null; String str = "http://weather.123.duba.net/static/weather_info/101010100.html"; try { URL url = new URL(str); //URL可以理解为指向互联网的指针,存放了真实的网络地址 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //建立了与网络的连接 conn.setConnectTimeout(10000); conn.setRequestMethod("GET"); //POST GET要大写!!! conn.setDoInput(true);//以后就可以使用conn.getInputStream().read();设置是否向conn输出。 int code = conn.getResponseCode();//获取url状态响应返回码 if (code == HttpURLConnection.HTTP_OK) {//连接成功 InputStream is = conn.getInputStream();//获得内容的输入流 buff = new BufferedReader(new InputStreamReader(is));//把已经获得的内容输入流存放在输入存储器中,再进一步放入读取缓冲区中 while((buf = buff.readLine()) != null){//如果读取的某一行文本不为空的,则把读取的数据放入缓存中 strbuff.append(buf); } }else{ Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if (buff != null) { try { buff.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Message msg = new Message(); String data = strbuff.toString(); //Message msg = Message.obtain(); msg.obj = data; handle.sendMessage(msg); } }); t.start(); }
效果图如下:
相关文章推荐
- monkeyrunner之安卓开发环境搭建教程(1)
- php结合安卓客户端实现查询交互实例
- 安卓输入框被虚拟键盘挡住的问题(微信开发)
- Android安卓中循环录像并检测内存卡容量
- Eclipse导出安卓apk文件的图文教程
- 在安卓系统中插入表情到光标位置的代码详解
- Almp 安卓系统上搭建本地php服务器环境的步骤
- 谷歌被屏蔽后如何搭建安卓环境
- 安卓APP测试之使用Burp Suite实现HTTPS抓包方法
- 安卓(Android)聊天机器人实现代码分享
- 安卓(android)怎么实现下拉刷新
- Android中Fragment的生命周期与返回栈的管理
- 分享一个安卓的内置多种工具类的Activity
- 安卓系统中实现摇一摇画面振动效果的方法
- java实现获取安卓设备里已安装的软件包
- 安卓(Android)中如何实现滑动导航
- 移动端html5图片上传方法【更好的兼容安卓IOS和微信】
- 六款值得推荐的android(安卓)开源框架简介