从PHP中的JSON格式中仅删除编号键,而不删除值
我正在用PHP构建一个JSON,而且密钥不能被引用, 因为我需要把它导入Neo4j 我用这个在PHP中构建它,在一个循环中:从PHP中的JSON格式中仅删除编号键,而不删除值,php,json,Php,Json,我正在用PHP构建一个JSON,而且密钥不能被引用, 因为我需要把它导入Neo4j 我用这个在PHP中构建它,在一个循环中: $contacts[$contact_key]["addr"][$addr_key]["zipcode"] = $zip_match[0]; $contacts[$contact_key]["addr"][$addr_key]["housenumber"] = $house_match[0]; 最后,我使用: $reencoded = json_encode($cont
$contacts[$contact_key]["addr"][$addr_key]["zipcode"] = $zip_match[0];
$contacts[$contact_key]["addr"][$addr_key]["housenumber"] = $house_match[0];
最后,我使用:
$reencoded = json_encode($contacts, JSON_UNESCAPED_UNICODE);
$reencoded = preg_replace('/"([^"]+)"\s*:\s*/', '$1:', $reencoded);
这是JSON字符串结果的一部分:
{addr:{1:{zipcode:"1315 GN",housenumber:"1229P;"}}
但是我不能有像1:
,2:
等这样的编号键。
因为这在Neo4j中给了我一个错误
我更希望实现这种格式:
{addr: [{zipcode:"1315 GN",housenumber:"1229P"}]
如何为联系人列出地址列表,
没有编号的键?不要尝试从JSON中删除从
$addr\u key
中获得的数字键,只需先不包含它们即可
对于循环中的代码,可以使用[]
添加地址,如下所示:
$address = ['zipcode' => $zip_match[0], 'housenumber' => $house_match[0]];
$contacts[$contact_key]["addr"][] = $address;
不要试图从JSON中删除从
$addr\u key
中获得的数字键,只需一开始就不要包含它们
对于循环中的代码,可以使用[]
添加地址,如下所示:
$address = ['zipcode' => $zip_match[0], 'housenumber' => $house_match[0]];
$contacts[$contact_key]["addr"][] = $address;
我认为如果您从0开始
$contact\u key
,并将其递增,那么JSON中就不会出现数字。但是没有引号的键不是有效的JSON,那么Neo4j在做什么呢?我想如果你在0处开始$contact_key
,然后递增它,那么JSON中就没有数字了。但是非引号的键不是有效的JSON,那么Neo4j在做什么呢?谢谢,代码现在看起来更干净了,但我仍然得到了数字。这不是因为$contacts[$contact\u key][“addr”]已经填充/不是空的吗?当您使用[]
添加地址时,PHP将自动为addr
数组创建基于零的整数索引。当您对这样的数组进行json\u编码时,您应该得到一个json数组([]
),而不是一个json对象({}
)。键不应该出现在JSON中。我现在使用:$contacts[$contact\u key][“addrs”][
来拥有一个从零开始的整数索引,在循环开始时我会:unset($contacts[$contact\u key][“addr”])代码>我现在在JSON结果中有一个空的地址:[]
。但我想我现在可以很开心了。谢谢,代码现在看起来更干净了,但我仍然能得到数字。这不是因为$contacts[$contact\u key][“addr”]已经填充/不是空的吗?当您使用[]
添加地址时,PHP将自动为addr
数组创建基于零的整数索引。当您对这样的数组进行json\u编码时,您应该得到一个json数组([]
),而不是一个json对象({}
)。键不应该出现在JSON中。我现在使用:$contacts[$contact\u key][“addrs”][
来拥有一个从零开始的整数索引,在循环开始时我会:unset($contacts[$contact\u key][“addr”])代码>我现在在JSON结果中有一个空的地址:[]
。但我想我现在可以快乐了。