Cakephp для чтения и записи файлов JSON. - PullRequest
2 голосов
/ 09 марта 2012

Я новичок в CakePHP. Я пытаюсь сохранить вывод json как файл в webroot. Я также хотел бы прочитать файл в массив.

Я знаю, что мы можем вывести массив как объект json, используя json_encode ($ array). Но я застрял при создании и чтении файлов json в массив.

Я ценю любую помощь.

Ответы [ 2 ]

9 голосов
/ 09 марта 2012
//write
$json = '{"key":"value"}';
$file = new File('/path/to/file', true);
$file->write($json);
//read
$file = new File('/path/to/file');
$json = $file->read(true, 'r');
$json2array = json_decode($json);
3 голосов
/ 26 сентября 2015

ПРИМЕЧАНИЕ. Этот код принадлежит методу вашей модели или контроллера.

Хотя ответ Четвера технически верен, он не очень "тортик".

Специально для CakePHP я бы сделал следующее:

$json = '{"key":"value"}';
$json2 = json_encode(array("a" => 1, "b" => 2));
$path = APP . '[YOUR FOLDER NAME]' . DS . 'json';
$path2 = APP . '[YOUR FOLDER NAME]' . DS . 'json2';
$jsonFromFile;
$json2FromFile;

//write
if(!file_exists($path))
    file_put_contents($path, $json);

if(!file_exists($path2))
    file_put_contents($path2, $json2);

//read
if(!file_exists($path))
    $jsonFromFile = file_get_contents($path, true);
if(!file_exists($path2))
    $json2FromFile = file_get_contents($path2, true);

Пояснение:

  • $ json - это стандартная предварительно записанная строка JSON, здесь нет путаницы
  • $ json2 показывает вам пример того, как вы можете кодировать и массивировать (или объект) в строку json для хранения
  • $ path использует некоторые константы CakePHP. «APP», которое дает вам разрешаемый путь к папке вашего приложения, и «DS», который служит системно-безопасным разделителем каталогов
  • Затем мы проверяем, чтобы наши файлы не существовали, и в этот момент мы используем метод "file_put_contents" для записи наших файлов.

Удачного кодирования.

...