我正在从数据库中提取记录,该记录能够以我想要的方式以JSON格式显示数据,并且效果很好。这里的问题是我在页面上生成了一个令牌,我想将其添加到用户获得的有效负载中,这就是我正在获得的
{"user_details":[{
"id":"1",
"fname":"xxx",
"lname":"xxx Mensah",
"phone_number":"0000000",
"email":"yourmail@mail.com",
"username":"xx",
"password":"xx",
"user_type":"xx"
}],
"token":"xxxxx"}
但是我想得到这样的结果
[{"user_details":{
"id":"1",
"fname":"xxx",
"lname":"xxx Mensah",
"phone_number":"0000000",
"email":"yourmail@mail.com",
"username":"xx",
"password":"xx",
"user_type":"xx"
},
"token":{"xxxxx"}
]
PHP
$token = xxxxx
$row = $conn->query("SELECT * from users where username='".$username."' and password='".$password."'");
$row->setFetchMode(PDO::FETCH_ASSOC);
$userdetails = $row->fetchAll(PDO::FETCH_OBJ);
$results = array(
'user_details' => $userdetails,
'token' => $token
);
echo json_encode(($results));
答案 0 :(得分:1)
似乎期望的json无效(令牌部分),但是您可以拥有类似以下内容:
[{"user_details":{"id":"1","fname":"xxx","lname":"xxx Mensah","phone_number":"0000000","email":"yourmail@mail.com","username":"xx","password":"xx","user_type":"xx"}},{"token":"xxxxx"}]
代码:
$token = xxxxx;
$row = $conn->query("SELECT * from users where username='".$username."' and password='".$password."'");
$row->setFetchMode(PDO::FETCH_ASSOC);
$userdetails = $row->fetch(PDO::FETCH_OBJ);
$results = array(
array(
'user_details' => $userdetails
),
array(
'token' => $token
)
);
echo json_encode($results);
请注意,结果包装在另一个数组中,令牌在另一个数组中。
将fetchAll替换为fetch,因为您只需要一行,而不是所有行,对吗?
该示例可以帮助您了解如何构造数据以获得所需结果:
<?php
$array = array(
array (
'user_details' =>
array (
'id' => '1',
'fname' => 'xxx',
'lname' => 'xxx Mensah',
'phone_number' => '0000000',
'email' => 'yourmail@mail.com',
'username' => 'xx',
'password' => 'xx',
'user_type' => 'xx',
),
),
array(
'token' => 'xxxxx'
)
);
echo json_encode($array);
答案 1 :(得分:1)
对象的JSON编码字符串表示形式中的[]括号,而{}括号表示一个数组。因此,您的用户详细信息显示的是一个由键,值对组成的数组的对象。然后,您将得到一个包含所有内容,令牌和用户详细信息的数组。
我倾向于尝试以下方法:
$userdetails = $row->fetch(PDO::FETCH_OBJ);
$object = (object) ['userdetails' => $userdetails, 'token' => $token];
echo json_encode($results);
我还没有测试过,但应该足够接近。
答案 2 :(得分:-1)
您打错字了吗? 请尝试这个:
Tea