PHP是怎么返回json格式的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP是怎么返回json格式的数据相关的知识,希望对你有一定的参考价值。

1、php 输出JSON格式,使用json_encode函数即可
2、示例:
<?php
header(\'Content-type: text/json\');
$fruits = array (
"fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>
示例得到结果:
"fruits":"a":"orange
参考技术A php 输出JSON格式,使用json_encode函数即可
例如:
<?php
header('Content-type: text/json');
$fruits = array (
"fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>
得到结果:
"fruits":"a":"orange","b":"banana","c":"apple","numbers":[1,2,3,4,5,6],"holes":"0":"first","5":"second","6":"third"
望采纳

PHP 和 JSON:返回合适的格式

【中文标题】PHP 和 JSON:返回合适的格式【英文标题】:PHP and JSON: Returning a suitable format 【发布时间】:2012-06-15 08:37:50 【问题描述】:

我正在尝试使用谷歌地图方向 API 从数据库中映射连接城市的路线。我的问题是我被困在一个点,我应该通过 json 从 php 脚本返回值。 我要映射的数据是一个数组:

$data=array('chicago','new york','lebanon','maysvile','greenfield');

我的意图是从我的数据数组中返回以下格式。

var request = 
   origin:start, 
   destination:end,
   waypoints:[
         location:"",
         stopover:true
   ],
   travelMode: google.maps.DirectionsTravelMode.DRIVING

这就是我的起点和终点:数组中的第一个和最后一个元素:

$start=reset($data);     
$end=end($data);

php 使用 json_encode() 返回的数据

    $response=array('origin'=>$start,'destination'=>$end,'travelMode'=>"google.maps.DirectionsTravelMode.DRIVING");
echo json_encode($response);

返回的格式不正确。我也不知道我应该怎么做中间点。中点是选择 $start 和 $end 后剩余的所有值。 任何想法都非常感谢。谢谢

【问题讨论】:

google.maps.DirectionsTravelMode.DRIVING 不是字符串(至少不是值为'google.maps.DirectionsTravelMode.DRIVING' 的字符串)。创建 JSON 时需要使用它的值。 如何在不排除其他参数的情况下创建/映射包含它的请求? 【参考方案1】:
$response = array(
    'origin' => array_shift($data),
    'destination' => array_pop($data),
    'waypoints' => array(),
    'travelMode' => 'DRIVING'
);
foreach($data as $wp) 
    $response['waypoints'][] = array('stopover' => true, 'location' => $wp);

echo json_encode($response);

注意array_shiftarray_pop修改$data数组!

脚本的输出是:


    "origin": "chicago",
    "destination": "greenfield",
    "waypoints": [
        
            "stopover": true,
            "location": "new york"
        ,
        
            "stopover": true,
            "location": "lebanon"
        ,
        
            "stopover": true,
            "location": "maysvile"
        
    ],
    "travelMode": "DRIVING"

【讨论】:

我喜欢你为航点、起点和目的地所做的方式,但最终格式不正确。这是输出: "origin":"GEORGETOWN KY 40324","destination":"GEORGETOWN KY 40324","waypoints":["Mantachie MS 38855"],"travelMode":"google 的值.maps.DirectionsTravelMode.DRIVING" 已更新。现在它应该做你想做的事了。 请注意像 "" 这样的大括号围绕 origin 参数。这会在 javascript 中返回错误。如果没有参数上的大括号,我们如何实现这一点? 你是指引号吗?它们是必要的。否则它将不是一个字符串,也不是有效的 JSON。【参考方案2】:

当您从 PHP 获得响应时,它将是一个字符串,包含 JSON 格式的数据。

您将需要使用:

var myObject = JSON.parse(stringOfJson);

将其转换为 JSON 对象。

如果你想要数据的 PHP 表示,为什么不在 PHP 中创建一个对象来表示它:

class RouteInformation 

    public $Origin;
    public $Destination;
    public $Waypoints;
    public $TravelMode;

    public function __construct() 
    
        $this->Waypoints = array();
    

然后您可以将此对象序列化为 JSON,它将采用您需要的格式。

$response = new RouteInformation();
$response->Origin = array_shift($data);
$response->Destination = array_pop($data);
$response->TravelMode = 'DRIVING';

foreach($data as $wp) 
    $response->Waypoints[] = array('stopover' => true, 'location' => $wp);


echo json_encode($response);

您可以更进一步,创建一个 Waypoint 类来表示数组中的每个 Waypoint。

【讨论】:

我认为他已经这样做了,或者有图书馆为他这样做。否则他在开发者工具中查看时不会得到“非 json”表示。 @ThiefMaster 你说得对,我们已经有了。我们如何格式化我们必须返回的结果,例如 origin:'origin name',destination:'destination name',.... 注意逗号 (,)

以上是关于PHP是怎么返回json格式的数据的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp中怎么返回json数据

android h5返回json怎么解析

如何在PHP中返回Json数据

php返回json,xml,JSONP等格式的数据

php 怎么用输出流的形式给http接口传入json,并获取返回值?

PHP 和 JSON:返回合适的格式