FastJSON学习与简单实践
2016-11-07 22:40
204 查看
JSON类
FastJson类中提供了很多方法,但是我们只要学习其中几个核心的方法就行了。那么哪几个方法是核心方法呢,我们用JSON类的目的是什么呢,无非就是将一个json形式的字符串转化为一个java中的json对象或者json数组。或者是将一个java中json对象转化为json字符串。- Static Object: parse(String text)
这是JSON类的一个static方法,我们通过JSON的api可以看出,它其中几乎所有的方法都是static的,这就方便我们直接使用JSON类来调用这些方法。而不用去创建JSON实例了。这个对象时说返回一个Object对象,但是我输入一个json字符串后,通过其解析返回的是JSONObject对象,这点不知是如何理解的,存在歧义。
因此,为了避免这种歧义,我们可以用下面的两种解析json字符串的方法。
- static JSONObject:parseObject(String text)
这个方法明确是说将一个string字符串解析为一个JSONObject对象。
//JSON String str = "{'name':'kobe','age':23}"; String str1 = ""; Object object = JSON.parseObject(str); str = JSON.toJSONString(object);
static JSONArray: parseArray(String text)
这个方法是明确的说将一个字符串解析为一个JSON数组的形式,在这个数组中的每个元素都是JSONObject类型的。
String jsonStr = "[{fieldName:'sex',fieldType:'radio',fieldValue:['man','women']}]"; JSONArray jsonArray = JSONArray.parseArray(jsonStr); JSONObject jsonObject = jsonArray.getJSONObject(0);
JSONObject
构造方法:
JSONObject共有四个构造方法,其中有一个构造方法值得我们关注:JSONObject(Map
//JSONObject Map<String,Object> map = new HashMap(); map.put("name","kobe"); map.put("age",38); map.put("points","25.5"); map.put("birth",new Date()); JSONObject jsonObj = new JSONObject(map);
除了上面所说的用构造方法实例化JSONObject对象外,我们要知道JSONObject是继承与JSON类的,因此我们同样可以通过使用JSON类中的方法来解析字符串得到JSONObject类。
method
既然已经得到了JSONObject对象了,那我们就得从这个对象中获得一些键的值了。这些键的值得获取方式都是通过get+类型获得的。get(Object key)
这可以说是相当于所有get方法的一个总的方法,即其他所有get+类型的方法都可以用此方法来代替。因为该方法得到的是一个Object对象,如果你想获得想要的类型的对象,只需要强制转换一下就行。
String wife = (String)jsonObj.get("wife");
getDate(String key)
用该方法可以得到一个Date对象。
Date date = jsonObj.getDate("birth");
getDouble(String key)
获得一个Double型的对象。
getDoubleValue(String key)
该方法得到的是一个double的基本类型的变量值。
类似上面两组的方法还有getByte/getByteValue,getFloat/getFloatValue,getInteger/getIntValue。
getJSONObject(String key)
通过key得到一个JSONObject对象,也就是相当于json的嵌套写法。或者是java中put是value是一个JSONObject对象
getJSONArray(String key)
同上。
put(String key, Object value)
为JSONObject对象添加一组键值对。
remove(String key)
从JSONObject中移除一组键值对。
后来,我又看了一下JSONObject的源码,有种恍然大悟的感觉。原来这里所有的get、remove、put操作都是转化为一个对map的操作。那么这个map是哪里来的呢,还记JSONObject的构造函数嘛!对!就是那个map,几乎所有的操作都是和map息息相关的,因此,从某种意义上来说,我们可以吧JSONObject对象当做一个Map对象来看待。
下面是JSONObject中的部分源码:
private final Map<String, Object> map; public JSONObject(){ this(16, false); } public JSONObject(Map<String, Object> map){ this.map = map; } public int size() { return map.size(); } public boolean isEmpty() { return map.isEmpty(); } public Object get(Object key) { return map.get(key); } public JSONObject getJSONObject(String key) { Object value = map.get(key); if (value instanceof JSONObject) { return (JSONObject) value; } return (JSONObject) toJSON(value); } public Boolean getBoolean(String key) { Object value = get(key); if (value == null) { return null; } return castToBoolean(value); }
JSONArray
构造函数
JSONArray(List list)当你在看到这个构造函数的时候,会不会想到什么东西呢。或者说你已经明白了JSONArray是怎么回事了,对的!你没有猜错,它和JSONObject类似,它的核心就是对list对象的操作。因此,我就列出它常用的方法,大部分都不需要解释了,因为可以看成是操作list。
- add(int index, Object element)
- add(Object e)
- contains(Object o)
- get(int index)
- getBoolean(int index)
- getBooleanValue(int index)
- getDate()
- getString()
- isEmpty()
- interator()
- remove(int index)
- size()
以上的这些方法基本上都是list中的方法,其中get这些方法是说取index上具体类型的对象。
下面着重讲这几个方法:
- getJSONObject/getJSONArray
其实这两个方法也不特殊,和上面的get类似,只不过这里放在list中的元素是一个JSONObject/JSONArray对象而已。
- toArray()
将一个JSONArray转化为一个Object[]数组。
- toArray(T[] a)
将一个JSONArray转化为一个T[]型的a数组,这里T表示泛型。也就是在上一个方法的基础上,具体指定了转化后的数组类型。
相关文章推荐
- fastjson的简单学习
- Json实践(一):fastjson和gson简单效率测试
- 学习struts2+json简单示例(适于初学json者)
- 学习第二十天@简单json+上传文件+Ado存储过程
- fastjson的简单使用
- fastjson 的简单使用
- RabbitMQ学习及实践2---介绍及简单Java实现
- 第8天 Symbian学习之开发实践:简单控件和复合控件的使用
- Android开发之FastJson概述与简单使用
- cocos2d-x 菜鸟学习笔记十七(简单的碰撞检测 实践篇 下)
- cocos2d-x 菜鸟学习笔记十六(简单的碰撞检测 实践篇 中)
- 使用fastjson转换json的简单例子
- Linux设备驱动学习与实践之一-最简单的模块
- C#简单快速的json组件fastJSON
- EJB中JNDI的逻辑名的使用及部署_{EJB之无状态会话Bean简单应用-学习与实践}续(inber原作)
- Json.Net学习(1) 实现简单的序列化和反序列化
- Json 格式简单学习
- fastjson开发学习(二)---对返回的json进行解析
- php学习笔记(三十)ajax请求和接收参数的实现方式(包括json数据格式的简单处理)
- json简单学习