JSONの書き出しで並び順を維持したい

投稿者: 投稿日:2021/08/21(Sat) 15:17:52 No.2656

 こんにちは、お世話になります。

 以前にも書いたような気がしますが、うまく見つからなかったので再度質問させてください。
 JSON形式についての質問です。
 下記のソースで辞書をJSONに変換していますが、キーの順番が維持されないようで困っています。

----- サンプルソース -----
内容は、辞書を作ったもの
内容(「かきくけこ」)は、123
内容(「さしすせそ」)は、456
内容(「あいうえお」)は、789
結果は、内容をJSON形式として整形して書き出したもの
結果を表示
--------------------

 上記のソースを実行すると、下記のようなJSONが出力されます。

{
  "あいうえお": 789,
  "さしすせそ": 456,
  "かきくけこ": 123
}

 これを下記のように辞書のキーの順番を維持して出力したいと考えています。

{
  "かきくけこ": 123,
  "さしすせそ": 456,
  "あいうえお": 789
}

 こういうときは配列を使えばいいのでしょうが、読み取った際に辞書型のほうが楽なので、上記のように辞書のキーの順番を維持したまま出力できないかと考えています。
 何か方法があれば、教えていただけないでしょうか。
 環境は、Windows10 21H1 64ビット、プロデル 1.7.1075です。

 以上、よろしくお願いいたします。

仕様上できません

投稿者:ゆうと 投稿日:2021/08/22(Sun) 03:31:15 No.2657

こんにちは ゆうとです。

>  こういうときは配列を使えばいいのでしょうが、読み取った際に辞書型のほうが楽なので、上記のように辞書のキーの順番を維持したまま出力できないかと考えています。

プロデルの辞書は、配列と異なり、
ハッシュ値によって、内部で都合が良い、取り出しやすい順序で格納されています。
そのため仕様上、プログラムで格納した順序で取り出すことができません。
この仕様は、JSON形式でも同様です。

そもそもJSON形式の仕様としても、キーと値のペアの順番を決めることはできませんので
辞書(ハッシュ型)で、キーの順番にこだわることは、諦めることをおすすめします。

こちらの説明などを参考にしてください。
https://qiita.com/u-dai/items/5a05d7c9627800792351

それでは。

Re: 仕様上できません

投稿者: 投稿日:2021/08/22(Sun) 09:47:18 No.2658

 こんにちは。

 なるほど、そうだったんですね。
 今の今までJSONの仕様だと思っていませんでした。
 ありがとうございました。

 それでは。

▲ページの先頭へ

- WebForum -