You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理JSON响应中的HTML编码并将Message渲染到TextView?

处理JSON中的HTML编码内容并渲染到TextView

我来帮你一步步搞定这个问题!你的JSON响应里的Message字段是双重HTML编码的(比如&amp;lt;其实是<经过两次转义的结果),得先解码还原成原始HTML,再渲染到TextView里。

步骤1:解码HTML实体

因为Message是双重转义的,所以要解码两次才能拿到可渲染的原始HTML:

  • 第一次解码:把&amp;这类外层转义字符还原成&,比如&amp;lt;会变成&lt;
  • 第二次解码:把&lt;这类标准HTML实体还原成<等原始符号

实现方式(两种可选)

方式一:用Android原生API

Android自带的Html类能处理HTML实体解码,调用两次方法即可:

import android.text.Html;
import androidx.core.text.HtmlCompat;

// 从JSON中取出的编码后的Message字符串
String encodedMessage = noteObj.getString("Message");

// 第一次解码:处理外层转义
String firstDecode = Html.fromHtml(encodedMessage).toString();
// 第二次解码:还原成原始HTML
String decodedHtml = HtmlCompat.fromHtml(firstDecode, HtmlCompat.FROM_HTML_MODE_LEGACY).toString();

方式二:用Apache Commons Text库

如果想要更稳定的解码效果,可以引入这个第三方库:

  1. 先在build.gradle中添加依赖:
implementation 'org.apache.commons:commons-text:1.10.0'
  1. 解码代码:
import org.apache.commons.text.StringEscapeUtils;

String encodedMessage = noteObj.getString("Message");
// 两次unescapeHtml4直接处理双重转义
String decodedHtml = StringEscapeUtils.unescapeHtml4(StringEscapeUtils.unescapeHtml4(encodedMessage));

步骤2:把解码后的HTML渲染到TextView

用HtmlCompat.fromHtml()把HTML字符串转换成Spanned对象,再设置给TextView:

TextView caseNoteTextView = findViewById(R.id.your_textview_id);
// FROM_HTML_MODE_COMPACT是推荐模式,兼容大部分常用HTML标签
caseNoteTextView.setText(HtmlCompat.fromHtml(decodedHtml, HtmlCompat.FROM_HTML_MODE_COMPACT));

小提醒

TextView对HTML标签的支持有限,像你示例里的<table>能正常渲染,但复杂样式(比如自定义CSS)可能显示异常。如果要完美展示复杂HTML,建议改用WebView替代TextView。

内容的提问来源于stack exchange,提问作者ZA BroadPeak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:19:10