1. ホーム
  2. php

[解決済み] PHP json_encode 数字を文字列としてエンコードする

2022-05-01 01:24:19

質問

PHPのjson_encode関数で一つ問題があります。これは数字を文字列としてエンコードするものです。

array('id' => 3)

になる

"{ ["id": "3", ...)

jsがこれらの値に遭遇すると、文字列として解釈され、数値演算に失敗します。を防ぐ方法をご存知の方はいらっしゃいますか? json_encode が数字を文字列としてエンコードしないようにするにはどうしたらよいでしょうか。よろしくお願いします。

どのように解決するのですか?

私は非常に迅速なテストを行いました。

$a = array(
    'id' => 152,
    'another' => 'test',
    'ananother' => 456,
);
$json = json_encode($a);
echo $json;

これは、私が間違っていなければ、あなたが説明したことと同じようなものだと思うのですが?

そして、私は出力として得ています。

{"id":152,"another":"test","ananother":456}

つまり、この場合、整数は文字列に変換されていないのです。



PHPのバージョンによっては、json_encode関連のバグがいくつか修正されています。

このテストは PHP 5.2.6 で行われました。PHP 5.2.9 と 5.3.0 でも同じことが起こりました。

どのバージョンのPHPを使用していますか?あるいは、あなたのテストケースは投稿された例よりも複雑なのでしょうか?

にバグレポートがあるかもしれません。 http://bugs.php.net/ が関係しているのでしょうか?例えば Bug #40503 : json_encode の整数変換が PHP と矛盾している。 ?



たぶん バグ番号: 38680 をご覧ください。