Не удается декодировать строку JSON в php - PullRequest
3 голосов
/ 27 августа 2010

У меня есть следующая строка JSON, я пытаюсь декодировать с php json_decode, но $ postarray всегда NULL, не могу понять, почему это так?

Работа в Debian 5.0 Linux Версия API клиента php => 5.0.51a Json версия 1.2.1

 $json = '{\"json\":[{\"username\":\"1062576\",\"accountId\":\"45656565\"}]}';

 $postarray = json_decode($json);
 print_r($postarray);

Спасибо

Ответы [ 4 ]

10 голосов
/ 27 августа 2010

Причина экранирования двойных кавычек (\") в строке, если строка в двойных кавычках.

Поскольку вы избегаете двойных кавычек, вы должны заключать в кавычки двойную (не единственную) строку, например:

<?php
 $json = "{\"json\":[{\"username\":\"1062576\",\"accountId\":\"45656565\"}]}";

 $postarray = json_decode($json);
 print_r($postarray);
?>

Живой пример

Если вы хотите заключить строку в одинарные кавычки, то не избегайте двойных кавычек или используйте stripslashes () как предложил Андрей.

Вы можете прочитать о четырех способах указания строки в PHP и различиях между ними, здесь .

7 голосов
/ 27 августа 2010

Попробуйте это:

<?php
$json = stripslashes('{\"json\":[{\"username\":\"1062576\",\"accountId\":\"45656565\"}]}');

$postarray = json_decode($json);
print_r($postarray);
2 голосов
/ 27 августа 2010

Вы должны заключить его в двойные кавычки.

1 голос
/ 27 августа 2010

Строка не будет проанализирована, потому что она заключена в одинарные кавычки, поэтому обратные косые черты являются буквальными. Если вы удалите их, будете использовать полоски или заключите строку в двойные кавычки, у вас не должно возникнуть проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...