iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >怎么在PHP语言中使用JSON
  • 320
分享到

怎么在PHP语言中使用JSON

2023-06-17 12:06:12 320人浏览 泡泡鱼
摘要

这篇文章主要介绍“怎么在PHP语言中使用JSON”,在日常操作中,相信很多人在怎么在php语言中使用jsON问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在PHP语言中使用JSON”的疑惑有所帮助!接下来

这篇文章主要介绍“怎么在PHP语言中使用JSON”,在日常操作中,相信很多人在怎么在php语言中使用jsON问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在PHP语言中使用JSON”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

目前,JSON已经成为***的数据交换格式之一,各大网站的api几乎都支持它。

我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识。

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。

一、json_encode()

该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  echo json_encode($arr);

结果为

{"a":1,"b":2,"c":3,"d":4,"e":5}

再看一个对象转换的例子:

$obj->body = 'another post';  $obj->id = 21;  $obj->approved = true;  $obj->favorite_count = 1;  $obj->status = NULL;  echo json_encode($obj);

结果为

{  "body":"another post",  "id":21,  "approved":true,  "favorite_count":1,  "status":null  }

由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。

二、索引数组和关联数组

PHP支持两种数组,一种是只保存"值"(value)的索引数组(indexed array),另一种是保存"名值对"(name/value)的关联数组(associative array)。

由于javascript不支持关联数组,所以json_encode()只将索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。

比如,现在有一个索引数组

$arr = Array('one', 'two', 'three');  echo json_encode($arr);

结果为:

["one","two","three"]

如果将它改为关联数组:

$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');  echo json_encode($arr);

结果就变了:

{"1":"one","2":"two","3":"three"}

注意,数据格式从"[]"(数组)变成了"{}"(对象)。

如果你需要将"索引数组"强制转化成"对象",可以这样写

json_encode( (object)$arr );

或者

json_encode ( $arr, JSON_FORCE_OBJECT );

三、类(class)的转换

下面是一个PHP的类:

class Foo {  const ERROR_CODE = '404';  public $public_ex = 'this is public';  private $private_ex = 'this is private!';  protected $protected_ex = 'this should be protected';   public function getErrorCode() {  return self::ERROR_CODE;  }  }

现在,对这个类的实例进行json转换:

$foo = new Foo;  $foo_json = json_encode($foo);  echo $foo_json;

输出结果是

{"public_ex":"this is public"}

可以看到,除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失了。

四、json_decode()

该函数用于将json文本转换为相应的PHP数据结构。下面是一个例子:

$json = '{"foo": 12345}';  $obj = json_decode($json);  print $obj->{'foo'}; // 12345

通常情况下,json_decode()总是返回一个PHP对象,而不是数组。比如:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';  var_dump(json_decode($json));

结果就是生成一个PHP对象:

object(stdClass)#1 (5) {  ["a"] => int(1)  ["b"] => int(2)  ["c"] => int(3)  ["d"] => int(4)  ["e"] => int(5)  }

如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';  var_dump(json_decode($json),true);

结果就生成了一个关联数组:

array(5) {  ["a"] => int(1)  ["b"] => int(2)  ["c"] => int(3)  ["d"] => int(4)  ["e"] => int(5)  }

五、json_decode()的常见错误

下面三种json写法都是错的,你能看出错在哪里吗?

$bad_json = "{ 'bar': 'baz' }";  $bad_json = '{ bar: "baz" }';  $bad_json = '{ "bar": "baz", }';

对这三个字符串执行json_decode()都将返回null,并且报错。

***个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第三个的错误是,***一个值之后不能添加逗号(trailing comma)。

另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。

var_dump(json_decode("Hello World")); //null

六、参考材料

* PHP Manual (Http://php.net/manual/en/book.json.php)

* Ed Finkler, JSON is Everybody's Friend (http://phpadvent.org/2008/json-is-everybodys-friend-by-ed-finkler)

原文地址:http://www.ruanyifeng.com/blog/2011/01/json_in_php.html

到此,关于“怎么在PHP语言中使用JSON”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么在PHP语言中使用JSON

本文链接: https://www.lsjlt.com/news/289196.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在PHP语言中使用JSON
    这篇文章主要介绍“怎么在PHP语言中使用JSON”,在日常操作中,相信很多人在怎么在PHP语言中使用JSON问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在PHP语言中使用JSON”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • 怎么在Go语言中使用JSON进行请求
    这篇文章主要介绍“怎么在Go语言中使用JSON进行请求”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么在Go语言中使用JSON进行请求”文章能帮助大家解决问题。Go语言提供了许多方式发送HTTP请...
    99+
    2023-07-06
  • continue在c语言中怎么使用
    在C语言中,可以使用`continue`语句来跳过当前循环中剩余的代码,并开始下一次循环。它可以用于`for`循环、`while`循...
    99+
    2023-09-08
    c语言 continue
  • 怎么在Docker中使用R语言
    这篇文章主要介绍了怎么在Docker中使用R语言的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么在Docker中使用R语言文章都会有所收获,下面我们一起来看看吧。1:轻松开发OpenCPU 系统的旗舰是 Op...
    99+
    2023-06-27
  • break在c语言中怎么使用
    在C语言中,`break`关键字用于终止循环或者`switch`语句中的执行,并跳出当前的执行块。`break`通常与`if`语句或...
    99+
    2023-09-27
    c语言
  • do.call()怎么在R语言中使用
    今天就跟大家聊聊有关do.call()怎么在R语言中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。> x1 = 1:10> x...
    99+
    2023-06-14
  • switch在c语言中怎么使用
    在C语言中,switch语句用于根据不同的条件执行不同的代码块。其基本语法如下:```switch (expression){case constant1:// code block 1break;case constant2:// c...
    99+
    2023-08-11
    switch c语言
  • 怎么在PHP中调用C语言函数
    怎么在PHP中调用C语言函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。// 创建一个 FFI 对象,加载 libc 并...
    99+
    2023-06-14
  • 怎么在php中使用return语句
    本篇文章为大家展示了怎么在php中使用return语句,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数...
    99+
    2023-06-14
  • 怎么在php中使用break语句
    本篇文章给大家分享的是有关怎么在php中使用break语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(P...
    99+
    2023-06-14
  • C语言中的const在怎么使用
    这篇文章主要介绍了C语言中的const在怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中的const在怎么使用文章都会有所收获,下面我们一起来看看吧。const可以说一种常量的声明的关键字,如co...
    99+
    2023-06-16
  • Golang语言JSON解码函数Unmarshal怎么使用
    本篇内容主要讲解“Golang语言JSON解码函数Unmarshal怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang语言JSON解码函数Unmarshal怎么使用”吧!func...
    99+
    2023-06-26
  • 怎么在php中使用switch语句
    本篇文章为大家展示了怎么在php中使用switch语句,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext ...
    99+
    2023-06-14
  • 聊聊如何在Go语言中使用JSON进行请求
    在现代Web技术中,JSON已经成为了主流的数据格式。Go语言中的json包提供了一系列用于JSON编解码的函数和结构体,使得使用JSON变得非常方便。本文将介绍如何在Go语言中使用JSON进行请求。Go语言提供了许多方式发送HTTP请求,...
    99+
    2023-05-14
  • 怎么在PHP中使用断言函数
    本篇文章给大家分享的是有关怎么在PHP中使用断言函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环...
    99+
    2023-06-14
  • 怎么在R语言中使用ggplot2画图
    怎么在R语言中使用ggplot2画图?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用代码 + theme_bw() + theme(p...
    99+
    2023-06-14
  • 怎么在php中使用do...while语句
    这篇文章将为大家详细讲解有关怎么在php中使用do...while语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开...
    99+
    2023-06-14
  • 怎么在R语言中使用summary()函数
    本篇文章为大家展示了怎么在R语言中使用summary()函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、免费、源代...
    99+
    2023-06-14
  • 怎么在Go语言中使用日志包
    这篇“怎么在Go语言中使用日志包”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在Go语言中使用日志包”文章吧。让我们来看...
    99+
    2023-06-30
  • 怎么在R语言中使用cut()函数
    怎么在R语言中使用cut()函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作