简体   繁体   中英

Remove quotes from json_encoded ints prior to 5.3.3

When using json_encode, it annoyingly automatically coverts the int keys to strings. For example, if you have an array:

$a = array(); 
$a[12] = 15;
echo json_encode($a);
{"12":15} //notice the quotes around 12

After searching SO, the solution is to use

json_encode($array,JSON_NUMERIC_CHECK)

However, that is only available in php > 5.3.3. The production server I'm stuck with is using 5.3.2.

Surely there is a work around?

So the problem here is that you are basically mixing your approach to the data structure and json_encode() is trying to make a best guess as to how to interpret your array, since in JSON, there is not such concept of a non-zero based, numerically indexed array.

If for example, you had a zero-based numeric array with a continuous number sequence, json_encode() would encode this aa numerically-indexed array of the format:

[value1, value2, ...]

Since you don't have a zero-based array, your data structure is being interpreted as an object structure and given a string key (the only available key type for an object in JSON) of the format:

{"key", value}

So it seems you need to make up your mind as to what you are really trying to represent in your array. Do you only need a numerically based array, or do you need object encoding.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM