2013-09-24 31 views
1

我知道這可能已被問到,但我無法獲得具體答案。我有一個JSON字符串:從JSON字符串中提取單個元素

GraphObject{graphObjectClass=GraphPlace, state={"id":"268367713308665","category":"School","location":{"state":"","zip":"","longitude":32.631482614136,"latitude":0.24519375867929,"country":"Uganda","city":"Kampala","street":"PO BOX 28493"},"category_list":[{"id":"365182493518892","name":"School"}],"name":"Little Wonders Montessori"}} 
GraphObject{graphObjectClass=GraphPlace, state={"id":"142442605900768","category":"Education","location":{"state":"","zip":"","longitude":32.606752647018,"latitude":0.28746491511647,"country":"Uganda","city":"Kampala","street":"Heritage\/ Kiwafu Stage, Wheeling Zone, Gaba Road, Kansanga"},"category_list":[{"id":"151676848220295","name":"Education"}],"name":"Wisdomgate Pre-School, Kansanga."}} 

其中我從Facebook獲得,當我查詢附近的位置,我想提取緯度,經度,類別和名稱。 這就是我試圖

public void onCompleted(List<GraphPlace> places, Response response) { 
    //Toast.makeText(getActivity(), (CharSequence) places.listIterator(), Toast.LENGTH_LONG).show(); 
    ListIterator<GraphPlace> x = places.listIterator(); 
    while(x.hasNext()){ 
     String f = x.next().toString(); 
     Toast.makeText(getActivity(), f, Toast.LENGTH_LONG).show(); 
     mytext.setText(f); 
     try { 
      JSONObject json = new JSONObject(f); 
      JSONArray array = json.getJSONArray("GraphPlace"); 
      Toast.makeText(getActivity(), array.length(), Toast.LENGTH_LONG).show(); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
}); 
request.executeAsync(); 

不過,我似乎無法得到一個入口點,並且也不管我嘗試,我不能得到任何感謝提前的幫助。

回答

1

如果你的JSON字符串看起來是這樣的:

{"id":"268367713308665","category":"School","location":{"state":"","zip":"","longitude":32.631482614136,"latitude":0.24519375867929,"country":"Uganda","city":"Kampala","street":"PO BOX 28493"},"category_list":[{"id":"365182493518892","name":"School"}],"name":"Little Wonders Montessori"}} 

要獲取經緯度爲:

 JSONObject json = new JSONObject(yourJSONVariableHere); 
     JSONObject location = json.getJSONObject("Location"); 
     String lat = location.getString("latitude"); 
     String long = location.getString("longitude"); 

對於latlong變量,你可以指定intlong取決於JSON的值。如果您更改變量類型,則您應該爲相應的變量值執行getInt()getLong

其他要記住的是,你有一個嵌套對象,其中包含latlong,所以你必須得到它,然後解析它。如果您有嵌套數組或其他對象,情況也是如此。目前您正在使用getJSONArray,但JSON中的數組有[array, array]或方括號,其中JSON對象具有{object, object}大括號。

希望這會有所幫助。

+0

感謝布萊恩,所以,我想知道,如果我的字符串以GraphObject開始{graphObjectClass = GraphPlace,state = ...,我必須先格式化它,並刪除我不想要的第一部分? –

+0

我不太確定。我還沒有見過這樣的迴應。 JSON不使用'='符號。檢查FB文檔並查看是否有與刪除所需代碼相關的方法。 – BlackHatSamurai