Это поведение на самом деле присутствует в браузере службы AMFPHP (ошибка), поэтому его легко принять за AMFPHP, который преобразует строки, начинающие число, в int. Однако проблема в коде отправки. Например, отправка строки в кодировке urlen через шлюз json работает правильно (код Objective C):
NSString *theUrl = [[NSString alloc] initWithFormat:@"%@/modules/amfphp/amfphp/json.php/MysqlRemoting.checkAuth/%@/%@/1", kServerBaseUrl, userName, passMD5];
NSString *encodedUrl = [theUrl stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
Где passMD5 может иметь начальный номер. Но если я введу соответствующие значения для метода checkAuth в браузере службы, он будет поврежден.
[править]
$value = urldecode($value);
if($value != "") {
if($value[0] != '[' && $value[0] != '{' && $value != "null" && $value != "false" && $value != "true") {
$hasAlpha = false;
//check to see if it is a number
$sl = strlen($value);
for ($i = 0; $i < $sl; $i++) {
$char1 = ord($value[$i]);
if($char1 >= 0x30 && $char1 <= 0x39) {
//Then this is a number
} else { //Else leave value as is */
$hasAlpha = true;
}
}
if (!$hasAlpha) $value = json_decode($value, true);
}
else
{
$value = json_decode($value, true);
}
}