如何在php中合并两个json对象 一个数组就像这样
$arr_data = array('id'=>$country_id);
$arr = json_encode($arr_data);
另一个是这样的:
$arr_places = json_encode($xmlDoc);
现在我想将它们合并到一个json对象中。我怎么能这样做。
答案 0 :(得分:1)
这在很大程度上取决于你所说的“合并”。只是一个简单的合并,或者你需要消除重复的属性?...等等。
最简单的方法就像xdazz提到的那样。
答案 1 :(得分:0)
因此,您应首先合并数组,然后使用json_encode
。
$json = json_encode(array_merge($arr_data, $xmlDoc));
答案 2 :(得分:0)
合并结果然后编码。
$arr_data = array('id'=>$country_id);
$res = array_merge( $arr_data, $xmlDoc );
$merged = json_encode($res);
答案 3 :(得分:0)
这里的大多数答案都假设这是一个面对两个数组而不是对象的情况。 OP要求将两个对象合并为一个JSON。
虽然有很多解决方案,但我有一个更进一步的黑客攻击,实际上将对象合并为一个JSON字符串,方法是将对象转换为JSON字符串,然后再转换为关联数组,然后返回到JSON。
可能是效率失败,但是工作:-)这是一个代码示例:
/**
* Merges two objects into a single JSON structure
* @param object $obj1
* @param object $obj2
* @return string the resuling JSON string
*/
function mergeToJSON($obj1, $obj2) {
$json1 = json_encode($obj1);
$json2 = json_encode($obj2);
if ($json1 === FALSE OR $json2 === FALSE) {
return "";
}
$array1 = json_decode($json1, TRUE);
$array2 = json_decode($json2, TRUE);
$data = array_merge($array1, $array2);
return json_encode($data);
}
答案 4 :(得分:0)
上面提到的解决方案对我来说不适用于PHP 5.5.12版
我想要的是简单地附加到json字符串并从中形成一个json字符串,如下所述:
$str1 = {
timestamp: "2015-04-03T08:08:51+00:00",
user: "admin",
src_ip: "127.0.0.1"
}
$str2 = {
timestamp: "2015-04-03T08:08:51+00:00",
user: "Peter_x",
src_ip: "127.0.0.1"
}
$value1 = json_decode ($str1, TRUE);
$value2 = json_decode ($str2, TRUE);
$combined = array_merge ($value1, $value2);
$combined_json = json_encode ($combined);
file_put_contents("c:\outputfile", $combined_json, FILE_APPEND);
结果是:
{
"timestamp": "2015-04-03T08:08:51+00:00",
"user": "admin",
"src_ip": "127.0.0.1",
}
{
"timestamp": "2015-04-03T08:08:51+00:00",
"user": "Peter_x",
"src_ip": "127.0.0.1",
}
相反,我期待一个单独的json字符串。 Firefox无法解析它。令我惊讶的是,在结果字符串中,键在引号内。 (例如:"timestamp"
)。
任何人都可以告诉我代码有什么问题,或者如何将两个json字符串连接到一个?