2011-04-01 87 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