2017-06-20 101 views
0

我有一個基本上是API的鳳凰應用程序。我有以下看法:奇怪的json響應格式

defmodule TattooBackend.Web.API.V1.AccountView do 
    use TattooBackend.Web, :view 

    alias TattooBackend.Repo 

    def render("my_account.json", %{account: account}) do 
    account = account |> Repo.preload(:studio) 
    studio = account.studio 

    %{ 
     id: account.id, 
     email: account.email, 
     studio: %{ 
     id: account.studio.id, 
     name: account.studio.name 
     } 
    } 
    end 
end 

當我火了這個端點郵差它返回格式如下回應:

{ 
    "studio": { 
     "name": "asdasdsadsa123123", 
     "id": 4 
    }, 
    "id": 1, 
    "email": "[email protected]" 
} 

爲什麼「ID」和「電子郵件」是最後一個?他們應該是第一...

+4

地圖是無序的藥劑:https://stackoverflow.com/questions/38386314/why- elixirs-mapset-become-unordered-after-32-elements – Dogbert

+3

他們沒有在JS中訂購,其中JSON來自:https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-訂單 –

+3

真棒電子郵件在片段:) – PatNowak

回答

1

你不能保證退貨的順序,真的,沒關係。如果這些值的順序很重要,那麼你的消費者可能應該按照預期的方式處理它們,以便每次都能正確完成。

地圖中的鍵值對不按照任何順序

來源:https://hexdocs.pm/elixir/Map.html