-3

これが私のサーバー側のPHPスクリプトです:

echo json_encode(
    array( 
        "1" => "foo",
        "2" => "bar"
    )
);

インデックスは文字列です。

jQuery を使用してこの配列を取得して$.ajax()います。Chrome の開発者ツールを使用すると、インデックスが文字列ではなく数値として解釈されていることがわかります。

サーバーからクライアントに JSON を渡すときに、その文字列型を保持するにはどうすればよいですか? それとも、JSON データをサーバーからクライアントに転送するときに型の概念が完全に失われているのでしょうか?

4

2 に答える 2

1

どちらも緩く型付けされた言語であるため、型強制とダックタイピング (アヒルのように見え、歩き、鳴く場合、それはアヒルです) のおかげで、文字列は数値と文字列、さらにはブール値にすることができます。文字列のようにうまく処理する必要があります。

Chrome 開発者ツールの場合、数字だけで構成される文字列があります。したがって、これも数値データ型です (「アヒルのように見えます」)。

おそらく、何をしていてうまくいかないのかを正確に説明していただければ、より良い方法でお手伝いできるかもしれません.

于 2012-12-07T18:26:38.963 に答える
0

これは、PHP では、javaScript がオブジェクトを呼び出すのは、php では配列であるためです。JavaScript では、配列インデックスを文字列にすることはできません。正の整数でなければなりません。

JavaScript にそれを配列として解釈させたい場合は、0 インデックスを指定し、インデックスを文字列ではなく整数にします。

あなたのコードは、あなたがやりたいことをすでに実行しています。キーは文字列です。

http://jsfiddle.net/XC85h/

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 オブジェクトの並べ替え順序に依存しないでください。ブラウザーによって異なる場合があります。

于 2012-12-07T18:23:40.250 に答える