开发者

Android: Parsing html tags on JSON and enabling special characters

Can someone help me, how to parse HTML tags in JSON? And since I'm making a German App, it includes a lots of special characters like ä,ö,ü,ß. Can somebody tell me how to show those characters through parsing JSON? R开发者_StackOverflow社区ight they are only shown as '?'

Here's my JSON parsing method:

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());
        }

    }

EDIT Here's an example of my JSON file containing html tags

{
  "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"
  }


You are reading the raw bytes from the resource (notice the method name openRawResource), so you aren't applying a character encoding. You need to use an InputStreamReader (and a BufferedReader is usually a good idea):

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();

You may need to use a different character encoding (second parameter of InputStreamReader).

BTW, this has nothing to do with "HTML tags". Maybe I am missing something?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜