2016-09-09 51 views
-1

我在收到服務器的響應時遇到問題。該JSON結構如下(我可以從導航在網絡上看到的):AngularJS JSON訂單

{ 「33」:{ 「ID」:」 ... 「 」名「:」 ... 「 }, 」11「:{ 」ID「:」 ... 「 」名「:」 ...... 「 }, 」22「:{ 」ID「:」 ......」 , 「名」:「......」 }}

然而,當我看到包含響應變量,結構改變,命令如下:

{ 「11」:{ 「ID」: 「... 」 「名」:「 ......」 }, 「22」:{ 「ID」: 「......」 , 「名」: 「......」 }, 「33」:{ 「ID」: 「... 」 「名」:「 ......」 }}

有當我從angularJS上的請求的成功回調中接收到變量響應時,是否支持與實際響應相同的順序?

在此先感謝!

+0

服務器?你在使用nodejs嗎? –

+0

你好,服務器正在被其他網站開發,但他們使用PHP + NGINX – user3429953

+0

Null。你正在回到一個物體,鑰匙恰好是數字。但一個對象是一個無序的集合。如果訂單很重要,您必須使用JavaScript數組。 – user1852503

回答

2

the spec

一個目的是零個或多個名稱/值 對的無序集合,其中名是一個字符串,一個值是一個字符串,數字 布爾值,null,對象或數組。

JSON中的對象明確無序。如果您需要訂購,請使用數組。

+0

我想我不能使用數組,因爲我所談論的對象是解析到該對象中的JSON,正如Pawel在其他評論中所說的那樣。我不需要訂購任何限制,只需要保持與服務器的響應相同的訂單 – user3429953

+0

@ user3429953 - 服務器的響應沒有訂單。它向你發送一個對象。對象明確無序。爲了它有一個命令,服務器將不得不向你發送一個數組而不是一個對象。 – Quentin

+0

好!感謝你的回答,我終於明白你們所說的全部。 – user3429953

-1

您需要獲取服務器端數據order by

-1

解析JSON後,它變成一個對象。在一個對象中,參數順序不是按照可預測的方式排序的。使用數組,而不是一個對象

舊的:

{ "33": { "id": "...", "name":"..." }, "11": { "id": "...", "name":"..." }, "22": { "id": "...", "name":"..." } } 

新:

{ [{ "id": "33", "name":"..." }, { "id": "11", "name":"..." }, { "id": "22", "name":"..." }] } 

現在,你必須與順序完全一樣,你把它放在一個陣列。使用Lodash來操作您的數據。

可能這個副本: JSON order mixed up