2016-12-29 71 views
1

嘗試使用Gson lib獲得JSON的第一個值(鍵),任何幫助都是好的。 想要從JSON獲得-K_63RGSCZra1jVeDrmT並希望將其保存在String變量中。Gson Help - 嘗試使用Gson獲取JSON的第一個值(鍵)

這裏是我的代碼和輸出:

gson.toJson(dataSnapshot.getValue()); 
Log.d(tag, "gson: " + gson.toJson(dataSnapshot.getValue())); 

輸出:

{"-K_63RGSCZra1jVeDrmT":{"name":"Joseph witman","email":"[email protected]"}} 
+0

問題是什麼? –

+0

問題是,我有這個輸出,但想獲得拳頭鍵「-K_63RGSCZra1jVeDrmT」,然後將其存儲在一個字符串中 – JtecX

+0

花時間閱讀這篇文章如何撰寫一個好的SO問題: http:// stackoverflow.com/help/how-to-ask – garfbradaz

回答

1

你可以嘗試

String json = "{\"-K_63RGSCZra1jVeDrmT\":{\"name\":\"Joseph witman\",\"email\":\"[email protected]\"}}"; 
JsonParser jp = new JsonParser(); 
JsonElement element = jp.parse(json); 
JsonObject root = element.getAsJsonObject(); 

由於JsonObject.entrySet()包含所有鍵值,你可以在下面的提取它們辦法;

for (Entry<String, JsonElement> e : root.entrySet()) { 
    System.out.println(e.getKey()); 
} 
+0

我想通過代碼獲取值,而不是通過輸入值。 – JtecX

+0

第一個值是通過代碼自動創建的,現在我試圖抓住它來存儲它變成一個字符串。 – JtecX

+0

啊,我誤讀了。我編輯了我的答案。 – Jyr

1

這裏是你的代碼,以獲得關鍵:

JsonParser parser = new JsonParser(); 
    JsonObject jobj = parser.parse(new FileReader("Filepath_JSON")).getAsJsonObject(); 

    Gson gson = new Gson(); 
    Set<Map.Entry<String, JsonElement>> entrySet = jobj.entrySet(); 
    for(Map.Entry<String, JsonElement> entry : entrySet) { 
     Person prsn = gson.fromJson(jobj.getAsJsonObject(entry.getKey()), Person.class); 
     prsn.setId(entry.getKey()); 
     System.out.println("id : " + prsn.getId()); 

    } 

這裏是POJO的Person類:

class Person { 

private String id; 
private String name; 
private String email; 


public String getId() { 
    return id; 
} 
public void setId(String id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getEmail() { 
    return email; 
} 
public void setEmail(String email) { 
    this.email = email; 
} } 

我運行的代碼,它工作正常。

乾杯。