JSON教程之GSON基本解析(Java-Gson)

本文详细介绍了如何使用Gson库在Java中进行JSON对象和数组的构建,包括JsonObject、JsonArray、JsonElement的创建,并展示了如何将这些对象转化为JSON字符串的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Gson我们可以很方便把一个自定义Java对象转换为Gson。但是,我们也需要知道一些Java基本对象和Gson之间的转换,我们这里就说一些基本Java对象和Gson直接的转换。

1、构建JsonObject对象

Json字符串中,如果想要显示出来是 { } 这样格式的,就必须构建JsonObject对象

eg:

JsonObject spanObj=new JsonObject();
spanObj.addProperty("latitude_delta",0);
spanObj.addProperty("longitude_delta",0);

JsonObject regionObj=new JsonObject();
      regionObj.add("center", centerObj);
regionObj.add("span", spanObj);

JsonObject有2种add方法,一种是addProperty,这个方法的第一个参数是Key,第二个参数是Value,Key只能是String类型的,Value可以是Boolean,Integer,String 等Java基本类型

第二种方法是add,add方法也有2个参数,分别作为Key,Value,其中Value是JsonElement对象,其中JsonElement有一些子类,像:JsonArray, JsonNull, JsonObject, JsonPrimitive这些都是JsonElement的子类

2、构建JsonArray、JsonElement对象

在Json字符串中,如果想要显示出来是 [ ] 这样格式的,就必须构建一个JsonArray对象或者JsonElement对象

JsonArray的add方法只能接受JsonElement或其子类,所以我们需要先构建一个JsonElement或JsonObject等

eg:

JsonArray businessesArray=new JsonArray();
businessesArray.add(businessObj);//businessObj为一个JsonObject对象

因为JsonElement没有显式的构造方法,我们如果想要构建JsonArray类型的JsonElement时,需要借用Gson的toJsonTree方法,该方法接受一个Object对象,我们可以用任意的Java对象来构建JsonElement:

Gson gson=new Gson();

List<String> cate1=new ArrayList<String>();
cate1.add("Local Flavor");
cate1.add("localflavor");

List<String> cate2=new ArrayList<String>();
cate2.add("Mass Media");
cate2.add("massmedia");

List<List<String>> cates=new ArrayList<List<String>>();
cates.add(cate1);cates.add(cate2);
JsonElement categoriesElement=gson.toJsonTree(cates);

3、生成JSON字符串

如果需要输出JSON字符串,第一种方法是构建一个JsonObject对象,然后输出JsonObject对象即可,第二种是用Gson的toJson方法,生成一个String类型的Json串

eg:(其中Obj是一个JsonObject对象)

String gsonStr=gson.toJson(obj);
System.out.println(gsonStr);
System.out.println(obj);

4、示例


import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

public class GsonAssembled {
	
	public static void assembleGson(){
		 JsonObject obj=new JsonObject();
		 Gson gson=new Gson();
		
		 JsonObject businessObj=new JsonObject();
		List cate1=new ArrayList();
		cate1.add("Local Flavor");
		cate1.add("localflavor");
		
		List cate2=new ArrayList();
		cate2.add("Mass Media");
		cate2.add("massmedia");
		
		List> cates=new ArrayList>();
		cates.add(cate1);cates.add(cate2);
		JsonElement categoriesElement=gson.toJsonTree(cates);
		businessObj.add("categories", categoriesElement);
		
		businessObj.addProperty("is_claimed",true );
		businessObj.addProperty("is_closed",false );
		businessObj.addProperty("name","Yelp" );
		businessObj.addProperty("phone","4159083801" );
		businessObj.addProperty("menu_date_updated",1317414369 );
		
		JsonObject userBaseObj1=new JsonObject();
		userBaseObj1.addProperty("name", "yuan");
		userBaseObj1.addProperty("sex", "male");
		
		JsonObject userBaseObj2=new JsonObject();
		userBaseObj2.addProperty("name", "wang");
		userBaseObj2.addProperty("sex", "female");
		
		JsonArray userBaseArray=new JsonArray();
		userBaseArray.add(userBaseObj1);
		userBaseArray.add(userBaseObj2);
		
		JsonObject userBaseObj=new JsonObject();
		userBaseObj.add("user_base", userBaseArray);
		
		businessObj.add("users", userBaseObj);
		
		JsonObject centerObj=new JsonObject();
		centerObj.addProperty("latitude",37.7861386 );
		centerObj.addProperty("longitude",-122.4026213 );
		
		JsonObject spanObj=new JsonObject();
		spanObj.addProperty("latitude_delta",0);
		spanObj.addProperty("longitude_delta",0);
		
		JsonObject regionObj=new JsonObject();
		regionObj.add("center", centerObj);
		regionObj.add("span", spanObj);
		
		JsonArray businessesArray=new JsonArray();
		businessesArray.add(businessObj);
		
		obj.add("businesses", businessesArray);
		obj.add("region", regionObj);
		obj.addProperty("total", 10651);
		String gsonStr=gson.toJson(obj);
		System.out.println(gsonStr);
		System.out.println(obj);
	}
	public static void main(String[] args) {
		GsonAssembled.assembleGson();
	}

}
/**
 *  example json string
 {
  "businesses": [
    {
      "categories": [
        [
          "Local Flavor",
          "localflavor"
        ],
        [
          "Mass Media",
          "massmedia"
        ]
      ],
      "is_claimed": true,
      "is_closed": false,
      "name": "Yelp",
      "phone": "4159083801",
      "menu_date_updated": 1317414369,
      "users": {
        "user_base": [
          {
            "name": "yuan",
            "sex": "male"
          },
          {
            "name": "wang",
            "sex": "female"
          }
        ]
      }
    }
  ],
  "region": {
    "center": {
      "latitude": 37.7861386,
      "longitude": -122.4026213
    },
    "span": {
      "latitude_delta": 0,
      "longitude_delta": 0
    }
  },
  "total": 10651
}

 * */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值