导航:首页 > 编程语言 > phpjson大括号

phpjson大括号

发布时间:2025-01-02 11:27:46

Ⅰ 如何正确运用php json

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。
1、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编码的时候,这一点要特别注意。

2、索引数组和关联数组
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 );
3、类(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),其他东西(常量、私有变量、方法等等)都遗失了。
4、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_mp(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_mp(json_decode($json),true);

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

复制代码代码如下:

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

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_mp(json_decode("Hello World")); //null

Ⅱ PHP解析JSON

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

Ⅲ PHP的json解析

注意json数据的格式。variety是嵌套在内部对象里的,直接访问当然获取不到。这里我建议你这样使用json_decode():

<?php
json_deocde($content,true);//第二个参数设为true时返回一个数组,而不是对象

解析的结果是:

$r=array(
'resultcode'=>'200',
'reason'=>'SUCCESSED!',
'result'=>
array(
0=>
array(
1=>
array(
'variety'=>'Ag(T+D)',
'latestpri'=>'4025.00',
'openpri'=>'3982.00',
'maxpri'=>'4048.00',
'minpri'=>'3961.00',
'limit'=>'1.95%',
'yespri'=>'3948.00',
'totalvol'=>'2703962.0000',
'time'=>'2013-08-0915:45:01',
),
//这里还有很多类似的结构,省略
),
),
)

获得第一个variety的方法是:

<?php
echo$r['result'][0][1]['variety'];

望采纳!

Ⅳ 关于PHP返回JSON的问题。

json 是一个标准来的...不用修改也不能修改

它要求你以:

* {
* "rows" : [{},{}], //数据集合
* "results" : 100, //记录总数
* "hasError" : false, //是否存在错误
* "error" : "" // 仅在 hasError : true 时使用
* }


意思是以一个对象的形式返回...对象内容包括一个数据rows,包括一个结果总数result...等..你在PHP中,直接写成类就可以了...

例子如下:

<?php


$obj=newstdclass();
$arr=array(1,1,1,1,1);
$obj->arr=$arr;
$obj->results=100;
$obj->hasError='false';
$obj->error='';

echojson_encode($obj);
?>
阅读全文

与phpjson大括号相关的资料

热点内容
单片机启动代码 浏览:438
16进制单片机数字代码 浏览:188
中国银行程序员加班吗 浏览:520
重命名如何转换文件夹 浏览:768
服务器账号怎么做 浏览:860
android访问api 浏览:890
app制作网站源码 浏览:975
社保pdf 浏览:159
php条件显示 浏览:322
安卓玩什么软件好 浏览:129
java如何导出 浏览:22
俱乐部源码棋牌 浏览:355
印度的19乘19算法 浏览:195
中国移动app专属流量如何取消 浏览:669
驾考app题库怎么导出来 浏览:682
与网页服务器连接发送什么代码 浏览:373
没有服务器怎么弄博客 浏览:581
如何用vc编译c语言 浏览:327
PDF下载的文件 浏览:505
常熟电信程序员有编制吗 浏览:152