Android:解析 JSON 上的 html 标签并启用特殊字符

标签 android json

有人可以帮助我,如何解析 JSON 中的 HTML 标签?由于我正在制作德语应用程序,因此它包含许多特殊字符,如 ä、ö、ü、ß。有人能告诉我如何通过解析 JSON 来显示这些字符吗?对,它们只显示为“?”

这是我的 JSON 解析方法:

void examineJSONFile()
    {
        try
        {
            String x = "";
            InputStream is = this.getResources().openRawResource(R.raw.json);
            byte [] buffer = new byte[is.available()];
            while (is.read(buffer) != -1);
            String jsontext = new String(buffer);
            JSONArray entries = new JSONArray(jsontext);

            x = "JSON parsed.\nThere are [" + entries.length() + "]\n\n";

            int i;
            for (i=0;i<entries.length();i++)
            {
                JSONObject post = entries.getJSONObject(i);
                x += post.getString("titel") + "\n";
            }
            titel.setText(x);

        }
        catch (Exception je)
        {
            txt_beschreibung.setText("Error w/file: " + je.getMessage());
        }

    }

编辑 这是我的包含 html 标签的 JSON 文件的示例

{
  "titel": "CARE Deutschland-Luxemburg e.V.",
  "keyword": "CARE",
  "beschreibung": "<p><b>Das CARE-Komplett-Paket für Menschen in Not</b></p><p>Schnell, nachhaltig und durchdacht, das ist das moderne CARE-Paket. CARE ist überzeugt, dass umfassende Hilfe von drei Seiten notwendig ist, um die weltweite Armut Schritt für Schritt zu verringern. Deswegen hat CARE sich seit seiner Gründung 1945 und dem Abwurf der ersten CARE-Pakete über Berlin weiter entwickelt. Heute steckt im CARE-Paket weit mehr als Zucker und Mehl. Heute bietet die Organisation in 70 der ärmsten Länder der Welt ein Komplett-Paket für Menschen in Not.</p><p><b>Das Komplett-Paket für Menschen in Not enthält:</b></p>*sofortige Nothilfe nach Katastrophen<br><br>*langfristige Entwicklungszusammenarbeit<br><br>*Schutz der Menschenrechte<br><br>",
  "bild_liste_url": "http://cdn.spendino.de/web/img/projects/home/1284113658.jpg",
  "bild_projekt_url":"http://cdn.spendino.de/web/img/projects/small/1284113658.jpg",
  "kosten": "5"
  }

最佳答案

您正在从资源中读取原始字节(注意方法名称 openRawResource),因此您没有应用字符编码。您需要使用 InputStreamReader(BufferedReader 通常是个好主意):

InputStream is = this.getResources().openRawResource(R.raw.json);
Writer writer = new StringWriter();
char[] buffer = new char[1024];

try {
  BufferedReader reader = new BufferedReader(
    new InputStreamReader(is, "UTF-8")
  );
  int n;
  while ((n = reader.read(buffer)) != -1) {
    writer.write(buffer, 0, n);
  }
} finally {
  is.close();
}

String jsontext = writer.toString();

您可能需要使用不同的字符编码(InputStreamReader 的第二个参数)。

顺便说一句,这与“HTML 标签”无关。也许我遗漏了什么?

关于Android:解析 JSON 上的 html 标签并启用特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513670/

相关文章:

android - 根据 UTC 格式转换日期和时间字符串

android - android maps api v2中的彩色折线

javascript - 我们如何以 JSON 格式存储图像?

javascript - 当响应json对象数据计数为零时,ajax成功回调函数重定向到错误回调

javascript - 如何将 .json 配置导入 environment.ts 并使用 Angular 使用 api?

python - request.post python 的 json 连接

java - Espresso 无法区分相同的按钮

android - Android 中的 LogCat 调用计算量大吗?

android - 导入按钮是否从解析仪表板数据浏览器中删除了?

json - 在 Go 中解析 JSON 文件