Android的JSON数据解析
一、 使用原生方式解析
准备工作:准备一个布局文件,用来显示元数据与转换之后的数据
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:id="@+id/btn_String2JOSNObject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用原生方式:String2JOSNObject " /> <Button
android:id="@+id/btn_String2JOSNArray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用原生方式:String2JOSNArray " /> <Button
android:id="@+id/btn_String2Bean_Gson"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用Gson方式:String2Bean " /> <Button
android:id="@+id/btn_String2List_Gson"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用Gson方式:String2List " /> <Button
android:id="@+id/btn_String2Arrays_Gson"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用Gson方式:String2Arrays " /> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="元数据"
android:textColor="@android:color/holo_red_light"
android:textSize="20sp" /> <TextView
android:id="@+id/tv_metadata"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" /> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="转换后的数据"
android:textColor="@android:color/holo_red_light"
android:textSize="20sp" /> <TextView
android:id="@+id/tv_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" /> </LinearLayout>
1. 使用原生方式---将String转换为JOSNObject
1.1 准备元数据
//使用原生方式: JSONObject2String
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("name","小米");
jsonObject.put("age",1);
JSONObject familyJOSN = new JSONObject();
familyJOSN.put("father","米爸");
familyJOSN.put("mother","米妈");
jsonObject.put("family",familyJOSN);
JSONArray hobbyArray = new JSONArray();
hobbyArray.put("篮球");
hobbyArray.put("看书");
jsonObject.put("hobby",hobbyArray); } catch (JSONException e) {
e.printStackTrace();
}
metaDataStr = jsonObject.toString();
tv_metadata.setText(jsonObject.toString());
1.2 开始转换数据
//使用原生方式:String2JOSNObject
findViewById(R.id.btn_String2JOSNObject).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
JSONObject jsonObject = new JSONObject(metaDataStr);
Log.e(JOSNActivity.class.getName(),jsonObject.toString());
String name = jsonObject.getString("name");
String age = jsonObject.getString("age");
JSONObject familyJOSN = new JSONObject(String.valueOf(jsonObject.getJSONObject("family")));
String father = familyJOSN.getString("father");
String mother = familyJOSN.getString("mother");
JSONArray hobbyArray = new JSONArray(jsonObject.getJSONArray("hobby").toString());
String hobby = "";
for(int i = 0; i < hobbyArray.length(); i ++){
if(i != hobbyArray.length() -1){
hobby = hobby + (String) hobbyArray.get(i)+"、";
}else {
hobby = hobby + (String) hobbyArray.get(i);
} }
String resultStr = "姓名:"+name+",年龄:"+age+",家庭成员:"+father+"、"+mother+",爱好:"+hobby;
tv_data.setText(resultStr);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
2. 使用原生方式:将String转换为JOSNArray
2.1 准备元数据
// JSONArray2String
JSONArray array = new JSONArray();
for(int i = 0; i < 2; i ++){
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("name","小米"+i);
jsonObject.put("age",22+i);
array.put(jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
}
metaDataStr = array.toString();
tv_metadata.setText(metaDataStr);
2.2 开始转换数据
//使用原生方式:String2JOSNArray
findViewById(R.id.btn_String2JOSNArray).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String resultStr = "";
JSONArray jsonArray = new JSONArray(metaDataStr);
for(int i = 0; i < jsonArray.length(); i ++){
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
resultStr = resultStr + "第" + i + "组姓名:"+ jsonObject.getString("name") +
",年龄:"+ jsonObject.getString("age")+"\n";
}
tv_data.setText(resultStr);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
二、 使用GSON解析JSON数据
1. 使用Gson方式:将String转换为Bean
1.1 准备Bean类
static class Bean{ public Bean(String name,int age,List<String> hobby){
this.name = name;
this.age = age;
this.hobby = hobby;
Family family = new Family();
family.setFather(name+"爸");
family.setMother(name+"妈");
this.family = family;
} /**
* name : 小米
* family : {"mother":"米妈","father":"米爸"}
* age : 1
* hobby : ["篮球","看书"]
*/
private String name;
private Family family;
private int age;
private List<String> hobby; public void setName(String name) {
this.name = name;
} public void setFamily(Family family) {
this.family = family;
} public void setAge(int age) {
this.age = age;
} public void setHobby(List<String> hobby) {
this.hobby = hobby;
} public String getName() {
return name;
} public Family getFamily() {
return family;
} public int getAge() {
return age;
} public List<String> getHobby() {
return hobby;
} public static class Family {
/**
* mother : 米妈
* father : 米爸
*/
private String mother;
private String father; public void setMother(String mother) {
this.mother = mother;
} public void setFather(String father) {
this.father = father;
} public String getMother() {
return mother;
} public String getFather() {
return father;
}
}
}
1.2 准备元数据
//使用Gson方式:Bean2String
Gson gson = new Gson();
List<String> list = new ArrayList<>();
list.add("篮球");
list.add("看书");
Bean bean = new Bean("小米",23,list);
metaDataStr = gson.toJson(bean).toString();
tv_metadata.setText(metaDataStr);
1.3 开始转换数据
//使用Gson方式:String2Bean
findViewById(R.id.btn_String2Bean_Gson).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Gson gson = new Gson();
Bean resultBean = gson.fromJson(metaDataStr,Bean.class);
String name = resultBean.getName();
int age = resultBean.getAge();
String father = resultBean.getFamily().getFather();
String mother = resultBean.getFamily().getMother();
List<String> list = resultBean.getHobby();
String hobby = "";
for(int i = 0; i < list.size(); i ++){
if(i != list.size() -1){
hobby = hobby + (String) list.get(i)+"、";
}else {
hobby = hobby + (String) list.get(i);
} }
String resultStr = "姓名:"+name+",年龄:"+age+",家庭成员:"+father+"、"+mother+",爱好:"+hobby;
tv_data.setText(resultStr);
}
});
2. 使用Gson方式:将String转换为List
2.1 准备元数据
//使用Gson方式:List2String
Gson gson = new Gson();
List<Bean> beans = new ArrayList<>();
List<String> list = new ArrayList<>();
list.add("篮球");
list.add("看书");
Bean bean1 = new Bean("小米",23,list);
Bean bean2 = new Bean("菲菲",24,list);
beans.add(bean1);
beans.add(bean2);
metaDataStr = gson.toJson(beans);
tv_metadata.setText(metaDataStr);
2.2 开始转换数据
//使用Gson方式:String2List
findViewById(R.id.btn_String2List_Gson).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Gson gson = new Gson();
// Gson为我们提供了TypeToken来实现对泛型的支持,
List<Bean> beans = gson.fromJson(metaDataStr,new TypeToken<List<Bean>>(){}.getType());
String resultStr ="";
for(int i = 0; i < beans.size() ; i++){
String name = beans.get(i).getName();
int age = beans.get(i).getAge();
String father = beans.get(i).getFamily().getFather();
String mother = beans.get(i).getFamily().getMother();
resultStr = resultStr + "姓名:"+name+",年龄:"+age+",家庭成员:"+father+"、"+mother+"\n";
}
tv_data.setText(resultStr);
}
});
3. 使用Gson方式:将String转换为Arrays
3.1 准备元数据
//使用Gson方式:Arrays2String
String[] arrays = {"张三","李四","王五","赵六"};
Gson gson = new Gson();
metaDataStr = gson.toJson(arrays);
tv_metadata.setText(metaDataStr);
3.2 开始转换数据
//使用Gson方式:String2Arrays
findViewById(R.id.btn_String2Arrays_Gson).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Gson gson = new Gson();
//此时String[]当成一个实体类
String[] arrays = gson.fromJson(metaDataStr,String[].class);
String resultStr = "";
for(int i = 0; i < arrays.length;i ++){
resultStr = resultStr + arrays[i] +";";
}
tv_data.setText(resultStr);
}
});
Android的JSON数据解析的更多相关文章
- Android系列---JSON数据解析
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- Android 实现Json数据解析,并进行应用!
从网站上获取数据然后再客户端进行解析是常见的数据交互.下面是常用的一些接口网址: webservice工厂接口 http://www.36wu.com 快递查询接口http://webservice. ...
- Android 之JSON数据解析
(以下基本都是郭霖大神<第一行代码>中的知识) JSON数据与xml相比,优势在于体积更小,传输所需的流量少.但是缺点也很明显,就是语义性较差. 下面是一组JSON格式的数据. [{&qu ...
- Android关于JSON数据解析
一.什么是json json(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以 ...
- Android下Json数据解析
如从网络获取JSON 则需要创建一个工具类,该类返回一个字符串为JSON文本 package com.example.jsonapp; import java.io.InputStreamReader ...
- Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- Android JSON数据解析(GSON方式)
要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...
随机推荐
- ab 站点压力测试工具
ab--压力测试工具 前端时间由于需要测试一个网站的高并发的情况,使用到了一个ab测试工具,下面是我自己的体验及参考网上别人的博客所写,希望对大家有所帮助. ab工具简介 ab 全称:apache b ...
- Docker ElK安装部署使用教程
一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...
- SEED实验——Environment Variable and Set-UID Program实验描述与实验任务
第一部分:实验描述 该实验的学习任务是理解环境变量是如何影响程序和系统行为的.环境变量是一组动态命名的变量 第二部分:实验任务 2.1 任务一:操作环境变量 在这个任务中,我们研究可以用来设置和取消设 ...
- python全栈开发 * css 选择器 浮动 * 180808
css 选择器 一.基本选择器 1.标签选择器 标签选择器可以选中所有的标签元素,比如div,ul,li ,p等等,不管标签藏的多深,都能选中,选中的是所有的,而不是某一个,所以说 "共性& ...
- C++类中的Static关键字
静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问,而静态成员函数可不建立对象就可以被使用. 或者说静态函数与一般函数没有太大的区别,只是访问有限制,静态变量跟一般的全局变量的区别 ...
- 华大单片机开发板HC32F030上手入门
HC32F030开发板(如下图所示)分为板载调试模块(左半部分)和MCU开发电路(右半部分).二者中间通过邮票孔相连,如果将板子从中间掰开,板载调试模块就可以当一个CMSIS-DAP的仿真器来使用.此 ...
- PHP字符串处理 单引号 双引号 heredoc nowdoc 定界符
---恢复内容开始--- 2019年2月22日09:49:54 参考文档: http://php.net/manual/zh/language.types.string.php#language. ...
- 杂_小技巧_将网页上的内容通过亚马逊邮箱传到kindle中
所需条件 1.kindle要联网 2.要有亚马逊邮箱 3.要有微信,电脑上或者手机上 操作步骤: 1.找到你想要传送到kindle上的文章网页 2.在微信中关注“亚马逊kindle服务号”并且按照里边 ...
- 使用C#.NET列举组合数前N项和
列举如下列所示的组合数前N项和,代码如下(递归方法里注意去重): static void Main(string[] args) { List<).ToList(); File.AppendAl ...
- hydra用法
三.Syntax # hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns] [-o FILE] [-t TASKS] [ ...