AdSense

網頁

2018/4/13

在Java中建立JSON字串 by Gson

在Java中使用Gson建立JSON字串。

使用前要先加入Gson的函式庫。Gson的maven dependency如下。

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.2</version>
</dependency>

使用Gson組成一個json物件後再轉成json字串,然後轉成ListMap組成的物件。

JsonObject jsonObj1 = new JsonObject();
jsonObj1.addProperty("name", "matt");
JsonObject jsonObj2 = new JsonObject();
jsonObj2.addProperty("name", "peter");

JsonArray jsonArray1 = new JsonArray();
jsonArray1.add(jsonObj1);
jsonArray1.add(jsonObj2);

JsonObject jsonObj3 = new JsonObject();
jsonObj3.addProperty("name", "john");
JsonObject jsonObj4 = new JsonObject();
jsonObj4.addProperty("name", "lisa");

JsonArray jsonArray2 = new JsonArray();
jsonArray2.add(jsonObj3);
jsonArray2.add(jsonObj4);

JsonObject jsonObj = new JsonObject();
jsonObj.add("array1", jsonArray1);
jsonObj.add("array2", jsonArray2);

String jsonString = jsonObj.toString();
System.out.println(jsonString);
System.out.println("----------------------------");

// 轉換JSON字串為List Map物件
Type type = new TypeToken<Map<String, List<Map<String, String>>>>() {}.getType();
Map<String, List<Map<String, String>>> map1 = new Gson().fromJson(jsonString, type);
map1.forEach((k, v) -> {
  System.out.println(k);
  v.forEach((map2) -> {
    map2.forEach((m, n) -> {
      System.out.println(m + ":" + n);
    });
  });
});

// 轉換List Map物件為JSON字串
System.out.println("----------------------------");
Gson gsonBuilder = new GsonBuilder().create();
String jsonString2 = gsonBuilder.toJson(map1);
System.out.println(jsonString2);

印出結果如下。

{"array1":[{"name":"matt"},{"name":"peter"}],"array2":[{"name":"john"},{"name":"lisa"}]}
----------------------------
array1
name:matt
name:peter
array2
name:john
name:lisa
----------------------------
{"array1":[{"name":"matt"},{"name":"peter"}],"array2":[{"name":"john"},{"name":"lisa"}]}

參考:

沒有留言:

AdSense