2013-06-03 69 views
4

我剛想出挑戰性的問題。用變量鍵解析json

下面是JSON響應,其中關鍵的是變量(GUID)

我如何解析呢?我試過谷歌Gson,但那不起作用。

{ 
    "87329751-7493-7329-uh83-739823748596": { 
    "type": "work", 
    "status": "online", 
    "icon": "landline", 
    "number": 102, 
    "display_number": "+999999999" 
    } 
} 
+1

不確定我完全理解這個問題。根據JSONLint,JSON是有效的,所以你應該能夠將它解析爲JSON。 – Alan

+0

同意。 但問題是隨機生成的GUID。 – DroidEngineer

+0

我已經創建pojo反對它,但它不起作用,因爲每次在服務器端生成的GUID是不同的和獨特的。:) – DroidEngineer

回答

8

如果您使用Gson,爲了解析您的響應,您可以創建一個表示您的JSON數據的自定義類,然後您可以使用Map

注意,一個Map<String, SomeObject>是你的JSON代表什麼,因爲你有一個object,包含一對string和一些object

{ "someString": {...} } 

因此,首先包含JSON數據的類(在僞-code):

class YourClass 
    String type 
    String status 
    String icon 
    int number 
    String display_number 

使用Map,這樣便解析您的JSON響應:

Gson gson = new Gson(); 
Type type = new TypeToken<Map<String, YourClass>>() {}.getType(); 
Map<String, YourClass> map = gson.fromJson(jsonString, type); 

現在,您可以訪問使用所有的值的Map,例如:

String GUID = map.keySet().get(0); 
String type = map.get(GUID).getType(); 

注意:如果你只想要得到的GUID值,你並不需要創建一個類YourClass,您可以使用相同的解析代碼,但在Map中使用通用Object,即Map<String, Object>

0

我的猜測是你正在尋找一種獲得GUID的方法。你可以嘗試Object.keys函數。

json_string = '{"87329751-7493-7329-uh83-739823748596":{"type":"work","status":"online","icon":"landline","number":102,"display_number":"+999999999"}}'; 
object = JSON.parse(js); 
key = Object.keys(object)[0]; 
alert(key); 

它在firefox 21.0上工作,但我不能保證它可以在每個瀏覽器上工作。

+0

親愛的我正在用java做它。 – DroidEngineer

+1

傻我,對不起,然後;) – aisbaa

+0

感謝您的貢獻任何方式。:) – DroidEngineer