java - 使用 Java 在 Android 上解码来自 JSON 响应的转义 HTML 标记

标签 java android html json decode

我正在尝试解码我​​的 Android 应用程序作为转义 HTML 接收的 JSON 属性。我在最新的 Android Studio IDE (2.2) 上使用 Java 8,找不到来自 Google 的 Android 库或现有的 java 代码来帮助我解决这个问题。

我不想删除 HTML,我想取消转义 HTML,然后在 TextView 中完整地显示 HTML。有很多方法可以正确显示 HTML,但到目前为止,只有一种方法可以通过我在 GitHub 上找到的名为 Unbescape 的 I 库从转义字符串中提取 HTML。我希望不必包含该库,因为我只有一个 JSON 属性需要处理,这似乎有点矫枉过正。

JSON 属性接收为:

"HTML": "\u003cp\u003e\u003cu\u003e\u003cstrong\u003e另一条消息\u003c/strong\u003e\u003c/u\u003e\u003c/p\u003e\n\n\u003cp\u003e\u0026# 160;\u003c/p\u003e\n\n\u003c表格边框=\"1\"单元格填充=\"1\"单元格间距=\"1\"style=\"宽度:100%\"\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003easdf\u003c/td\u003e\n\t\t\t\u003ctd\u003easdfa\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003easdf\u003c/td\u003e\n\t\t\t\u003ctd\u003easdfa\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003easdfa\u003c/td\u003e\n\t\t\t\u003ctd\u003esdfasd\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/表\u003e\n\n\u003cp\u003e\u0026#160;\u003c/p\u003e\n"

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

假设您显示的是 JSON 对象的 JSON 属性,您可以非常简单地测试 JSON 解析。

创建一个包含内容的文本文件,并用 {} 包围以使其成为有效的 JSON 对象。

{ "HTML": "\u003cp\u003e\u003cu\u003e\u003cstrong\u003eAnother Message\u003c/strong\u003e\u003c/u\u003e\u003c/p\u003e\n\n\u003cp\u003e\u0026#160;\u003c/p\u003e\n\n\u003ctable border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\"\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003easdf\u003c/td\u003e\n\t\t\t\u003ctd\u003easdfa\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003easdf\u003c/td\u003e\n\t\t\t\u003ctd\u003easdfa\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003easdfa\u003c/td\u003e\n\t\t\t\u003ctd\u003esdfasd\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp\u003e\u0026#160;\u003c/p\u003e\n" }

然后运行此代码,读取文本文件。

正如您在下面看到的,JSON 解析器会为您解析所有内容。

public class Test {
    @SerializedName("HTML")
    String html;
    public static void main(String[] args) throws Exception {
        Gson gson = new GsonBuilder().create();
        try (Reader reader = new FileReader("test.json")) {
            Test test = gson.fromJson(reader, Test.class);
            System.out.println(test.html);
        }
    }
}

输出

<p><u><strong>Another Message</strong></u></p>

<p>&#160;</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:100%">
    <tbody>
        <tr>
            <td>asdf</td>
            <td>asdfa</td>
        </tr>
        <tr>
            <td>asdf</td>
            <td>asdfa</td>
        </tr>
        <tr>
            <td>asdfa</td>
            <td>sdfasd</td>
        </tr>
    </tbody>
</table>

<p>&#160;</p>

关于java - 使用 Java 在 Android 上解码来自 JSON 响应的转义 HTML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681416/

相关文章:

java - 保存序列化的 ArrayList 在 Android 中抛出 NotSerializableException

android - 在 MVVM 架构中使用 DialogFragment 的正确方法是什么?

java - Android Webview 应用程序,上传图片不起作用,点击选择照片时没有任何反应

java - 这个 HQL 查询有什么问题?

java - 使用 gradle 创建 jar,导入类时无法看到同一包中的其他类

java - Android 6 crypto Cipher.update 不再像 Android 5 那样工作

javascript - Canvas :没有中断的曲线

javascript - 在 iframe 中嵌入 HTTPS 站点

javascript - HTML/CSS 自动编号标题?

java - 将 byte[] 转换为 UnsignedByte[]