0
我在我的android應用程序中使用Google GSON庫來解析來自服務器的json響應。 在某些情況下,API會響應檢索html代碼(例如&#187)。是否可以告訴Google GSON解析該代碼並將其轉換爲與該代碼關聯的符號?Google GSON - 解析html代碼
我在我的android應用程序中使用Google GSON庫來解析來自服務器的json響應。 在某些情況下,API會響應檢索html代碼(例如&#187)。是否可以告訴Google GSON解析該代碼並將其轉換爲與該代碼關聯的符號?Google GSON - 解析html代碼
Gson沒有任何內置的東西會做到這一點,沒有。
讓Gson爲你做這件事的唯一方法是編寫一個String
的自定義解串器來解碼字符串。您還需要另一個庫來執行HTML解碼,因爲Java本身不包含任何內容。
下面是一個使用Apache Commons Lang庫做解碼的例子:
public class App
{
String foo;
public static void main(String[] args) throws MalformedURLException, IOException
{
String json = "{\"Text\":\"«Some message»\"}";
Gson g =
new GsonBuilder()
.registerTypeAdapter(String.class, new MyStringDeserializer()).create();
Type t = new TypeToken<Map<String,String>>(){}.getType();
Map<String,String> map = g.fromJson(json, t);
System.out.println(map.get("Text"));
}
}
class MyStringDeserializer implements JsonDeserializer<String>
{
@Override
public String deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException
{
String s = StringEscapeUtils.unescapeHtml3(je.getAsString());
return s;
}
}
輸出:
«一些消息»
你能不能給我們從您的API一個例子輸出? –
Sure {「Id」:8075,「Images」:[],「Fields」:[「Type | 15」],「Text」:「« Some message »」,「Phone」:「+ 374 xx- XX-XX「} – Armen