当前位置:首页>开发>正文

如何在PHP中解析json PHP解析JSON

2023-05-03 15:13:29 互联网 未知 开发

 如何在PHP中解析json PHP解析JSON

如何在PHP中解析json

目前,JSON已经成为最流行的数据交换格式之一,各大网站的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}

由于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"]

三、类(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),其他东西(常量、私有变量、方法等等)都遗失了。

PHP解析JSON

echo $json->a[0]->date 
//数组和普通数组一样,json对象使用对象序列化,上面的json意义上等价于():
class subobj
{
    var $date=20150101
}
class obj
{
    var $a=array(new subobj())
}
$json=new obj()

php怎么解析这种json数据格式

转为数组

$json={"id":"2","password":"d713344cbf1348813c9958b679339f4f"}
$arr=json_decode($json)
print_r($arr)
?>

php怎么解析出多维的json?

$json= {"name":"HBuilder","email":"hhhh@163.com","data":[{"name":"aaa","email":"aaaa@163.com","password":"kjkdsjfksd"},{"name":"bbb","email":"bbbb@163.com","password":"bbbb"}]}
$obj = json_decode($json)
$data=$obj[data]
print_r($data)

php 处理json字符串

定义一个php二维数组,把这个数组传给json_encode函数处理后转化位json格式,赋值给userinto,输出来。

eval() 函数把字符串按照 PHP 代码来计算。
如:
<?php
$string = "beautiful"
$time = "winter"

$str = This is a $string $time morning!
echo $str. "<br />"

eval("$str = "$str"")
echo $str
?>
输出:

This is a $string $time morning!
This is a beautiful winter morning!

php 解析构造JSON字符串

你的代码我给你做了个分段测试结果如下:
$meters = "[[1,7],[4,1]]"
$meters = json_decode($meters,true)
print_r($meters) // 输出结果:Array ( [0] => Array ( [0] => 1 [1] => 7 ) [1] => Array ( [0] => 4 [1] => 1 ) )
$i = 0
while($meters[$i]!= NULL)
{
if($meters[$i][0] != 4 )
{
echo "i =".$i."
"
$meter = array()
$meter[] = 4
$meter[] = 1
$meters[]=$meter
print_r($meters) // 输出结果:Array ( [0] => Array ( [0] => 1 [1] => 7 ) [1] => Array ( [0] => 4 [1] => 1 ) [2] => Array ( [0] => 4 [1] => 1 ) )
}
$i
}
echo json_encode($meters) // 输出结果:[[1,7],[4,1],[4,1]]

?>
如果不执行 if($meters[$i][0] != 4 )里的语句时,输出[[1,7],[4,1]],之所以输出[[1,7],[4,1],[4,1]],是因为你代码进了if($meters[$i][0] != 4 )这个判断,执行了里面的语句!你有什么问题可以直接私聊我,我一直在线!

如何解决php中json

1. json_decode()

json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_decode — 对 JSON 格式的字符串进行编码

说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量

参数

json
待解码的 json string 格式的字符串。

assoc
当该参数为 TRUE 时,将返回 array 而非 object 。
返回值
Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned. 
2.json_encode()

json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_encode — 对变量进行 JSON 编码

Report a bug 说明
string json_encode ( mixed $value [, int $options = 0 ] )
返回 value 值的 JSON 形式

Report a bug 参数

value
待编码的 value ,除了resource 类型之外,可以为任何数据类型

该函数只能接受 UTF-8 编码的数据

options
由以下常量组成的二进制掩码: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE.

Report a bug 返回值
编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。

Report a bug 更新日志
版本 说明
5.4.0 options 参数增加常量: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。
5.3.3 options 参数增加常量:JSON_NUMERIC_CHECK。
5.3.0 增加 options 参数.