我正在尝试解码我的Android应用程序以转义HTML形式接收的JSON属性。我在最新的Android Studio IDE(2.2)上使用Java 8,但是找不到来自Google的Android库或无法帮助解决此问题的现有Java代码。
我不是要剥离HTML,而是要取消转义HTML,然后在TextView中完整显示HTML。有很多方法可以正确显示HTML,但是到目前为止,只有一种方法可以通过我在GitHub上称为Unbescape的I库从转义的String中提取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 \ u003cable 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对象的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> </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> </p>
关于java - 解码Java中Android上的JSON响应中的转义HTML标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39681416/