2013-03-14 68 views
1

我有以下php数组,并希望将其作为干净的JSON文件进行打印,但我在括号和逗号周围收到额外的引号。虽然我得到的当前JSON是有效的JSON,但它不是我想如何格式化的。见下文PHP数组,我json_encode输出和首选JSON输出:PHP数组json_encode添加额外引号

Array 
(
[0] =>    { 
[1] =>     code : "EU27", 
[2] =>     debtA : 967576248244, 
[3] =>     debtB : 6971817122583, 
[4] =>     id : "eur", 
[5] =>     name : "EU", 
[6] =>     popY : 8584663069945, 
[7] =>     popZ : 7565913300548   } 
[8] =>    , 
[9] =>    { 
[10] =>     code : "US", 
[11] =>     debtA : 9090198981283, 
[12] =>     debtB : 92189801202, 
[13] =>     id : "usa", 
[14] =>     name : "United States", 
[15] =>     popY : 4514703786570, 
[16] =>     popZ : 774697283542   } 
    ) 

当前json_encode输出:

[ 
" {", 
" code : \"EU27\",", 
" debtA : 1739414366187,", 
" debtB : 8719158563660,", 
" id : \"eur\",", 
" name : \"EU\",", 
" popY : 460572909944,", 
" popZ : 2396933253407 }", 
" ,", 
" {", 
" code : \"US\",", 
" debtA : 7810766144794,", 
" debtB : 10536751929567,", 
" id : \"usa\",", 
" name : \"United States\",", 
" popY : 8571487476842,", 
" popZ : 1716024078740 }" 
    ] 

首选JSON输出:

[ 
{ 
    code : "EU27", 
    debtA : 1739414366187, 
    debtB : 8719158563660, 
    id : "eur", 
    name : "EU", 
    popY : 460572909944, 
    popZ : 2396933253407 }, 
{ 
    code : "US", 
    debtA : 7810766144794, 
    debtB : 10536751929567, 
    id : "usa", 
    name : "United States", 
    popY : 8571487476842, 
    popZ : 1716024078740 } 
    ] 

我一直在寻找计算器,发现类似的问题,但不能得到它的工作。可能是因为我对php和php数组的理解。任何帮助表示赞赏。

+0

为什么你想要不带引号的属性?那是无效的json – sroes 2013-03-14 08:21:36

+0

您是否创建了该数组?您应该为此使用2维数组。 – Antony 2013-03-14 08:27:19

+0

只是爆破你的数组值。 – revoua 2013-03-14 08:28:11

回答

1

你在做语法不正确的数组的第一个:

[0] => {

其次,你正在寻找的结果是对象的数组。这说;你会想要做类似如下:

$array = array(); 

$array[0] = new StdObject; 
$array[0] -> code = "EU27"; 
// other values added to object 

$array[1] = new StdObject; 
$array[1] -> code = "US"; 
// other values added to second object 

$json = json_encode($array); 

或者你也可以使用,而不是一个对象数组:

$array = array(); 

$array[0] = array(
"code" => "EU27", 
// other values 
); 

$array[1] = array(
"code" => "US", 
// other values 
); 

$json = json_encode($array); 
0

您可以轻松地做到这一点。

在这里相关的形式首次使用数组如何:

$a = [ 
[ 
'code'=>'EU27', 
'debtA' => 967576248244, .... etc 
], 
[ 
'code'=>'Something', 
'debtA' => 874376347, .... etc 
] 
]; 

再投内部数组对象

foreach($a as $k = $v)$a[$k] = (object)$v; 

然后JSON编码它... 结束悲剧。
这里是我的尝试作为一个样本:

$a = [ 
[ 
'code'=>'EU27', 
'debtA' => 967576248244//, .... etc 
], 
[ 
'code'=>'Something', 
'debtA' => 874376347//, .... etc 
] 
]; 

foreach($a as $k => $v)$a[$k]=(object)$a[$k]; 
echo json_encode($a); 

这是我得到:

[{"code":"EU27","debtA":967576248244},{"code":"Something","debtA":874376347}] 

希望这有助于。

+0

JSON会引用字符串键ex:代码将会是“code”。但是这对实施和任务并没有什么影响。 – Ihsan 2013-03-14 08:52:29

0

您得到的JSON字符串是100%有效的,并且完全对应于您构建的输入数组。 json_encode()永远不会尝试让你认为的猜谜游戏:如果你有一个包含{的字符串,PHP将产生一个包含{的字符串 - 它甚至不会考虑启动对象的可能性!

显然,你需要建立你的数组是这样的:

$input = array(
    array(
     'code' => 'EU27', 
     'debtA' => '1739414366187', 
     'debtB' => '8719158563660', 
     'id' => 'eur', 
     'name' => 'EU', 
     'popY' => '460572909944', 
     'popZ' => '2396933253407', 
    ), 
    array(
     'code' => 'US', 
     'debtA' => '7810766144794', 
     'debtB' => '10536751929567', 
     'id' => 'usa', 
     'name' => 'United States', 
     'popY' => '8571487476842', 
     'popZ' => '1716024078740', 
    ), 
); 

$output = json_encode($input); 

此外,键名必须是quoted- it isn't an option,因为它们都是字符串:

字符串是零序列或更多的Unicode字符,包裹在 双引号,使用反斜杠转义。一个字符被表示为单个字符串的 。字符串非常类似于C或Java 字符串。

0

你要正确的JSON是

'    [ 
        { 
        "code" : "EU27", 
        "debtA" : "1739414366187", 
        "debtB" : "8719158563660", 
        "id" : "eur", 
        "name" : "EU", 
        "popY" : "460572909944", 
        "popZ" : "2396933253407" }, 
       { 
        "code" : "US", 
        "debtA" : "7810766144794", 
        "debtB" : "10536751929567", 
        "id" : "usa", 
        "name" : "United States", 
        "popY" : "8571487476842", 
        "popZ" : "1716024078740" } 
        ] 

此JSON相当于multidimenstional阵列应该是这样的: `

  Array 
       (
        [0] => Array 
         (
          [code] => EU27 
          [debtA] => 1739414366187 
          [debtB] => 8719158563660 
          [id] => eur 
          [name] => EU 
          [popY] => 460572909944 
          [popZ] => 2396933253407 
        ) 

        [1] => Array 
         (
          [code] => US 
          [debtA] => 7810766144794 
          [debtB] => 10536751929567 
          [id] => usa 
          [name] => United States 
          [popY] => 8571487476842 
          [popZ] => 1716024078740 
        ) 

      )`   

为了更好understaning看到这里http://php.net/manual/en/function.json-encode.php'