Expressのres.send
メソッドはartist
を認識します はオブジェクトであり、JSON.stringify
を呼び出します 送信する前にオブジェクトをJSON文字列に変換します。少し単純化すると、JSON.stringify
メソッドはartist
を反復処理します 作成された順序でのオブジェクトキー。 (より複雑な注文の説明へのリンクは次のとおりです。
)それが現在の動作を説明しています。
他の人は、あなたが目指していることをどのように行うかについての独自の提案でチャイムを鳴らすかもしれませんが、最初に試す簡単なものがあります:
-
まず、自分で
JSON.stringify
、「リプレース」を使用して目的の出力オーダーを作成する :const artistString = JSON.stringify(artist, ["realName", "stageName", ...]) // '{"realName": "Paul David Hewson", "stageName": "Bono", ...}'
-
次に、
res.json(artistString)
を使用します 、res.send
ではなく 、正しいContent-Type
を使用してJSON文字列を送信します ヘッダ。 (res.send
Content-Type: “text/html”
が必要であると想定します 。)
キーを取得し、それらをソートし、置換を返す関数を作成するなど、間違いなくより複雑なアプローチがあります。または独自の.toJSON()
を作成する JSON.stringify
の代わりに 。オブジェクトがネストされているため、これらのアプローチの1つを実装する必要がある場合があります。 置換の動作は少し異なる場合がありますこの場合は不安定です
。次のように、親の直後にネストされたプロパティを一覧表示できる場合があります。
["realName", "type", ...]
ただし、ネストされたプロパティの名前は同じであるため、これが機能する場合と機能しない場合があります。外側を文字列化する前に、内側を文字列化する必要があるかもしれません(gah!)。
いずれにせよ、私の提案が最初のステップになることを願っています。