【问题标题】:How can I create a specific JSON string?如何创建特定的 JSON 字符串?
【发布时间】:2014-08-07 12:06:17
【问题描述】:

我想用 PHP 创建这个 JSON 字符串:

[{name:'20140722.1304',data:[[0, 0.224],[0, 0.228]] }, {name:'20140729.1149',data:[[1, 0.224],[1,0.228]] }]

我目前的尝试:

$jsonArray = array(
    'name' => '20140722.1304'
   ,'data' => array('0' => '0.024', '1'=> '0.028')
);

$jsonValue = json_encode($jsonArray);
echo $jsonValue;

但是这段代码的输出看起来像:

{"name":"20140722.1304","data":["0.024","0.028"]}

我哪里做错了?我必须对代码进行哪些更改才能获得预期的输出?

【问题讨论】:

  • 您尝试生成的“JSON”对象不是 JSON。它是一个 JavaScript 对象字面量。目前尚不清楚您认为问题出在哪里。您是否只有一个元素,而您的预期输出有两个?还是您的数字以字符串形式出现?您需要在这里提出一个具体问题。
  • 但我需要将该格式传递给 HighCharts,因为 highcharts 仅支持该格式。有没有办法使用 php 生成那种共振峰?
  • 您的“php 数组”只有一个条目,您想要的输出有 2 个。您必须向 json_encode 提供一组条目。
  • @KyungmoKim 什么格式?您输出的格式正是您输入的格式。如果你想输出一个数组,你的 inputjson_encode 必须是一个数组。告诉我们您现在得到的输出的哪一部分不正确,或者我们无法帮助您。
  • @meagar 谢谢,我制作的数组是错误的。不知何故,我想以 {name:'20140722.1304',data:[[0, 0.224],[0, 0.228]]} 这种格式获得输出。可以用php数组创建吗?

标签: php json


【解决方案1】:

我终于让你告诉我们你想在 cmets 中得到什么;请在未来提前做好准备。您给出的预期输出与您的实际输出在很多方面都存在差异,以至于无法说出您实际认为的问题是什么,但是:

我想得到输出为 {name:'20140722.1304',data:[[0, 0.224],[0, 0.228]]}

此时,我能看到的唯一区别是您的 data 是您预期输出中的嵌套数组,而不是您的 实际 输出。

这与 JSON 无关。您只是没有正确构建输入数组。

尝试 json 编码:

$jsonArray = array(
    'name' => '20140722.1304'
   ,'data' => array(array(0, 0.024), array(0, 0.028))
);

【讨论】:

  • 非常感谢,这正是我想要的:)
【解决方案2】:
<?php
for($i=0;$i<2;$i++)
{
$jsonArray[] = array(
        'name' => '20140722.1304'
       ,'data' => array('0' => '0.024', '1'=> '0.028')
  );
  }
  //$jsonValue = json_encode($jsonArray);
  $jsonValue = json_encode($jsonArray,true);
  echo$jsonValue;
?>

【讨论】:

    【解决方案3】:

    试试这个

        $jsonArray = array(
            'name' => '20140722.1304'
           ,'data' => array('0' => '0.024', '1'=> '0.028')
      );
      $out = array_values($jsonArray);
    
      echo json_encode($out);
    

    输出:

    ["20140722.1304",["0.024","0.028"]]
    

    编辑:

     $array = array(
      2 => array("name" => '20140722.1304'),
      4 => array("'data" => array('0' => '0.024', '1'=> '0.028')));
     $out = array_values($array);
     echo json_encode($out);
    

    输出:

    [{"name":"20140722.1304"},{"'data":["0.024","0.028"]}]
    

    【讨论】:

    • 谢谢,是否可以生成 {name:'20140722.1304',data:[[0, 0.224],[0, 0.228]] } ??
    • 是的,类似,但输出值前面没有0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多