我工作的公司决定将所有数据库查询保存在RESTful API文件中。是一个很大的学习曲线,但最后我有JSON对象返回数据。我现在的问题是如何将值填充到HTML表格中。
下面我将向您展示我现在拥有的内容,我已经尝试过的内容以及示例代码,以便您可以建议我需要纠正的位置。
非常感谢。
1。首先,我请求数据:
$schoolid = $_GET['schoolid'];
$data = file_get_contents("http://www.mydomainname.com/api/webapi.php?Oper=liststudents&schoolid=" . $schoolid);
echo $data;
2。以下是结果示例。显然是一个Json字符串:
{"data":[{
"ID":"0450",
"FirstName":"\u05d9\u05d5\u05e1\u05e3\u05de\u05e0\u05d7\u05dd",
"LastName":"\u05d1\u05d9\u05e0\u05e0\u05e2\u05e8",
"SchoolID":"17",
"UID":"0001","
TeacherID":"26"},{"ID":"0017",
"FirstName":"\u05d0\u05e8\u05e8\u05d9\u05d9\u05e0\u05d3",
"LastName":"\u05d6\u05d0\u05d1",
"SchoolID":"17","UID":"0017",
"TeacherID":"24"},{"ID":"0018",
"FirstName":"\u05d3\u05d5\u05d1 \u05d2\u05dc\u05d5\u05d9\u05d1,
"LastName":"\u05d9\u05e9\u05db\u05e8",
"SchoolID":"17",
"UID":"0018",
"TeacherID":"24"}
我猜它仍然是一个必须被解析的对象......现在,
3。以下是我想要实现的目标。
|ID| FirstNm | LastNm | School |UID| Teacher|
|---|------------|-----------|-----------|-----|------------|
|---|------------|-----------|-----------|-----|------------|
等等,等等......
4. 以下是我到目前为止尝试的一些方法,但我要么得到" 0"结果,或者它会抛出错误
一个。
foreach($data->{'data'} as $obj){
echo '<tr>
<td>' . $obj->{'ID'} .'</td>
<td>' . $obj->{'FirstName'} .'</td>
<td>' . $obj->{'LastName'} .'</td>
<td>' . $obj->{'SchoolID'} .'</td>
<td>' . $obj->{'UID'} .'</td>
<td>' . $obj->{'TeacherID'} .'</td>
</tr>'
B中。
foreach ($data as $key => $jsons) {
$table ='<table class="'.$jsons['class'].'" border="1">';
foreach ($jsons as $rkey => $rvalue) {
if($rkey=='head')
{
$table.='<tr>';
foreach($rvalue as $rvv)
{
$table.='<th>'.$rvv.'</th>';
}
$table.='</tr>';
}else
if($rkey=='rows')
{
foreach($rvalue as $rvv)
{
$table.='<tr>';
foreach($rvv as $rv)
{
$table.='<td>'.$rv.'</td>';
}
$table.='</tr>';
}
}
}
}
echo $table;
尝试了更多的东西,但我只需要一个工作模型......
答案 0 :(得分:1)
这就是我要做的事情:
修复您的JSON。我认为你发错了
["address"]=>
array(1) {
[1]=>
array(7) {
["txt"]=>
string(8) "123 Test"
["city"]=>
string(4) "City"
["state"]=>
string(6) "CANADA"
["county"]=>
string(6) "County"
["zip"]=>
string(5) "12345"
["from"]=>
string(10) "02/01/2016"
["till"]=>
string(10) "02/02/2016"
}
}
将其转换为$json = '{"data":[{"ID":"0450","FirstName":"\u05d9\u05d5\u05e1\u05e3\u05de\u05e0\u05d7\u05dd","LastName":"\u05d1\u05d9\u05e0\u05e0\u05e2\u05e8","SchoolID":"17","UID":"0001","TeacherID":"26"},{"ID":"0017","FirstName":"\u05d0\u05e8\u05e8\u05d9\u05d9\u05e0\u05d3","LastName":"\u05d6\u05d0\u05d1","SchoolID":"17","UID":"0017","TeacherID":"24"},{"ID":"0018","FirstName":"\u05d3\u05d5\u05d1 \u05d2\u05dc\u05d5\u05d9\u05d1","LastName":"\u05d9\u05e9\u05db\u05e8","SchoolID":"17","UID":"0018","TeacherID":"24"}]}';
json_decode
使用$obj = json_decode($json);
进行调试,这将为您提供以下内容:
var_dump($obj)
最后,既然您已经看到了正在使用的内容,就可以使用object(stdClass)[1]
public 'data' =>
array (size=3)
0 =>
object(stdClass)[2]
public 'ID' => string '0450' (length=4)
public 'FirstName' => string '×™×•×¡×£×ž× ×—×' (length=16)
public 'LastName' => string '×‘×™× × ×¢×¨' (length=12)
public 'SchoolID' => string '17' (length=2)
public 'UID' => string '0001' (length=4)
public 'TeacherID' => string '26' (length=2)
1 =>
object(stdClass)[3]
public 'ID' => string '0017' (length=4)
public 'FirstName' => string '××¨×¨×™×™× ×“' (length=14)
public 'LastName' => string '×–×ב' (length=6)
public 'SchoolID' => string '17' (length=2)
public 'UID' => string '0017' (length=4)
public 'TeacherID' => string '24' (length=2)
2 =>
object(stdClass)[4]
public 'ID' => string '0018' (length=4)
public 'FirstName' => string 'דוב גלויב' (length=17)
public 'LastName' => string 'ישכר' (length=8)
public 'SchoolID' => string '17' (length=2)
public 'UID' => string '0018' (length=4)
public 'TeacherID' => string '24' (length=2)
对象运算符访问数据:
->
答案 1 :(得分:-2)
这样的事情应该有效。
<?php
// Json_decode the file contents
$file_data = json_decode(trim($file_text));
// var_dump this $file_data and let us know what you get
// Select the array potion 'data'
$data = $file_data->data;
// var_dump this $data and let us know what you get
foreach ($data as $obj) {
...display code...
}
?>
在$ file_data和$ data中输入一些var_dump()语句,看看你是否真的得到了你期望的数据。数据的存储方式可能存在一些编码/格式化问题。你知道处理和存储这些数据的内容吗?
关于编码,我做了一点研究。如果我没弄错的话,你需要将Unicode实体转换为Unicode文本进行显示。 iconv非常适合转换,但我不确定原始编码是什么。是日本人的写作吗?
$text = "\u05d0\u05e8\u05e8\u05d9\u05d9\u05e0\u05d3";
echo iconv('UCS-2BE', 'UTF-8', $text);
产生
屵〵搰屵〵攸屵〵攸屵〵搹屵〵搹屵〵攰屵〵搳
或者......从How to decode Unicode escape sequences like "\u00ed" to proper UTF-8 encoded characters?
尝试此操作$str = "\u05d0\u05e8\u05e8\u05d9\u05d9\u05e0\u05d3";
$str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}, $str);
echo $str."\n\n";
制作看起来像希伯来字符的内容:
ארריינד
如果这是正确的,请在显示之前为自己编写一个解码数据的功能。