我有这些数据。
data: {
{
id: 1,
message: "text message"
},
{
id: 2,
message: "text message again"
},
{..},
{..}
}
现在,我希望它是这样的。将“msg”添加为 index / key 。
data: {
msg: {
id: 1,
message: "text message"
},
msg: {
id: 2,
message: "text message again"
},
msg: {..},
msg: {..}
}
我怎样才能做到这一点?任何的想法?感谢。
答案 0 :(得分:1)
据我所知,你不能在json数据中使用相同名称的密钥。请注意,这不是有效的json。
例如:
data: {
{
id: 1,
message: "text message"
},
{
...
}
}
应该是这样的:
{
"data":[
{
"id":1,
"message":"text message"
},{
"id":2,
"message":"text message again"
}
]
}
然而,为了重现您的数据,我推出了一种类似的解决方案:
$data = [
"data" => [
[
"id" => 1,
"message" => "text message"
],
[
"id" => 2,
"message" => "text message again"
]
]
];
var_dump(json_encode($data));
foreach ($data['data'] as $key => $value)
{
$data['data']["msg".$key] = $value;
unset($data['data'][$key]);
}
var_dump($data);
var_dump(json_encode($data));
答案 1 :(得分:0)
您可以使用Notepad ++或Edit-plus等工具。 1.执行Ctrl + H(替换) 2.将From text设置为“{\ n \ t id:” 3. SET将文本设为“msg {\ n \ t id:” 4.将正则表达式复选框保持为选中状态。 5.然后单击“全部替换”按钮。
答案 2 :(得分:-1)
这样做很慢(假设它是一个数组):
$newData = array();
foreach($data as $item){
$newData[]['msg'] = $item;
}
var_dump($newData);
编辑如果是JSON数据,请先使用json_decode($data, true)
将其转换为数组。
答案 3 :(得分:-1)
你可以这样做:
foreach($data->data as $key => &$val)
{
$stdO = new stdClass();
$stdO->msg = $val;
$data->data[$key] = $stdO;
}