【问题标题】:convert in to json array and write to a json file转换为 json 数组并写入 json 文件
【发布时间】:2017-03-27 17:11:30
【问题描述】:

这是mysql查询数组输出的结果(var_dump($array)),我想把这个数组转换成json数组并写入json文件

 $object1 = new stdClass();
$object1->value = "6422";
$object1->date = "2017-03-03";

$object2 = new stdClass();
$object2->value = "700";
$object2->date = "2017-03-18";

$array = [
    $object1,
    $object2
];

我想把这个数组转换成json数组,然后把json数组写入json文件

$jsonEvents=json_encode($array); file_put_contents('./data/events.json',$jsonEvents); 但这段代码对我不起作用

var_dump($jsonEvents);给我string(4) "null"的结果,但是$array上有数据

【问题讨论】:

  • 你有写权限吗?
  • 是的..777 权限已授予-@vSugumar
  • error_reporting(E_ALL); ini_set('display_errors', '1');
  • @JensV:什么!?!?对象是 JSON 可编码的。
  • “但这段代码对我不起作用”并没有告诉我们什么不起作用,只是让我们猜测。你调试过代码吗?数组是否已转换,文件/目录是否存在,是否设置了权限,是否有任何错误或警告?

标签: php mysql arrays json


【解决方案1】:

所以我像这样人为地创建了你的结构:

<?php

$object1 = new stdClass();
$object1->value = "6422";
$object1->date = "2017-03-03";

$object2 = new stdClass();
$object2->value = "700";
$object2->date = "2017-03-18";

$arr = [
    $object1,
    $object2
];

以下代码:

$jsonEvents = json_encode($arr);
var_dump($jsonEvents);

给我:

string(74) "[{"value":"6422","date":"2017-03-03"},{"value":"700","date":"2017-03-18"}]"

这似乎是正确的。现在,我还调用了以下内容:

file_put_contents('events.json', $jsonEvents);

它为我创建了文件。在系统中,我看到:

jedrzej@jedrzej-UX303LB ~ $ ls -l | grep json
-rw-rw-r--  1 jedrzej jedrzej      74 Mar 27 19:17 events.json
jedrzej@jedrzej-UX303LB ~ $ cat *.json
[{"value":"6422","date":"2017-03-03"},{"value":"700","date":"2017-03-18"}]

所以这是可以预期的行为。可能出错的一件事是您尝试写入输出的目标目录。并且:

  1. 您可能没有此目录的写入权限
  2. 此目录可能不存在

在任何情况下,您都应该获得 PHP 警告,它会显示如下内容:

...打开流失败:...

【讨论】:

  • 是的..这段代码有效......但我没有发现我的代码有任何差异
  • 在codeigniter框架工作的情况下有什么不同吗?
  • 我不这么认为。 json_encode() 和 file_put_contents() 是原生 php 函数。
猜你喜欢
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多