如果你在 Android 開發(fā)中使用 Gson 來解析 JSON 數(shù)據(jù)時(shí),有時(shí)候會(huì)碰到一些 JSON 數(shù)據(jù)需要轉(zhuǎn)義。具體來說,就是 JSON 中一些特殊字符需要加上反斜杠 "\" 才能正常解析。
比如下面這個(gè)例子:
{ "name": "Tom \"Cruise\"", "age": 50, "address": { "city": "Los Angeles", "street": "Hollywood Blvd." } }
其中,字段 "name" 的值中包含雙引號(hào),因此需要使用反斜杠進(jìn)行轉(zhuǎn)義。
在使用 Gson 解析時(shí),我們需要指定一個(gè) TypeToken 表示 JSON 數(shù)據(jù)的類型。例如:
Type type = new TypeToken<Person>() {}.getType(); Person person = gson.fromJson(json, type);
這里的 Person 類型如下所示:
class Person { String name; int age; Address address; } class Address { String city; String street; }
如果要解析上面的 JSON 數(shù)據(jù),我們需要在 Person 類中增加一個(gè) @SerializedName 注解來指定 JSON 對應(yīng)的字段名稱:
class Person { @SerializedName("name") String name; int age; Address address; } class Address { String city; String street; }
這樣,我們就可以正常解析上面的 JSON 數(shù)據(jù)了。
如果 JSON 數(shù)據(jù)中有其他的特殊字符需要轉(zhuǎn)義,也可以使用類似的方式進(jìn)行解析。