宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

WebBuilder使用的操作json的jar包是org.json,下面是相关的文档及源码,搜索就可得

文档:http://www.json.org/javadoc/org/json/JSONObject.html

源码:https://github.com/douglascrockford/JSON-java

本文默认读者熟练使用JSON,了解JSON语法,开始正题:

从文档和源码看来org.json没有多少东西,的确他就是很简单,没有多少东西,在这几个仅有的类中,我们要经常使用也只有JSONArray和JSONObject两个,先看一下JSONObject

JSONObject

(1)构造函数(重点关注以下几个):

JSONObject()
          构造一个空的JSON对象:{}
JSONObject(JSONObject jo, java.lang.String[] names)
          通过其他的JSONObject构建,取其中的几个KEY
 
JSONObject(java.util.Map map)
          根据map构造,我们都知道map就是键值对,跟JSON一样.
 
JSONObject(java.lang.String source)
          根据一个字符串构造,需要注意的是字符串要符合 json的语法{}
 

(2)重要方法,最需要关注的方法就是读和写,读有两个方法get和opt,两个方法都用于读取,区别是如果提供的KEY并不存在,get会抛出异常,而opt会返回一个默认值

有大量getInt(String key) ;getString(…);optDouble()……….

对于改,写操作只有一个方法put,put方法的使用方式是put(key,newValue);这样就基本上掌握了JSONObject的使用了,下面还有几个方法,其他的冷门如果遇到我们再补充

has(key),isNull(key)判断key是否存在

keys()获取所有的key,返回值为Iterator集合

remove(key)移除某属性

toString()生成json字符串

JSONArray

JSONArray就是一个数组,当然准确地说应该是个ArrayList,这点我们可以从源码的构造函数看到,同样我们先关注他的构造函数,与JSONObject相同有一个空的构造函数,一个根据字符串的构造函数,比较JSONObject有一个根据map的构造函数,JSONArray有一个根据Collection的构造函数。

JSONArray的方法我们同样使用get和opt来读取数据,put方法来添加修改

注意一点:操作JSONObject我们都是使用key来操作的,但JSONArray我们是使用INDEX下标值来操作的。


org.json的知识就是上面这些,我们来看看工具类JsonUtil使用它做了什么:

1.public static HashMap<JSONObject, JSONObject> getRelations(JSONArray jsonArray, ArrayList<JSONObject> children, String key){}

调用方法2,获取关系map

2.private static void markParent

(HashMap<JSONObject, JSONObject> map,JSONObject parent,JSONArray jsonArray,ArrayList<JSONObject> children, String key){}

3.public static String insert(JSONArray ja, String text, int index)

在数组的某个位置插入内容

4.public static JSONObject readObject(File file)

读取文件内容转换为JSONObject

5.public static JSONArray readArray(File file)

读取文件内容转换为JSONArray 

6.public static String optString(JSONObject jo, String key)

在一个JSONObject中找出key对应的value

7.public static String optString(JSONArray ja, int index)

在一个JSONArray里找到一个下标对应值

8.public static Object opt(JSONObject jo, String key)

与6相似,返回Object

9.public static Object opt(JSONArray ja, int index)

与7相似,返回Object

10.public static void clear(JSONObject jo)

把JSONObject的每一个属性都设置为空

11.public static String getText(ArrayList<String> list)

把一个ArrayList转化为字符串数组的形式

12.public static JSONObject findObject(JSONArray ja, String key, String text)

在JSONArray里找出一个符合key,text的JSONObject