[英]Android - parsing JSON strings in Java
我有一個 JSON 字符串,我只是想訪問它的不同屬性並將它們存儲在 Java 變量中。 但是,我不斷收到以下代碼的異常:
private JSONObject jObj;
private String jString;
//...
jString = result; //this is my JSON string passed from another activity
try {
jObj = new JSONObject(jString);
//int eventID = jObj.getInt("eventID");
} catch (JSONException e) {
Toast.makeText(searchResultsActivity.this, "Search results failed!", Toast.LENGTH_SHORT).show();
finish();
}
是的,我有所需的進口。 我已經單獨顯示了 jString 以確認它是有效的 JSON。 我有點迷茫,因為這似乎是我需要做的最基本的事情。 感謝您的幫助。
編輯 - 這是一個示例 JSON 字符串:
[{"eventID":"47","event_name":"test","event_address":"Test","event_duration":"3","event_date":"20110527","event_time":"1347", "event_description":"Test","num_attending":"1"}]
此字符串是通過 PHP 腳本接收的,我在其中執行 echo json_encode($array),其中 $array 是創建此 JSON 響應的關聯數組。
我得到的例外是:
“org.json.JSONException:值[//高於 JSON 字符串//] 類型的 org.json.JSONArray 無法轉換為 JSONObject”
Eclipse 沒有告訴您,因為您試圖從 JSONArray 創建 JSONObject:
JSONArray jArr = new JSONArray (jString);
int eventID = jArr.getJSONObject(0).getInt("eventID");
回答您的最后一條評論(為什么會這樣?):
來自(原始文檔](http://www.json.org/java/index.html):
JSONObject 是名稱/值對的無序集合。 它的外部形式是一個用大括號括起來的字符串,名稱和值之間用冒號分隔,值和名稱之間用逗號分隔。 內部形式是一個 object,具有 get() 和 opt() 方法用於按名稱訪問值,以及 put() 方法用於按名稱添加或替換值。 這些值可以是以下任何類型:Boolean、JSONArray、JSONObject、數字和字符串,或 JSONObject.NULL object。
JSONArray 是有序的值序列。 它的外部形式是一個用方括號括起來的字符串,值之間用逗號分隔。 內部形式是 object,具有 get() 和 opt() 方法用於按索引訪問值,以及 put() 方法用於添加或替換值。 這些值可以是以下任何類型:Boolean、JSONArray、JSONObject、數字和字符串,或 JSONObject.NULL object。
由於您正在解析以方括號而不是花括號開頭的字符串,因此您需要將其解析為 JSONArray。 在您的情況下,它是一個大小為 1 的數組。
您正在嘗試將 JSONArray 解析為 JSONObject
JSONArray jarray = new JSONArray(jString);
格子!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.