JSON简介
JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式,是一种用来交互数据的轻量级语言。
对于JSON的语法这里不做介绍,可以自己去看看。这里主要是要介绍JSON在java上的创建和解析,也就是如何把java的对象创建成JSON数据和把JSON数据取出来的一个过程,然后在说说GSON。Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。也就弥补了JSON的一个缺陷,JSON无法把JSON对象生成java对象,除此之外,GSON还具有一些个性化的方法。
JSON对象的创建
- 通过普通方式去创建一个JSON数据,例如
{
"name":"zhangsan",
"age":20,
"work":"程序猿"
}
或者通过这种方式构建
public void testJavaBean2Json(){
JSONObject obj = new JSONObject();
obj.put("name", "zhangsan");
obj.put("age", 22);
obj.put("work", "程序员");
//显示
System.out.println(obj.toString());
//显示为一个json数组格式
//[{"name":"zhangsan","age":22,"work":"程序员"}]
}
还是重点来写java对象生成json数据吧。大概意思就是我们先写一个普通User类,然后把这个对象的数据转成json数据。接下来是它的实现过程。
public void testJavaBean2Json(){
//创建JavaBean对象
User user = new User("zhangsan",20,"程序猿");
//准备将哪个Java对象转成JSON文本
JSONArray jsonArray = JSONArray.fromObject(user);
//获取转换后的JSON文本
String json = jsonArray.toString();
//显示
System.out.println(json);
//显示为一个json数组格式
//[{"name":"zhangsan","age":20,"work":"程序猿"}]
}
再来看一个java的集合类型转成json数据。
public void testListJavaBean2Json(){
List<User> userList = new ArrayList<User>();
userList.add(new User("lisi",21,"工程师");
userList.add(new User("wangwu",22,"工程师"));
JSONArray jsonArray = JSONArray.fromObject(userList);
String json = jsonArray.toString();
System.out.println(json);
//打印出的数据
//[{"name":"lisi","age":21,"work":"工程师"},{"name":"lisi","age":21,"work":"工程师"}]
}
那么生成json数据后怎么把json数据的个别属性取出来呢?因为我们把java对象转成json数据后是一个json数组,所以我们需要把它循环打印出来。
public void testjavabean() throws JSONException{
jsonUser juser=new jsonUser("zhangsan",10000.1);
JSONArray json=new JSONArray().fromObject(juser);
//String sjson=json.toString();
//System.out.println(sjson);
for(int i=0;i<json.size();i++){
System.out.println("name:"+json.getJSONObject(i).getString("name"));
System.out.println("age:"+json.getJSONObject(i).getInt("age"));
System.out.println("age:"+json.getJSONObject(i).getInt("work"));
}
}
JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式 。所以先写一个json对象,用JSONObject解析。
public void testjavabean() throws JSONException{
String json="{\"name\":\"zhangsan\",\"age\":\"22\" }";
org.json.JSONObject jsonobject= new org.json.JSONObject(json);
String name=jsonobject.getString("name");
String age=jsonobject.getString("age");
System.out.println(name);
System.out.println(age);
}
GSON
利用GSON生成json数据,这里用到的是利用java类来生成json对象。如下
User user=new User();
user.setname("zhangsan");
user.setage(20);
//构建一个GSON
GSON gson=new GSON();
system.out.println(gson.toJson(user));
利用GSON解析json数据为java对象数据
public void testjavabean() {
String json="{\"name\":\"zhangsan\",\"age\":\"22\" }";
GSON gson=new GSON();
User usergson=gson.fromJson(json,User.class);
System.out.println(usergson.toString());
}
GSON的更多方法和使用还有待去了解,这只是gson的简单的构建和解析过程。所以利用GSON的好处在于可以正向生成json和反向解析成java类的一个好处。








网友评论