2017-06-16 74 views
0

在這個表達式:得到一個對象JSON表達

obj: {"created":"2017/02/09 15:57","fields":{"summary":"(30) #F24 Emarsys ==> Mise à jour du fichier de transfert/Dépriorisé en attendant PARDOT","issuetype":{"name":"Task"},"created":"589c8377576a33706397f3f4"," 

我認爲這是一個微不足道的問題,但我不到貨得到這個表達式:

obj: {"created":"2017/02/09 15:57" ... 

我做的:

String created2 = obj.getJSONObject("fields").getString("created"); 

但我得到:

"created":"589c8377576a33706397f3f4" 

我沒有成功獲得「創建」的第一個元素。

請你能建議我做這個東西。

+0

您正在獲得正確的行爲。如果在JSON對象中找到多個名稱相同的字段,則最後一個字段會勝出。 – Adrian

+0

嗨,真的嗎?! – Ale

回答

2

根據RFC7159, "The JavaScript Object Notation (JSON) Data Interchange Format"

當一個對象中的名稱不 獨特的軟件接收這樣一個對象的行爲是不可預知的 。許多實現僅報告姓名/值對 。其他實現報告錯誤或無法解析對象,並且某些實現報告了所有名稱/值對,包括重複項,即 。

您正在看到第一個選項「許多實現僅報告姓/值對」。一般來說,最好將JSON對象中的鍵保持爲唯一。

+0

我對「put」方法做了一個混淆:obj.put(「created」,formatted);.出於這個原因,我有兩次「創造」的關鍵。事實上,我搜索替換「創建」:「589c8377576a33706397f3f4」「」由「創建」:「2017/02/09 15:57」 – Ale

0

OK的傢伙,我找到了解決辦法:

要插入我的著名日在現場"created",我做的:

obj.getJSONObject("fields").put("created",formatted); 

最後,我得到:

obj : {"fields":{"summary":"(30) #F24 Emarsys ==> Mise à jour du fichier de transfert/Dépriorisé en attendant PARDOT","issuetype":{"name":"Task"},"created":"2017/02/09 15:57","project": 

由於在所有!

Ale