Gson是一個廣泛使用的Java JSON庫,它提供了豐富的API來解析和生成JSON。然而,它的一個特性引起了人們的注意,就是關于JSON中key的大小寫問題。
在像JavaScript這樣的語言中,對于對象屬性名大小寫是敏感的,但JSON規范卻明確地指出key是大小寫不敏感的。也就是說,使用Gson解析JSON時,我們可以忽略key的大小寫,而Gson會根據key是否匹配,來為相應的屬性賦值。
舉個例子,有如下JSON:
{
"name": "John",
"age": 30,
"email": "john@example.com"
}
使用Gson解析時,我們可以這樣做:
JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();
String name = jsonObject.get("NAME").getAsString();
int age = jsonObject.get("Age").getAsInt();
String email = jsonObject.get("EMAIL").getAsString();
以上代碼使用了不同的key大小寫,但Gson依然可以正確解析,輸出結果如下:
name: John
age: 30
email: john@example.com
不過需要注意的是,如果我們在使用Gson生成JSON時,屬性的key便會與我們傳入的值保持相同的大小寫。例如:
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("Name", "John");
jsonObject.addProperty("age", 30);
jsonObject.addProperty("EMAIL", "john@example.com");
String json = new Gson().toJson(jsonObject);
以上代碼生成的JSON字符串為:
{
"Name": "John",
"age": 30,
"EMAIL": "john@example.com"
}
由此可見,在使用Gson生成JSON時,key的大小寫會與我們傳入的值保持一致。