您的位置:

深入浅出:Gson字符串转JsonObject

一、Gson字符串转Json对象

在使用Gson进行Json字符串转换时,首先需要将Json字符串转换为Json对象。下面展示一个Json字符串的例子:

{
    "name":"Tom",
    "age":18,
    "hobby":["reading","music"]
}

我们可以通过下面的代码将该Json字符串转换为JsonObject对象:

String jsonString = "{\"name\":\"Tom\",\"age\":18,\"hobby\":[\"reading\",\"music\"]}";
JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();

其中JsonParser是Gson提供的一个解析器,可以解析Json字符串并将其转换为JsonElement对象,最终利用getAsJsonObject()方法将其转换为JsonObject对象。在Gson中JsonElement是JsonObject、JsonArray和JsonPrimitive的超类,所以可以通过JsonElement对象获取到任何JsonObject、JsonArray和JsonPrimitive类型的值。

二、Gson Map转Json字符串

在使用Gson进行Map转换为Json字符串时,可以使用Gson的toJson()方法。下面是一个Map对象的例子:

Map map = new HashMap<>();
map.put("name", "Tom");
map.put("age", 18);
map.put("hobby", Arrays.asList("reading","music"));

  

下面的代码将该Map对象转换为Json字符串:

String jsonString = new Gson().toJson(map);

其中toJson()方法将Map对象转换为Json字符串。

三、Gson字符串转JsonObject

Gson字符串还可以直接转换为JsonObject对象,使用和Json字符串类似的方式即可。下面是一个Gson字符串的例子:

String gsonString = "{'name':'Tom','age':18,'hobby':['reading','music']}";
JsonObject jsonObject = new JsonParser().parse(gsonString).getAsJsonObject();

需要注意的是,Gson字符串中属性名和属性值都需要用单引号括起来,而Json字符串中则使用双引号。

四、Gson List转Json字符串

在使用Gson进行List转换为Json字符串时,同样可以使用Gson的toJson()方法。下面是一个List对象的例子:

List
   > list = new ArrayList<>();
Map
     map1 = new HashMap<>();
map1.put("name","Tom");
map1.put("age",18);
Map
      map2 = new HashMap<>();
map2.put("name","Jerry");
map2.put("age",17);
list.add(map1);
list.add(map2);

     
    
   

将该List对象转换为Json字符串的代码如下:

String jsonString = new Gson().toJson(list);

五、Gson字符串转Json

除了将Gson字符串转换为JsonObject对象以外,还可以直接通过fromJson()方法将Gson字符串转换为Json对象。下面是一个例子:

String gsonString = "{\"name\":\"Tom\",\"age\":18,\"hobby\":[\"reading\",\"music\"]}";
JsonElement jsonElement = new JsonParser().parse(gsonString);
Json json = new GsonBuilder().create().fromJson(jsonElement, Json.class);

其中Json是一个空接口,表示任何Json对象。在这个例子中,Json对象被自动识别为JsonObject。

六、Json字符串转对象

将Json字符串转换为Java对象,可以使用fromJson()方法。下面是一个例子:

String jsonString = "{\"name\":\"Tom\",\"age\":18,\"hobby\":[\"reading\",\"music\"]}";
User user = new Gson().fromJson(jsonString, User.class);

其中User是一个Java类,包含了name、age和hobby三个属性。

七、Gson字符串转List

将Gson字符串转换为List对象时,可以使用fromJson()方法。下面是一个例子:

String gsonString = "[{\"name\":\"Tom\",\"age\":18},{\"name\":\"Jerry\",\"age\":17}]";
Type type = new TypeToken
   >(){}.getType();
List
     list = new Gson().fromJson(gsonString, type);

    
   
  

其中User同样是一个Java类,type表示将Gson字符串解析为哪种类型的对象。

八、Gson解析Json字符串

在使用Gson解析Json字符串时,除了使用JsonParser和fromJson()方法以外,还可以使用Gson提供的fromJsonTree()方法。该方法接收一个JsonElement对象,将其转换为Java对象。

String jsonString = "{\"name\":\"Tom\",\"age\":18,\"hobby\":[\"reading\",\"music\"]}";
JsonElement jsonElement = new JsonParser().parse(jsonString);
User user = new Gson().fromJsonTree(jsonElement, User.class);

其中User同样是一个Java类,jsonElement被转换为User对象。

九、Gson解析Json字符串为对象

在使用Gson解析Json字符串为对象时,可以使用fromJson()方法。下面是一个例子:

String jsonString = "{\"name\":\"Tom\",\"age\":18,\"hobby\":[\"reading\",\"music\"]}";
JsonElement jsonElement = new JsonParser().parse(jsonString);
User user = new Gson().fromJson(jsonElement, User.class);

其中User同样是一个Java类,jsonElement被转换为User对象。