Android_Gson/JSON详解
2015-07-09 03:13
309 查看
Android_Gson/JSON详解
①JSON简介
1、JSON:JavaScript Object Notation。2、JSON数据是一系列键值对的集合。
3、应用广泛。
4、相对XML更加方便。
②JSON vs XML
1、JSON 和XML的数据可读性基本相同。2、JSON和XML同样拥有丰富的解析手段。
3、JSON相对XML来讲,数据体积小。
4、JSON与JavaScript的交互更加方便。
5、JSON对数据的描述相对较差。
③JSON解析的简单使用
public class MainActivity extends Activity { /** Called when the activity is first created. */ private String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"; private Button button ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.buttonId); button.setOnClickListener(new ButtonListener()); } private class ButtonListener implements OnClickListener { @Override public void onClick(View v) { JsonUtils jsonUtils = new JsonUtils(); jsonUtils.parseJson(jsonData); } } }
public class JsonUtils { public void parseJson(String jsonData){ try{ //如果需要解析JSON数据,首要要生成一个JsonReader对象 JsonReader reader = new JsonReader(new StringReader(jsonData)); reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while(reader.hasNext()){ String tagName = reader.nextName(); if(tagName.equals("name")){ System.out.println("name--->" + reader.nextString()); } else if(tagName.equals("age")){ System.out.println("age--->" + reader.nextInt()); } } reader.endObject(); } reader.endArray(); } catch(Exception e){ e.printStackTrace(); } } }
解析结果:
④使用Gson将JSON解析成对象
public class MainActivity extends Activity { private Button button = null; private String jsonData = "{\"name\":\"Michael\",\"age\":20}"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.buttonId); button.setOnClickListener(new ButtonListener()); } private class ButtonListener implements OnClickListener{ @Override public void onClick(View v) { JsonUtils jsonUtils = new JsonUtils(); jsonUtils.parseUserFromJson(jsonData); } } }
public class JsonUtils { public void parseUserFromJson(String jsonData){ Gson gson = new Gson(); User user = gson.fromJson(jsonData, User.class); System.out.println("name--->" + user.getName()); System.out.println("age---->" + user.getAge()); } }
public class User { private String name ; private int age ; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
解析结果:
⑤将JSON解析成对象使用Iterator遍历
public class MainActivity extends Activity { private Button button = null; private String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.buttonId); button.setOnClickListener(new ButtonListener()); } private class ButtonListener implements OnClickListener{ @Override public void onClick(View v) { JsonUtils jsonUtils = new JsonUtils(); jsonUtils.parseUserFromJson(jsonData); } } }
public class JsonUtils { public void parseUserFromJson(String jsonData){ Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Gson gson = new Gson(); LinkedList<User> users = gson.fromJson(jsonData, listType); for (Iterator iterator = users.iterator(); iterator.hasNext();) { User user = (User) iterator.next(); System.out.println("name--->" + user.getName()); System.out.println("age---->" + user.getAge()); } } }
public class User { private String name ; private int age ; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
解析结果:
相关文章推荐
- Android手机安全卫士(一)---概述、启动、签名、主界面、自定义控件
- android悬浮窗口的实现
- Android 自定义DialogFragment替代popupwindow
- Android项目没提示语法错误却运行不了的问题
- Android 动画之TranslateAnimation应用详解
- android中程序的退出和关闭
- android中的surfaceview控件
- Robotium in Android Studio
- android XML布局大全
- Android开发者的Git&GitHub(二)
- Android根据uri获取图片的路径(4.4+)
- android入门学习-java面向对象基础
- Android入门(38)——第十五章 Android布局优化
- Android DiskLruCache完全解析
- Android-DrawerLayout介绍
- android 广播简介
- Android系列教程之五:Activity的生命周期
- Android中Task任务栈的四种模式
- Android关于手机数据读取联系人数据
- Xamarin.Android开发实践(十八)