在PHP中回应JSON的正确方法

时间:2018-01-17 11:16:18

标签: php json

您好我正在寻找一种在我的php api中回显json的正确方法,目前这是我的回音代码

我从另一个班级

获得这个
echo '{"accountStatus":{';
echo '"create_status_code": "400",';
echo '"message": "Unable to create user."';
echo '}}';

我从另一个班级

获得这个
echo '{';
echo '"status_code": "em200",';
echo '"message": "email duplicate"';
echo '}';

最后这是我得到的无效JSON

{ 
"status_code":"em200",
"message":"email duplicate"
}{  
"accountStatus":{  
"create_status_code":"400",
"message":"Unable to create user."
}
}

那么请问我如何正确回应?

4 个答案:

答案 0 :(得分:1)

如果您可以将数据创建为数组,则可以使用json_encode获取有效的JSON输出:

echo json_encode(array(
    "accountStatus" => array(
        "create_status_code" => "400",
        "message" => "Unable to create user",
    ),
    "status_code" => "em200",
    "message" => "email duplicate",
));

答案 1 :(得分:0)

这是一个非常糟糕的主意。只需使用jsonSerialize;

echo json_encode(new StringValue('Hello!'), JSON_PRETTY_PRINT);

参考link

答案 2 :(得分:0)

为了使其正常工作,您需要正确的JSON输入或至少将其转换为它。如果您可以更改类输出JSON的方式,请将其输出为:

使用json_decode()

头等舱

echo '{"accountStatus":{';
echo '"create_status_code": "400",';
echo '"message": "Unable to create user."';
echo '}}';

应该是JSON对象:

/* ClassOneOutput */
return json_decode('{
    "accountStatus": {
        "create_status_code": "400",
        "message": "Unable to create user."
    }
}', true);

第二类

echo '{';
echo '"status_code": "em200",';
echo '"message": "email duplicate"';
echo '}';

应该是JSON对象:

/* ClassTwoOutput */
return json_decode('{
    "status_code": "em200",
    "message": "email duplicate"
}', true);

合并它们:

/* Main script fetches class output */
$classTwoOutput = classTwo();
$classOneOutput = classOne();

$classOutput = array($classOneOutput, $classTwoOutput);

echo json_encode($classOutput, JSON_PRETTY_PRINT);

答案 3 :(得分:0)

如果您希望浏览器将其正确显示为json,请不要忘记设置标头:

 def readAllData(file_name):
   with open(file_name) as file:
    for line in file:
        filelist = [line.replace('\n','') for line in file]
        # filelist = line.splitlines()
        t = [tuple(map(str, i.split('\t'))) for i in filelist]
        print(t)
    return t