【问题标题】:Cleaning Up Formatted JSON converted from PHP Array [duplicate]清理从 PHP 数组转换的格式化 JSON [重复]
【发布时间】:2018-12-05 07:28:43
【问题描述】:

我正在尝试使用查询数据库的 PHP 以 JSON 格式获取以下格式...注意没有最后的逗号

[
      {
        "ID": "4",
        "Name": "Jill Higgins",
        "Job Title": "Designer",
        "Organisation": "Design Widget",
        "Organisation Type": "Academia",
        "Latitude": "54.669978",
        "Longitude": "-1.452469"
    },
    {
        "ID": "5",
        "Name": "Bob Billy",
        "Job Title": "Clown",
        "Organisation": "Big Comp INC",
        "Organisation Type": "Company",
        "Latitude": "54.669978",
        "Longitude": "-1.452469"
    }
]

这是我目前的代码...

if (PerchUtil::count($members)) {

echo '[';

foreach ($members as $Member) {
  //prepare the data
  $data = array(
    'ID' => $Member->memberID(),
    'Name' => $Member->first_name() . ' ' . $Member->last_name(),
    'Job Title' => $Member->expert_job_title(),
    'Organisation' => $Member->expert_org_name(),
    'Organisation Type' => $Member->expert_org_type(),
    'Latitude' => $Member->expert_org_latitude(),
    'Longitude' => $Member->expert_org_longitude()
  );
}
echo ']';
}

header('Content-Type: application/json');

这就是它目前的样子...注意末尾有一个逗号,我不需要。间距对括号也没有真正的帮助......我如何修改 PHP 使其更清晰并计算出最后的逗号?

[{
    "ID": "4",
    "Name": "Jill Higgins",
    "Job Title": "Designer",
    "Organisation": "CPI",
    "Organisation Type": "Academia",
    "Latitude": "54.669978",
    "Longitude": "-1.452469"
},{
    "ID": "5",
    "Name": "Bob Billy",
    "Job Title": "Clown",
    "Organisation": "Big Comp INC",
    "Organisation Type": "Company",
    "Latitude": "54.669978",
    "Longitude": "-1.452469"
},]

【问题讨论】:

  • 将数据构建成一个数组(类似于 $data[] = ),然后 json_encode() 结果
  • 我该怎么做?
  • 你不应该像这样手动操作 json 字符串,你想让它漂亮是为了什么?一些展示目的?
  • 可读性。为了澄清您是否引用了回声语句?
  • 你可以传递 JSON_PRETTY_PRINT 标志,阅读 json_encode 的手册

标签: php arrays json


【解决方案1】:

$data 中创建要编码的数据数组,使用$data[] = 添加每个项目,然后使用echo json_encode($data); 获得正确的格式...

if (PerchUtil::count($members)) {
    $data = [];
    foreach ($members as $Member) {
      //prepare the data
      $data[] = array(
         'ID' => $Member->memberID(),
         'Name' => $Member->first_name() . ' ' . $Member->last_name(),
         'Job Title' => $Member->expert_job_title(),
         'Organisation' => $Member->expert_org_name(),
         'Organisation Type' => $Member->expert_org_type(),
         'Latitude' => $Member->expert_org_latitude(),
         'Longitude' => $Member->expert_org_longitude()
      );
    }
    echo json_encode($data, JSON_PRETTY_PRINT);
}

【讨论】:

  • 效果很好 - 所以 $data[] 是一个空数组?
  • 当分配给$data[] - 您将值分配给数组中的下一个元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 2017-07-15
  • 2017-03-12
  • 2014-09-03
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
相关资源
最近更新 更多