首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中解析此JSON对象

在PHP中解析此JSON对象
EN

Stack Overflow用户
提问于 2017-08-11 05:27:05
回答 2查看 129关注 0票数 0

我将通过HTTP POST接收一个JSON对象,我发现很难解析它。这是JSON对象的样子:

代码语言:javascript
复制
{ 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 // **output:** 123

echo $password // **output:** 456

echo $q //**output:** 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 }]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-11 05:44:21

首先,您的示例不是有效的json。下面是有效的一条:

代码语言:javascript
复制
[{
"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_decode

代码语言:javascript
复制
$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;
票数 1
EN

Stack Overflow用户

发布于 2017-08-11 06:16:48

示例中的JSON是无效的,我修复了它并进行了测试,我认为这就是您要找的。

代码语言:javascript
复制
<?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"; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45623693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档