在PHP中解析此JSON对象
我将通过HTTPPOST接收一个JSON对象,我发现很难解析它。这就是JSON对象的外观:在PHP中解析此JSON对象,php,json,Php,Json,我将通过HTTPPOST接收一个JSON对象,我发现很难解析它。这就是JSON对象的外观: { login: {username: 123, password: 456} }, questions:[{ name: "insomnia", type: "boolean", problem: true, question: "Did you experience insomnia?", answer: null},{ name: "go-to-bed", type: "amount", pr
{ login: {username: 123, password: 456} }, questions:[{ name: "insomnia", type: "boolean", problem: true, question: "Did you experience insomnia?", answer: null},{ name: "go-to-bed", type: "amount", problem: false, question: "When did you go to bed?", answer: null }]}
我想把它解析成3个不同的变量$username、$password和$q
从这个例子来看,这就是我所期望的:
echo$username/**输出:*123
echo$password//**输出:*456
echo$q/**output:**questions:[{name:“失眠”,键入:“布尔”,问题:true,问题:“你经历过失眠吗?”,回答:null},{name:“上床睡觉”,键入:“金额”,问题:false,问题:“你什么时候上床了?”,回答:null}]
首先,你的示例不是有效的json。这里是有效的一个:
[{
"login": {
"username": 123,
"password": 456
},
"questions": [{
"name": "insomnia",
"type": "boolean",
"problem": true,
"question": "Did you experience insomnia?",
"answer": null
}, {
"name": "go-to-bed",
"type": "amount",
"problem": false,
"question": "When did you go to bed?",
"answer": null
}]
}]
接下来,您可以从字符串中使用json\u decode
:
$x = '[{
"login": {
"username": 123,
"password": 456
},
"questions": [{
"name": "insomnia",
"type": "boolean",
"problem": true,
"question": "Did you experience insomnia?",
"answer": null
}, {
"name": "go-to-bed",
"type": "amount",
"problem": false,
"question": "When did you go to bed?",
"answer": null
}]
}]';
$q = json_decode($x);
print_r($q);
echo $q[0]->login->username;
示例中的JSON无效,我修复了它并进行了测试,我认为这就是您要寻找的
<?php
$json = <<<JSON
{
"login": {
"username": 123,
"password": 456
},
"questions": [
{
"name": "insomnia",
"type": "boolean",
"problem": true,
"question": "Did you experience insomnia?",
"answer": null
},
{
"name": "go-to-bed",
"type": "amount",
"problem": false,
"question": "When did you go to bed?",
"answer": null
}
]
}
JSON;
$decoded = json_decode($json);
$username = $decoded->login->username;
$password = $decoded->login->password;
// Re-encode questions to a JSON string
$q = json_encode($decoded->questions);
echo $username."\n";
echo $password."\n";
echo $q."\n";
?@JonStirling尝试过,但问题是解析存储在$q中的对象并将其存储为字符串。我不知道如何在不改变输入完整性的情况下将子JSON对象存储为字符串。我对PHP很陌生。这可能真的很容易。你能把它编码吗<代码>$q=json_编码($decoded['questions'])代码>到目前为止您有代码吗?小提示:这不是有效的JSONSTRING echo语句不打印anything@GabrielAluyor对不起,我忘了加引号了。我编辑了这篇博文,这是为我做的,但我不得不做一些修改。echo$q[0][login][username];echo$q[0][登录][密码];echo json_encode($q[0][questions]);但不幸的是,我不能推翻这个答案——声誉不够。@GabrielAluyor我想你是想回答另一个答案的。