JSONObject(alibaba)
使用JSONArray和JSONObject
需要的jar包:
commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-lang-2.4.jar
commons-logging-1.1.jar
ezmorph-1.0.6.jar
json-lib-2.3-jdk15.jar
使用的时候需要导入的包为:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
JSONObject用来生成Json对象。
JSONObject形式为:键值对的值可以为任意形式,包括可以为数组。一个JSON对象中中可以包含多个键值对(可以包含数组,但是不是数组)。
{"key":"value"}
{"key":"value","key":"value"}
{"key":"value","key":[{"key":"value"}]}
JSONArray是用来存放Json的数组。【new JSONArray的实体不是json对象】
JSONArray形式为:[{"key":"value"},{"key":"value","key":"value"},{"key":"value","key":[{"key":"value"},{"key":"value"}]}],数组中包含N个JSON类型的数据
JsonObject(gson)
gson的JsonObject有一个非常好用的将数据转成json类型的方法。
可以将所有的对象都转成一个json对象。
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**封装好一个方法,用来将输入的对象转成json类型并以字符串的形式返回*/
public class JsonTool {
public static String toJson(Object object) {
Gson gson = new GsonBuilder().serializeNulls().create();
return gson.toJson(object);
}
}
其中的Object可以是任何对象,如map、自定义的对象等。
【需要注意的是,使用这个方法只能是对最终需要转换的对象进行转换】
以map为例:
Map<String , String> map = new HashMap<String,String>();
在对map所有的赋值完毕之后,对map使用JsonTool.toJson(map)此时能返回一个正确的json形式的字符串。
如果在对map赋值的过程中,对map的某一个值使用了此方法,那么在最后对map再次使用toJson就不会得到想要的结果。
如:
class Student{}
Map<String , Object> map = new HashMap<String,Object>();
Student student = new Student();
String studentMSG = JsonTool.toJson(student);
map.put("student",studentMSG);
JsonTool.toJson(map);//此时得到的结果就不是想要的结果