Я хочу сделать следующее:
- получение JSON в качестве ввода из текстовой области в php
- используйте этот ввод, преобразуйте его в JSON и передайте в php curl для отправки запроса.
это m, получающее php из get of api, эту строку json, которую я хочу передать в json, но она не преобразуется в массив
echo $str='{
action : "create",
record: {
type: "n$product",
fields: {
n$name: "Bread",
n$price: 2.11
},
namespaces: { "my.demo": "n" }
}
}';
$json = json_decode($str, true);
приведенный выше код не возвращает мне массив.
then it is not giving
Что не дает? Вы берете строку в формате JSON из textarea и конвертируете ее в JSON ???Ответы:
Если вы передадите JSON в своем сообщении
json_decode
, он не удастся. Допустимые строки JSON имеют ключи в кавычках:источник
json_decode()
он вернется,NULL
если ваш JSON недействителен (например, нет ключей в кавычках). Это то, что говорится в документации, и это то, что возвращает моя установка PHP 5.2. Используете ли вы какую-либо функцию кроме официальной, встроеннойjson_decode()
? Чтоvar_dump(json_decode($str, true));
возвращается?Попробуй это:
второй параметр превратит декодированную строку json в ассоциативные массивы.
источник
Если вы получаете строку JSON из формы , используя
$_REQUEST
,$_GET
или$_POST
вам нужно будет использовать функциюhtml_entity_decode()
. Я не осознавал этого, пока не сделал то,var_dump
что было в запросе, и то, что я скопировал, и неecho
заметил, что строка запроса была намного больше.Правильный путь:
С ошибками:
источник
Используйте
json_decode($json_string, TRUE)
функцию для преобразования объекта JSON в массив.Пример:
ПРИМЕЧАНИЕ. Второй параметр преобразует декодированную строку JSON в ассоциативный массив.
===========
Вывод:
источник
Если вы получаете строку json из URL-адреса
file_get_contents
, выполните следующие действия:источник
ваша строка должна быть в следующем формате:
Вывод:
источник
Вы можете преобразовать объект json в массив и строку.
источник
Если вам когда-нибудь понадобится преобразовать файл или структуры JSON в массивы в стиле PHP со всеми уровнями вложенности, вы можете использовать эту функцию. Сначала вы должны json_decode ($ yourJSONdata), а затем передать его этой функции. Он выведет в окно вашего браузера (или консоль) правильные массивы в стиле PHP.
https://github.com/mobsted/jsontophparray
источник
Я думаю, что это должно работать, просто ключи также должны быть в двойных кавычках, если они не являются цифрами.
источник
это мое решение: строка json
$columns_validation = string(1736) "[{"colId":"N_ni","hide":true,"aggFunc":null,"width":136,"pivotIndex":null,"pinned":null,"rowGroupIndex":null},{"colId":"J_2_fait","hide":true,"aggFunc":null,"width":67,"pivotIndex":null,"pinned":null,"rowGroupIndex":null}]"
поэтому я использую json_decode дважды:
и результат:
источник
Убедитесь, что строка имеет следующий формат JSON, который выглядит примерно так:
Если нет, то вы можете добавить
"responsetype => json"
в свой запрос params.Затем используйте,
json_decode($response,true)
чтобы преобразовать его в массив.источник
responseType
свойство используется для определения типа данных в ответе на запрос. Но проблема в том, что тело запроса содержит данные, которые не соответствуют действительности. Поэтому ваш ответ не соответствует данному контексту.Вы можете изменить строку на JSON следующим образом, и вы также можете обрезать, разделить строку, если хотите,
источник
Используйте этот конвертер, он вообще не дает сбоев: Services_Json
источник
источник