我正在使用Google跟踪代码管理器库来获取帐户中的所有代码。我从https://www.googleapis.com/discovery/v1/apis/tagmanager/v2/rest
获取JSON数据。此JSON对我不起作用,我无法使用PHP对其进行解码。
示例:
{
"tag":[
{
"path":"tags/1",
"accountId":"1"
},
{
"path":"tags/2",
"accountId":"1"
}
],
"tag":[
{
"path":"tags/1",
"accountId":"2"
},
{
"path":"tags/2",
"accountId":"2"
}
],
"tag":[
{
"path":"tags/1",
"accountId":"3"
}
]
}
并在json debugger website上对其进行测试,我遇到错误Duplicate key, names should be unique.
。
如何修复此JSON以使其与PHP json_decode($json, true)
一起使用?
先前的丑陋代码
$json = str_replace('\n', '', $get_json);
$json = preg_replace('/\s+/', ' ', $json);
$json = str_replace('}{}{', ',', $json);
$json = str_replace('}{', ',', $json);
$json = str_replace('"tag": [', '"tag": ', $json);
$json = str_replace('} } ]', '} } }', $json);
$json = str_replace('tag":', 'tag_manage":', $json);
$json = str_replace('tag_manage', 'tag_manage', $json);
$json = preg_replace('/tag_manage/', 'tag_1_manage', $json, 1);
$json = preg_replace('/tag_manage/', 'tag_2_manage', $json, 1);
$json = preg_replace('/tag_manage/', 'tag_3_manage', $json, 1);
答案 0 :(得分:0)
您具有一个称为x
的对象的多个属性。像
tag
应该工作。
答案 1 :(得分:0)
您已经发现JSON不正确-就像在PHP中使用一个对象,其中包含多个变量都称为tag
。您的JSON应该将所有数据都放在一个tag
元素下,就像...
{
"tag":[
{
"path":"tags/1",
"accountId":"1"
},
{
"path":"tags/2",
"accountId":"1"
},
{
"path":"tags/1",
"accountId":"2"
},
{
"path":"tags/2",
"accountId":"2"
},
{
"path":"tags/1",
"accountId":"3"
}
]
}
更改它的代码将对此进行更新(一旦现有数据正确即可)……。
// Fetch existing data
$json = file_get_contents("a.json");
// Decode data to array format
$tags = json_decode($json, true );
// Add new tag into the data
$tags['tag'][] = ["path" => "tags/1", "accountId" => "4"];
// Create new JSON encoded string
$newJson = json_encode($tags, JSON_PRETTY_PRINT);