2017-06-20 2 views
0

Ich habe eine Phoenix App, die im Grunde API ist. Ich habe die folgende Ansicht:Seltsames Format von JSON Antwort

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 

Wenn ich Feuer diesen Endpunkt in Postman es Antwort in folgendem Format zurück:

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

Warum die "id" und "E-Mail" sind zuletzt? Sie sollten zuerst ...

+4

Karten ungeordnet sind in Elixir: https://stackoverflow.com/questions/38386314/why- elixirs-mapset-unordered-after-32-elements – Dogbert

+3

Sie sind auch nicht in JS angeordnet, wo JSON herkommt: https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property- Bestellung –

+3

Super E-Mail im Snippet :) – PatNowak

Antwort

1

Sie sind nicht garantiert, eine Rückgaberecht und wirklich, das ist in Ordnung. Wenn die Reihenfolge dieser Werte von Bedeutung ist, sollte Ihr Konsument es wahrscheinlich so handhaben, dass er sie so anordnet, wie es erwartet, damit es jedes Mal richtig gemacht wird.

Key-Wert-Paare in einer Karte folgen nicht einer beliebigen Reihenfolge

Quelle: https://hexdocs.pm/elixir/Map.html