php生成的JSON,Key值为什么没有双引号?

PHP代码如下:{publicstatic$session=array();publicstatic$pagination=array();protectedstatic... PHP代码如下:
{
public static $session = array();
public static $pagination = array();

protected static $error = array(
6 => '用户名或者密码错误',
8 => '处理失败',
11 => '用户名或email已使用',
13 => '不存在的信息',
14 => '购买失败',
100 => '您的帐号已过期',
101 => '协议格式错误',
501 => '协议格式错误',
502 => '协议格式错误',
503 => '合同期终止',
10001=>'您必须选定一个配送方式',
10002=>'购物车中没有商品',
10003=>'您的余额不足以支付整个订单,请选择其他支付方式',
10005=>'您选择的超值礼包数量已经超出库存。请您减少购买量或联系商家。',
10006=>'如果是团购,且保证金大于0,不能使用货到付款',
10007=>'您已收藏过此商品',
10008=>'库存不足',
10009=>'订单无发货信息'
);

public static function init()
{
if (!empty($_POST['json'])) {
if (get_magic_quotes_gpc()) {
$_POST['json'] = stripslashes($_POST['json']);
}
$_POST = json_decode($_POST['json'], true);
}
self::$session = _POST('session', array());

self::$pagination = _POST('pagination', array('page' => 1, 'count' => 10));
}

public static function authSession()
{
if (!isset(self::$session['uid']) || !isset(self::$session['sid'])) {
self::outPut(100);
}

/* 初始化session */
include(EC_PATH . '/includes/cls_session.php');
$sess = new GZ_session($GLOBALS['db'], $GLOBALS['ecs']->table('sessions'), $GLOBALS['ecs']->table('sessions_data'), 'ECS_ID', self::$session['sid']);

define('SESS_ID', $sess->get_session_id());

if (empty($_SESSION['user_id'])) {
self::outPut(100);
}
}

public static function outPut($data, $pager = NULL)
{
if (!is_array($data)) {
$status = array(
'status' => array(
'succeed' => 0,
'error_code' => $data//,
//'error_desc' => self::$error[$data]
)
);
die(json_encode($status));
}
if (isset($data['data'])) {
$data = $data['data'];
}
$data = array_merge(array('data'=>$data), array('status' => array('succeed' => 1)));
if (!empty($pager)) {
$data = array_merge($data, array('paginated'=>$pager));
}
die(json_encode($data));
}
展开
 我来答
小智带你畅享娱乐
2016-11-29 · TA获得超过101个赞
知道小有建树答主
回答量:503
采纳率:0%
帮助的人:276万
展开全部
到网上找的资料基本都是这个函数

[php] view plain copy
function ext_json_decode($str, $mode=false){
if(preg_match('/\w:/', $str)){
$str = preg_replace('/(\w+):/is', '"$1":', $str);
}
return json_decode($str, $mode);
}

这代码从逻辑上本身就是错误的,比如value里面有个:,解析自然出错,下面是修正过后的

[php] view plain copy
function ext_json_decode($str, $mode=false){
$str = trim( $str );
$str = ltrim( $str, '(' );
$str = rtrim( $str, ')' );
$a = preg_split('#(?<!\\\\)\"#', $str );
for( $i=0; $i < count( $a ); $i+=2 ){
$s = $a[$i];
$s = preg_replace('#([^\s\{\}\:\,]+):#', '"\1":', $s );
$a[$i] = $s;
}
//var_dump($a);
$str = implode( '"', $a );
return json_decode($str, $mode);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狼狗姑姑
2016-11-27 · TA获得超过209个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:42.7万
展开全部
什么叫:
Key值为什么没有双引号
??
追问
正常的如下
{
"data":{
"a":b,
"b":d
}
}
没有双引号:
{
data:{
a:b,
b:d
}
}
追答
json_encode 的肯定有,是不是浏览器装查看 json 的插件,这些插件会去掉双引号。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式