2011-04-01 90 views
2

有人可以帮助我,如何解析JSON中的HTML标签?而且由于我正在制作德国应用程序,因此它包含许多特殊字符,如ä,ö,ü,ß。有人可以告诉我如何通过解析JSON来显示这些字符吗?他们只被显示为'?'Android:解析JSON上的html标签并启用特殊字符

这里是我的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()); 
     } 

    } 

编辑 这是我的包含JSON文件的HTML标签

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

回答

0

你是从资源读取原始字节的例子(注意方法名称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标签”无关。也许我错过了什么?

+0

感谢您的回应,我得尽快尝试。无论如何,是的。我编辑了我的问题,你可以看看它。 Thx – 2011-04-01 14:48:08

+0

JSON,“html标签”和“特殊字符”是三个非常独立的东西,彼此之间几乎没有任何关系,几乎不会互相影响。 – RoToRa 2011-04-01 15:00:38