我尝试编写一个连接到多个服务器并获取子文件的api。 对于每个服务,我编写了一个额外的函数来提取数据并将其转换为json格式。
我也有一个函数结果将放入的数组。
myFunc1
返回产生:
{"KEY1":"foo","KEY2":"bar"}
myFunc2
返回产生:
{"VAL1":"foo","VAL2":"bar"}
比添加内容:
$jsondata = array("Func1"=>array(),"Func2"=>array());
$jsondata["Func1"][] = myFunc1();
$jsondata["Func2"][] = myFunc2();
如果我现在做json_encode($jsondata);
,我会得到:
{"Func1":["{\"KEY1\":\"foo\",\"KEY2\":\"bar\"}"],"Func2":["{\"VAL1\":\"foo\",\"VAL2\":\"bar\"}"]
这几乎很好,但在{"Func1":["{\"KEY
"
和:[
之间的{\"K
非常多。
PHP自动添加这个,但所以我的儿子无效,我不知道如何解决这个问题。
有什么想法吗?
答案 0 :(得分:1)
那是因为您将myFunc1()
作为JSON编码字符串插入数组中。尝试在myFunc1()
和myFunc2()
中返回一个数组,然后在整个事件中返回json_encode()
。
如果您从其他地方获取JSON编码的字符串并在函数中返回它,那么json_decode()
(以true
作为参数)将其作为数组,而不是对象)像这样:
$jsondata = array("Func1"=>array(),"Func2"=>array());
$jsondata["Func1"][] = json_decode(myFunc1(), true);
$jsondata["Func2"][] = json_decode(myFunc2(), true);
答案 1 :(得分:0)
你的函数应该返回数组而不是字符串(作为json)
例如:
$jsondata["Func1"][] = ['KEY1'=>'foo','KEY2' => 'bar'];
$jsondata["Func2"][] = ['VAL1'=>'foo','VAL2' => 'bar'];
json_encode($jsondata);