【PHP】json_enode()で配列がオブジェクト型に変換されるのを阻止したい!
PHPで都道府県一覧をjsonで返却するAPIを作成した時に躓いたので、備忘として。
はじめに
配列の中にオブジェクト型のKeyValueを格納したいい感じのjsonを作りたい時って、ありますよね?
{
"prefs": [
{"1":"北海道"},
{"2":"青森県"},
{"3":"岩手県"},
︙
]
}
このような構造にすれば、受け取り側でオブジェクトの順序が入れ替わることがないのでいい感じです。ただ、実際にPHPでこれを実装しようとしたところ以下のようになりました。
sample.php
$prefs_array = array('prefs' =>
[
'1' => '北海道',
'2' => '青森県',
'3' => '岩手県'
]
);
$prefs_json = json_encode($prefs_array);
$prefs_json
{
"prefs": {
"1":"北海道",
"2":"青森県",
"3":"岩手県",
︙
}
}
あれっ…これいつものjsonフォーマットや。これだとオブジェクトの順序の保証がされないのでなんとかしたいですね。
解法
json_encode()で変換する対象の配列を1次元配列ではなく2次元配列にします。
$prefs_array = array('pref' =>
[
array('1' => '北海道'),
array('2' => '青森県'),
array('3' => '岩手県'),
]
);
$prefs_json = json_encode($prefs_array);
こうすることで最初に提示したjsonフォーマットが作成できます。
参考
Author And Source
この問題について(【PHP】json_enode()で配列がオブジェクト型に変換されるのを阻止したい!), 我々は、より多くの情報をここで見つけました https://qiita.com/shiba_it/items/27b5de7ba336a4c8b218著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .