У меня простая структура php с 3 вложенными массивами.
Я не использую отдельные объекты и сам строю массивы с двумя вложенными циклами.
Вот образец var_dump массива, который я хочу преобразовать в Json.
array (size=2)
'tram B' =>
array (size=2)
0 =>
array (size=3)
'name' => string 'Ile Verte' (length=9)
'distance' => int 298
'stationID' => int 762
1 =>
array (size=3)
'name' => string 'La Tronche Hôpital' (length=18)
'distance' => int 425
'stationID' => int 771
16 =>
array (size=4)
0 =>
array (size=3)
'name' => string 'Bastille' (length=8)
'distance' => int 531
'stationID' => int 397
1 =>
array (size=3)
'name' => string 'Xavier Jouvin' (length=13)
'distance' => int 589
'stationID' => int 438
В другом скрипте у меня аналогичная структура, и он json_encode
отлично работает. Поэтому я не понимаю, почему json_encode
здесь не работает.
Изменить: похоже, проблема с кодировкой. Когда mb_detect_encoding
возвращает ASCII, json_encode
работает, но когда он возвращает UTF8, он больше не работает.
Edit2: json_last_error()
возвращает, JSON_ERROR_UTF8
что означает: искаженные символы UTF-8, возможно, неправильно закодированные .
utf8_encode()
своего name
массива, прежде чем передавать строку json_encode()
.
JSON_PARTIAL_OUTPUT_ON_ERROR
опцию, чтобы увидеть проблему (например, поле с UTF8 будет пустым).
This function only works with UTF-8 encoded data.
что проблем с кодировкой быть не должно.