php-サーバーからJSONをフェッチするときにタイプを保持する
これが私のサーバー側のPHPスクリプトです:
echo json_encode(
array(
"1" => "foo",
"2" => "bar"
)
);
インデックスは文字列です。
jQueryを使用して$.ajax()
を介してこの配列をフェッチしており、Chromeの開発者ツールを使用すると、インデックスが文字列ではなく数値として解釈されていることがわかります。
サーバーからクライアントにJSONを渡すときに、その文字列タイプを保持するにはどうすればよいですか?または、JSONデータをサーバーからクライアントに転送するときにタイプの概念が完全に失われますか?
答え :
解決策:
型強制とダックタイピングのおかげで、文字列は数値と文字列、さらにはブール値にすることができます(アヒルのように見え、歩き、クワクワクする場合は、アヒルです)。どちらも大まかに型付けされた言語です。文字列のようにうまく処理する必要があります。
Chromeデベロッパーツールの場合、数字のみで構成される文字列があります。したがって、これは数値データ型でもあります(「アヒルのように見えます」)。
おそらく、あなたが何をしているのか、それが機能していないのかを正確に説明すれば、私たちはより良い方法であなたを助けることができます。
答え :
解決策:
これは、PHPでは、javaScriptがオブジェクトと呼ぶものがphpの配列であるためです。 JavaScriptでは、配列インデックスを文字列にすることはできません。正の整数である必要があります。
JavaScriptでそれを配列として解釈する場合は、インデックスを0にして、インデックスを文字列ではなく整数にします。
あなたのコードはすでにあなたがしたいことをしている。キーは文字列です。
var jsonStr = '{"1":"foo","2":"bar"}';
var obj = JSON.parse(jsonStr);
for (key in obj) {
console.log(typeof key, key); // string 1, string 2
}
編集(コメントごと)
JavaScriptオブジェクトの並べ替え順序に依存しないでください。ブラウザによって異なる場合があります。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。