2017-06-16 78 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