2017-05-29 91 views
-1

我有一个数组:转换数组JSON

["dyGYrcK", "tRCCMsK" ,"CM1HGi3"] 

我想把它转换成JSON这样的:

{ 
    data: [ 
     { 
     "expiry" : 0, 
     "tokens" : { 
      "0" : "dyGYrcK", 
      "1" : "tRCCMsK", 
      "2" : "CM1HGi3" 
     } 
     } 
    ] 
} 

我发现这是非常困难的。我有很多的尝试和我目前得到这个输出:

{ 
    "data": [ 
    "dyGYrcK", 
    "tRCCMsK", 
    "CM1HGi3" 
    ] 
} 

我目前这样做:

return response()->json(['data' => $data], 201); //$data is array 
+0

你就不能卷起你自己,你已经知道$ data'是什么' – Ghost

回答

3

数据阵列需要的按键到期令牌。 如果你想要JSON编码来设置密钥,你还必须设置它们。

因此,我认为你的数组必须是这样的:

$data = [ 
    "expiry" => 0, 
    "tokens" => [ 
     "0" => "dyGYrcK", 
     "1" => "tRCCMsK", 
     "2" => "CM1HGi3" 
    ] 
] 
0

为了得到你想要的token结构中的数字索引,你需要你的数组首先转换为对象。然后,只需将这些属性添加到新的“空白”对象......最后,将该对象编码为JSON。

$array = ["dyGYrcK", "tRCCMsK" ,"CM1HGi3"]; 

$obj = new StdClass; 
$obj->data[] = ['expiry' => 0, 'tokens' => (object) $array]; 
echo json_encode($obj); 

// output: 
// {"data":[{"expiry":0,"tokens":{"0":"dyGYrcK","1":"tRCCMsK","2":"CM1HGi3"}}]} 
0
$tokens = ["dyGYrcK", "tRCCMsK" ,"CM1HGi3"] ; 

$data = [ 
    'expiry' => 0, 
    'tokens' => (object)$tokens 
]; 

return response()->json(['data' => [$data]], 201); 

结果

{ 
    "data": [ 
     { 
      "expiry": 0, 
      "tokens": { 
       "0": "dyGYrcK", 
       "1": "tRCCMsK", 
       "2": "CM1HGi3" 
      } 
     } 
    ] 
}