#php #arrays #json #post
#php #массивы #json #Публикация
Вопрос:
Я хочу преобразовать данные json в строку в php. Это мои данные json
{
"": [{
"description": "hello, this is description speaking"
}, {
"fieldName": "myfile",
"originalFilename": "image.png",
"path": "/var/folders/rq/q_m4_21j3lqf1lw48fqttx_80000gn/T/ttzVoNPfBxMMirec1tJsnrd2.png",
"headers": "[Object]",
"size": "82745"
}]
}
Я хочу напечатать «здравствуйте, это говорит описание» в моем php-файле, а также я хочу загрузить свой файл. Мой php-код приведен ниже, пожалуйста, исправьте его.
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$json = file_get_contents("php://input");
$json_obj = json_decode($json);
echo $json_obj;
echo $_POST['description'];
$name = $_FILES['myfile']['name'];
$tmp_name = $_FILES['myfile']['tmp_name'];
$error = $_FILES['myfile']['error'];
if (!empty($name)) {
$location = 'uploads/';
if (move_uploaded_file($tmp_name, $location.$name)){
echo 'Uploaded';
}
} else {
echo 'please choose a file';
}
} else {
echo "error 2";
}
В этом коде ошибки неопределенного индекса: файл в D:xampphtdocswork .
И без кода fileupload это ничего не показывает.
Комментарии:
1. Похоже, ваш JSON недействителен. Попробуйте проверить это jsonlint.com сначала отладьте его, как только он станет допустимым.
2. Вместо echo $json_obj, чтобы узнать его содержимое, выполните следующие действия: echo («<pre>» ); print_r($json_obj); echo («</pre>» ); используя это, вы сможете легко увидеть, какие элементы вы пытаетесь получить. — например: $json_obj-> myfile (или это может быть $ json_obj[‘myfile’], я сейчас забыл)
3. попробуйте
json_decode($json,true);
4. Я исправил свой json и теперь скажите мне php-код для получения значений.
5. Вам нужно еще раз ознакомиться с руководством по PHP о
json_decode
. Вам не нужно использовать сторонний инструмент для проверки правильности строки, закодированной в формате JSON, потому что,json_decode()
вернетnull
, если она не закодирована должным образом. Второй параметрjson_decode()
, который вы не использовали, определит, является ли возвращаемое значениеjson_decode
ассоциативным массивом или объектом
Ответ №1:
Если вы просто хотите получить доступ к свойству description вашего json, вы можете сделать следующее:
$json_obj = json_decode($json, true);
$description = $json_obj[''][0]['description'];
Комментарии:
1. Отображается ошибка — Обратите внимание: Попытка получить свойство не-объекта в D:xampphtdocsworkfilesharing2.php в строке 12
2. Как я уже сказал, если это ваш json, он недействителен. Вам нужно правильно отформатировать его перед использованием с PHP.
3. Я исправил свой json и теперь скажите мне php-код для получения значений.
4. Ваш json может быть лучше, но в любом случае… Я отредактировал ответ
5. Да, это я тестировал