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