Android网络编程之JSON、GSON
2016-03-22 23:56
645 查看
Android网络编程之JSON、GSON
JSON(JavaScript Object Notation),它是一种轻量级的文本数据交换格式,类似于XML,但比XML更小、更快、更易解析。
代码示例如下:public class Json extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_main); textView = (TextView) findViewById(R.id.textView); //将用来解析的JSON数据 String data = "{ \"Strings\" :{\"Strings1\":\"ONE\",\"Strings2\":\"TWO\"}," + "\"Number\":[\"987654321\",\"123456789\"]," + "\"Int\":100}"; try { //新建JSONObject对象,将字符串data转换为JSONObject对象 JSONObject mJSONObject = new JSONObject(data); //进一步获得JSONObject对象 JSONObject Strings = mJSONObject.getJSONObject("Strings"); //取出Strings中名称为Strings1的值ONE String str = Strings.getString("Strings1"); //获得JSONArray数组对象 JSONArray array = mJSONObject.getJSONArray("Number"); //取出Number中的第二个数组元素 int a = array.getInt(1); textView.setText(str +" "+ a ); } catch (JSONException e) { e.printStackTrace(); } } }
GSON:
谷歌提供的GSON开源库可以让JSON数据的工作变得更简单,不过GSON并没有被添加到Android官方的API中,因此如果想要使用这个功能的话,则必须下载一个GSON的Jar包并在添加到项目中。将其拷贝到项目的libs目录下,GSON库就会自动添加到项目中了。比如一段JSON格式的数据如下所示:
{"name":"Tom","age":20}
那我们可以定义一个Person类,并加入name和age这两个字段,然后只需简单地调用如下代码就可以将JSON数据自动解析成一个Person对象了:
Gson gson = new Gson(); //jsonData为待解析的数据,Person.class为类 Person person = gson.formJson(jsonData,Person.class);
如果要解析的是一段JSON数组会稍微麻烦一点,借助TypeToken将期望解析成的数据类型传入到fromJson()方法中,如下所示:
List<Person> people = gson.fromJson(jsonData,new TypeToken<List<Person>>(){}.getType());
代码示例如下:
public class GsonTest extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_main); //将用来解析的JSON数据 String data1 = "{ \"name\" :\"Tom\", \"age\":20 }"; Gson gson = new Gson(); Person person = gson.fromJson(data1, Person.class); //取得数据 Log.d("GsonTest",person.getName() + " "+person.getAge()); //将用来解析的JSON数据 String data2 = "[{ \"name\" :\"Tom\", \"age\":20 }," + "{ \"name\" :\"Jack\", \"age\":22 }]" ; List<Person> people = gson.fromJson(data2, new TypeToken<List<Person>>() { }.getType()); //打印出数据 for(int i = 0;i<people.size();i++){ Log.d("GsonTest",people.get(i).getName() + " "+people.get(i).getAge()); } } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories