如何在PHP中返回Json数据

Posted

tags:

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

这样对吗?

概述

不对。

返回json用的json_encode()方法没错,但是需要在头部声明格式。

代码解析

php返回需要用json_encode()方法来将需要转换的字符串转换成json编码格式(注意:仅仅更换文件内容,而返回的文件依然为文本格式且编码为gtk)

所以,这里需要在php头部声明

header('Content-Type:text/json;charset=utf-8');

拓展内容

json

JSON(javascript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

json通常被作为配置文件,常见还有.ini

参考技术A 用json_encode()函数对数组进行JSON编码。
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echojson_encode($arr);
?>
以上例程会输出:
"a":1,"b":2,"c":3,"d":4,"e":5[1]

当有中文字符时,当直接使用json_encode() 函数会使汉字不能正常显示。 所以有了这个适用性比较广的函数 ch_json_encode() 来解决这个问题。
参考技术B 恩 就是使用json_encode();追问

但是ajax的function里面收不到啊,如何查看返回的数据

追答

收不到可能是因为你返回的json格式被破坏了,最大的可能是BOM导致的,不要使用系统自带的记事本编辑utf8格式的php。
还有就是在json_encode()前面和后面不能有别的输出。

最好使用exit(json_encode($array))来输出。

本回答被提问者和网友采纳
参考技术C echo urldecode($j);

如何使用 PHP/Laravel 返回 Json 数据数组?

【中文标题】如何使用 PHP/Laravel 返回 Json 数据数组?【英文标题】:How to return Json data array with PHP/Laravel? 【发布时间】:2021-12-02 08:26:31 【问题描述】:

我正在使用 Laravel 开发一个 api,我必须在 url 中获取 json 文件的数据,这是我的代码:

public function index()
    $json_file=file_get_contents("url that I'm using");
    $json_str = json_decode($json_file);
    
    echo $json_str;

JSON 文件:


  "success":true,
  "clients": [
      [
       "name": "Tyler Durden",
       "job": "leader of the ..."
      ],
  ]

但是当我访问调用 index() 的路由时,我得到了这个错误:

Object of class stdClass could not be converted to string

我想获得任何一对客户并保存他们,有人可以帮助我吗?

【问题讨论】:

【参考方案1】:

您不能使用echo 打印对象,要打印您可以使用的对象

print_r($json_str);
var_dump($json_str);

在你的情况下,你只需要一个return 声明

return $json_str;

在 Laravel 中你也可以这样做

return response()->json($json_str);

【讨论】:

“return $json_str”已经生效,但我现在如何打印“clients”值? 您可以通过return $json_str['clients']; 访问它们,如果您的意思是这样的话。 它不起作用,但我使用了return $json_str-&gt;clients[0]; 并且为我服务【参考方案2】:

您正在尝试打印 json 而不是字符串。 echo 只会打印一个字符串。

【讨论】:

【参考方案3】:

返回响应($json_str);或返回 response()->json($json_str);带状态码 return response()->json(['data'=>$json_str],200);

【讨论】:

谢谢,伙计。但是现在我正在尝试获取一对“客户”数据的值,有什么提示吗?

以上是关于如何在PHP中返回Json数据的主要内容,如果未能解决你的问题,请参考以下文章

php获得api返回的json数据后,如何解析?

php如何返回json对象呢

php请求url返回json数据的问题

php将淘宝客api返回的json数据,如何输出至html

请教php大神,如何提取一个json数据里的某值?

thinkphp中怎么返回json数据