关于php:格式化echo json_encode

Format echo json_encode

本问题已经有最佳答案,请猛点这里访问。

我想格式化echo json_编码,当前输出是

1
{"results":{"course":"CC140","books":{"book":[[{"id":"300862","title":"Building object-oriented software","isbn":"0070431965","borrowedcount":"6"}]]}}}

但是我想输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
   "results": {
       "course":"CC140",
       "books": {
           "book": [
                [
                    {
                       "id":"300862",
                       "title":"Building object-oriented software",
                       "isbn":"0070431965",
                       "borrowedcount":"6"
                    }
                ]
            ]
        }
    }
}

这是使JSON

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$temp = array();
    foreach ($my_array as $counter => $bc) {
        $temp['id'] ="$id[$counter]";
        $temp['title'] ="$title[$counter]";
        $temp['isbn'] ="$isbn[$counter]";
        $temp['borrowedcount'] ="$borrowedcount[$counter]";
        $t2[] = $temp;
    }

        $data = array(
 "results" => array(
   "course" =>"$cc",
   "books" => array(
     "book" =>
      array(  
        $t2
      )
    )
  )
);
    echo json_encode($data);

任何帮助或指点都会受到感激,谢谢。

添加此

1
2
header('Content-type: application/json');
echo json_encode($data, JSON_PRETTY_PRINT);

格式化JSON,但是头也会输出整个HTML文档。


我给出的第一条建议是:不要,JSON是一种数据格式。使用工具来处理它,而不是让您的服务器格式化它。

如果您要忽略这一点,请参阅json_encode函数的手册,其中提供了一系列选项,其中包括JSON_PRETTY_PRINT,这些选项被描述为在返回的数据中使用空白来格式化它。从php 5.4.0开始提供。

因此,步骤如下:

  • 确保您使用的是php 5.4.0或更高版本
  • 埃多克斯1〔3〕

  • 在php 5.4中可以使用json_encode($data, JSON_PRETTY_PRINT)。+

    在php 5.3中,您可以尝试用正则表达式格式化它,但这并不太安全(或者您可以使用库来编码JSON)。