通过PHP重复密钥的JSON数据

时间:2012-10-25 18:43:09

标签: php json

当您想要一次添加多个条目时,Apache SOLR会调用奇怪的JSON格式。 (http://wiki.apache.org/solr/UpdateJSON#Update_Commands - 注意'添加'节点)

简而言之,我需要能够创建如下所示的JSON:

{
   "key": "val 1",
   "key": "val 2"
}

在PHP中,您可以轻松地创建一个数组,但是这个JSON结构需要一个对象,该对象具有两个明确不在数组中的相同名称的键。

2 个答案:

答案 0 :(得分:1)

您无法使用json_encode执行此操作,因为它不是有效的JSON。 (Keyspace碰撞)

您需要手动组装对象。

您可以考虑创建单个项目,然后使用implode()。然后,您可以添加前缀{}

这对我来说实际上感觉更干净,然后破解PHP以使json编码工作。

建议的替代方案

我是PHP和Solr日光浴项目的忠实粉丝。

批量添加,非常简单,请点击此处:http://wiki.solarium-project.org/index.php/V2:BufferedAdd_plugin

答案 1 :(得分:0)

虽然 json_encode 不能直接做到这一点,但您可以解决它。试试这个:

$php_friendly_json = json_encode([
 "key1" => "val 1",
 "key2" => "val 2"
]);

$apache_weird_json = str_replace(["key1", "key2"], "key", $php_friendly_json);

当然,请务必选择 key1key2,以免它们出现在您的 JSON 值中!