2014-03-05 134 views
0

我在我的android應用程序中使用Google GSON庫來解析來自服務器的json響應。 在某些情況下,API會響應檢索html代碼(例如&#187)。是否可以告訴Google GSON解析該代碼並將其轉換爲與該代碼關聯的符號?Google GSON - 解析html代碼

+0

你能不能給我們從您的API一個例子輸出? –

+0

Sure {「Id」:8075,「Images」:[],「Fields」:[「Type | 15」],「Text」:「« Some message »」,「Phone」:「+ 374 xx- XX-XX「} – Armen

回答

0

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; 
    } 

} 

輸出:

«一些消息»