2013-08-30 63 views
0

我有這個字符串是從應用程序引擎數據存儲上的「ContactInfo」實體中提取的,並且它包含了每個類型的所有子項的字符串。任何人對如何解析這個問題或者以一種有序的方式來組織它都有很好的想法。我需要它爲每個條目顯示名字,姓氏,地址等,併爲每個人分別顯示。解析Android中的字符串

這是字符串日誌爲:

08-30 17:22:03.802: W/apples(18160): {"items":[{"description":"payment confirmed","emailAddress":"[email protected]","id":"Fri Aug 30 17:20:35 EDT 2013","nameFirst":"Bill","nameLast":"Sanders","phone":"5555555555","state":"KS","streetAddress":"123 Rick Dr","zipCode":"44444","kind":"contactinfoendpoint#resourcesItem"},{"description":"payment confirmed","emailAddress":"[email protected]","id":"Fri Aug 30 17:21:37 EDT 2013","nameFirst":"Frank","nameLast":"Lloyd","phone":"5554567896","state":"KY","streetAddress":"999 Rock St","zipCode":"44555","kind":"contactinfoendpoint#resourcesItem"}],"kind":"contactinfoendpoint#resources","etag":"\"NiDXI3T89oRrAPGJAhgGQje1Z0w/z0W4p01mjHc5cNgcOt3Kb_1xo8E\""} 
+4

這是有效的JSON。使用json解析器。 –

+0

Sotirios說什麼,並投票結束。選擇[org.json](http://www.json.org/javadoc/),[gson](http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google /gson/Gson.html)或我最喜歡的[jackson](http://fasterxml.github.io/jackson-core/javadoc/2.2.0/)。 – Mena

+0

@SotiriosDelimanolis謝謝,我會研究一下。我需要什麼類型的適配器才能讓每個條目出現在listView或類似的東西中? – johnsonjp34

回答

4

您發佈的字符串是一個JSON對象。

因此,您可以使用JSONObject class來解析它,將其轉換爲對象,並以更舒適的方式訪問其數據。

JSONObject jObject = new JSONObject(myString); 

同時檢查GSON,或傑克遜,這是第三方JSON解析器

+0

我假設有某種JS​​ONObject的ListView適配器呢? – johnsonjp34

+0

也許..但相關的事情是,即使沒有ListView適配器,這仍然可以讓您輕鬆處理字符串而無需手動解析它們。 –

2

這是一個有效的JSON對象。您可以提取與內置JSON解析器這樣所需的字段:

JSONObject json = new JSONObject(yourString); 
JSONArray items = json.getJSONArray("items"); 
for (int i = 0; i < items.length(); i++) { 
    String firstName = items.getJSONObject(i).getString("nameFirst"); 
    String lastName = items.getJSONObject(i).getString("nameLast"); 
} 

要在列表中顯示這一點,你需要開發自己的適配器。例如,它可以採用items陣列並將其用於生成單元格。但是沒有可視化JSON數據的通用解決方案。 (純文本除外)