Gson เป็น JSON Library สำหรับ Java สร้างโดย Google ใช้สร้าง JSON และแปลง JSON เป็น Java Object ได้ สร้าง Gson Instance ผ่าน GsonBuilder เรียกเมธอด create() สามารถ Parse JSON ไม่ให้มี Duplicate Keys ได้ด้วยคลาส TypeToken หากต้องการสร้าง Type Literal สำหรับ Map ให้สร้าง empty anonymous inner class หากพยายามแทรก Duplicate Key จะเกิด Error Runtime: Exception in thread "main" com.google.gson.JsonSyntaxException: duplicate key
Syntax
public class TypeToken<T> extends Object
ตัวอย่าง: Parse JSON เป็น Map ป้องกัน Duplicate Key
import java.lang.reflect.Type;
import java.util.Map;
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
public class JsonWithoutDuplicateKeysTest {
public static void main(String[] args) throws Exception {
String json = "{\"123\":\"abc\", \"124\":\"def\", \"125\":\"ghi\"}";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Type mapType = new TypeToken<Map<Integer, String>>() {}.getType();
Map<String, String> map = gson.fromJson(json, mapType);
System.out.println(map);
}
}
ผลลัพธ์
{123=abc, 124=def, 125=ghi}
หมายเหตุ: Gson จะโยน Exception อัตโนมัติหาก JSON มี Key ซ้ำกัน ไม่ต้องเขียนโค้ดตรวจสอบเพิ่มเติม