質問: 標題のとおり、明らかに数値項目である 金額・単価までも 「"」でくくられていて困っています。 こちらのページに json_encodeで 指定可能なオプションが定義されていますが JSON_NUMERIC_CHECKを指定すると、数値項目から「"」が除去されるのですが、前「0」が付いているテーブルのKeyになっているような文字列までも、数値項目と判断され、ZEROサプレスされかつ「"」が除去されてしまう事態を招いています。 かたやJSON_BIGINT_AS_STRINGを指定すると、先に言及の前「0」が付いている項目が文字列と認識されるも 金額・単価といった明らかな数値項目までも 「"」でくくられてしまいます。 前「0」の項目は文字列の項目と判断した上、数値のみの項目は 数値項目と判断するような 指定はできないでしょうか? ### 16:40追記 ``` [ { "受注NO": "0001791904", "エントリNO": "0001610538", "運賃": "0", "税抜合計金額": "0" }, { "受注NO": "0001791916", "エントリNO": "0001610550", "運賃": "0", "税抜合計金額": "0" } ] ``` ``` header('Content-Type: application/json; charset=UTF-8'); header("X-Content-Type-Options: nosniff"); echo json_encode($json, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_BIGINT_AS_STRING); exit(); ```
回答: > > 金額・単価といった明らかな数値項目までも 「"」でくくられてしまいます。 > > > **PHP**にとっては、全く明らかではありません。`json_encode`する前に、これらの値を数値に変換しておきましょう。