首页 新闻 会员 周边 捐助

PHP JSON

0
悬赏园豆:50 [已解决问题] 解决于 2012-08-01 22:55
var data={
      655199:{
             480:[780,2,980],
             397:[770,2,990],
             596:[770,2,990]
      },
      655201:{
             .....
      }
}

有人有办法使PHP可以操作这些JSON吗?这个本来是javascript的json

主要是这个 key是数据数字类型,而且没有引号,

汗死,解决不了

那瞬间的主页 那瞬间 | 初学一级 | 园豆:167
提问于:2012-07-31 16:29
< >
分享
最佳答案
0

我的作法是使用替代对字符串进行规范化,也就是给他们都加上双引号,变成规范的php JSON 格式,然后再做处理。具体如下:

<?php
    
$data='{
      655199:{
             480:[780,2,980],
             397:[770,2,990],
             596:[770,2,990]
      },
      655201:{
            481:[780,2,980],
            398:[770,2,990],
            599:[770,2,990]
      }
}';
$data = preg_replace('/(\d+)/','"$1"',$data);
var_dump(json_decode($data));
echo "<br/>";

$data='var data ={
      655199:{
             480:[780,2,980],
             397:[770,2,990],
             596:[770,2,990]
      },
      655201:{
            481:[780,2,980],
            398:[770,2,990],
            599:[770,2,990]
      }
}';
$data = preg_replace('/(\d+)/','"$1"',ltrim($data,'var data ='));
var_dump(json_decode($data));

//End_php
收获园豆:50
Zjmainstay | 菜鸟二级 |园豆:355 | 2012-08-01 09:04

恩,就是这样,不过有没更好的东西啊,比如一个成熟的类。  

这个转了后对象是数字有语法错误

我在前面了加了个字母才可以用

$data = preg_replace('/(\d+)/','"a$1"',ltrim($data,'var data ='));
那瞬间 | 园豆:167 (初学一级) | 2012-08-01 21:12

不管怎么样,你这个已经能帮我解决问题了。呵呵,接豆吧

那瞬间 | 园豆:167 (初学一级) | 2012-08-01 22:53

@那瞬间: 只是做了解析,没考虑到调用。

Zjmainstay | 园豆:355 (菜鸟二级) | 2012-08-02 19:41
其他回答(1)
0

可以这样用data[655199]或data[655199][480][....]

az235 | 园豆:8483 (大侠五级) | 2012-07-31 16:57

问题所在,'655199:{480:[780,2,980],397:[770,2,990], 596[770,2,990]'。

直接使用是不行了,还得把这些字符串先转为PHP的类型。。。

支持(0) 反对(0) 那瞬间 | 园豆:167 (初学一级) | 2012-07-31 17:47

@那瞬间: 到google查询字符串转json就全部出来了,或者是将json转成php数组进行操作

支持(0) 反对(0) az235 | 园豆:8483 (大侠五级) | 2012-08-01 10:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册