JSON语法
首先看JSON的语法和结构,这样我们才知道怎么去解析它。JSON语法时JavaScript对象表示语法的子集。
JSON的值可以是:
数字(整数或者浮点数)
字符串(在双引号内)
逻辑值(true 或 false)
数组(使用方括号[]包围)
对象( 使用花括号{}包围)
null
JSON中有且只有两种结构:对象和数组。
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,“javascript”,“vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
做个Android网络编程的同学一定对于JSON解析一点都不陌生,因为现在我们通过手机向服务器请求资源,服务器给我们返回的数据资源一般都是以JSON格式返回,当然还有一些通过XML格式返回,相对JSON格式,XML格式的数据在处理时相对比较繁琐,并且Android为我们提供了两个解析JSON对象的类:JSONObject与JSONArray这两个对象可以很好的满足我们的需求,JSONArray对象可以以数组的形式将数据html" target="_blank">返回到手机,JSONObject对象则可以以对象的形式将数据为我们封装好返回,手机接收都这两种数据后,通过解析,可以很方便的使用,大大的方便了我们的开发学习。
当然在使用JSONObject进行数据解析时,有两种方式,一种通过键值对的形式一个一个的取数据;另一种就是将JSONObject解析为具体的对象,然后通过对象的get、set方法进行数据的读取与操作,对于第一种方式,相信刚接触JSON解析的小童鞋都是这样干的,相对第一种方式,第二种方式更加的简单方便,下面我们就一起学习一下如何实现将JSONObject对象转化为具体的对象吧。
因为今天我们要探讨的是关于JSONObject的解析,所以我就通过一个简单的对象创建--对象封装--对象解析--对象操作,为大家介绍一下如何进行JSONObject向具体对象的转化。
首先我们的对象类(user):
public class User { private String id; private String name; private String from; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } @Override public String toString() { return "User [id=" + id + ",name=" + name + ",from=" + from +"]"; } }
这里我重写了对象的toString方法,这里一定要注意返回参数的格式:类名+'['+参数名+'='+参数+.....+']'
下面就是我们的对象创建与解析了:
1、JSONObject对象解析类:
//JSONObject解析类 public class JsonParseToObject { public Object AllJsonParseToObject(String json, String packageAddress) { Object parseObject = null; try { parseObject = JSON.parseObject(json, Class.forName(packageAddress)); } catch (ClassNotFoundException e) { e.printStackTrace(); } return parseObject; } }
2、JSON对象的创建与解析:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView text = (TextView) findViewById(R.id.hw); //将我们的对象属性封装都JSONObject中 JSONObject jo = new JSONObject(); jo.put("id", "16"); jo.put("name", "小了"); jo.put("from", "河南"); String str = jo.toString(); Toast.makeText(this, str, Toast.LENGTH_LONG).show(); //对JSONObject对象进行解析 User u = (User) new JsonParseToObject().AllJsonParseToObject(jo.toString(), "com.example.jsontoobject.User"); //判断JSONObject对象解析是否正确 if(u != null){ text.setText(jo.toString()+"\nid:"+u.getId()+";name:"+u.getName()+";from:"+u.getFrom());//进行对象操作 }else{ text.setText("User == null"); } } }
布局文件很简单就是一个文本框,用来显示解析后的数据。
好了到这里我们关于JSONObject解析的知识就为大家介绍完毕,没用过这种方式的小伙伴可以尝试一下,还是挺方便的,如果你有更好的方式,还望交流学习。
以上内容是小编给大家分享的Android JSON解析的全部叙述,希望可以帮助大家。
本文向大家介绍深入浅析Java注解框架,包括了深入浅析Java注解框架的使用技巧和注意事项,需要的朋友参考一下 我们经常会在java代码里面看到:“@Override”,“@Target”等等样子的东西,这些是什么? 在java里面它们是“注解”。 下面是百度百科的解释:java.lang.annotation.Retention可以在您定义Annotation型态时,指示编译器如何对待您的自定义
本文向大家介绍深入浅析centos7中的systemd,包括了深入浅析centos7中的systemd的使用技巧和注意事项,需要的朋友参考一下 系统启动流程 systemd Unit 类型 服务管理 `centos7几乎一切服务都是由systemctl来管理service unit,centos7之前的service同时仍然兼容。 运行级别 CentOS7 引导启动顺序 service unit
本文向大家介绍深入浅析JavaScript中的3DES,包括了深入浅析JavaScript中的3DES的使用技巧和注意事项,需要的朋友参考一下 3DES简介: 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥
本文向大家介绍深入浅析JavaScript中with语句的理解,包括了深入浅析JavaScript中with语句的理解的使用技巧和注意事项,需要的朋友参考一下 JavaScript 有个 with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式. 也就是在指定的代码区域, 直接通过节点名称调用对象. with语句的作用是暂时改变作用域链、减少的重复输入。 其语法结构为
因为自己对Go底层的东西比较感兴趣,所以抽空在写一本开源的书籍《深入解析Go》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享对Go语言的内部实现的一些研究。 我一直认为知识是用来分享的,让更多的人分享自己拥有的一切知识这个才是人生最大的快乐。 这本书目前我放在Github上,时间有限、能力有限,所以希望更多的朋友参与到这个开源项目中来。 https://github.com/tianc
主要内容:概念,特性,主内存与工作内存,指令重排序的条件,happens-before 原则,jvm和jmm之间的关系,CAS概念 Java内存模型(Java Memory Model,JMM)JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中
本文向大家介绍深入浅析Python中join 和 split详解(推荐),包括了深入浅析Python中join 和 split详解(推荐)的使用技巧和注意事项,需要的朋友参考一下 python join 和 split方法简单的说是:join用来连接字符串,split恰好相反,拆分字符串的。 .join() join将 容器对象 拆分并以指定的字符将列表内的元素(element)连接起来,返回
本文向大家介绍深入浅析Python字符编码,包括了深入浅析Python字符编码的使用技巧和注意事项,需要的朋友参考一下 Python的字符串编码规则一直让我很头疼,花了点时间研究了下,并不复杂。主要涉及的内容有常用的字符编码的特点,并介绍了在python2.x中如何与编码问题作战,本文关于Python的内容仅适用于2.x,3.x中str和unicode有翻天覆地的变化,具体请查阅相关资料。 1.