首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP将JSON值解析为Html表

PHP将JSON值解析为Html表
EN

Stack Overflow用户
提问于 2016-02-11 21:11:01
回答 2查看 2K关注 0票数 2

我工作的公司决定将所有数据库查询保存在一个RESTful API文件中。是一个很大的学习曲线,但最后我有了JSON对象返回数据。我现在的问题是如何将值填充到HTML表中。

下面我将向您展示我现在所拥有的,我已经尝试过的内容和示例代码,因此您可能会建议我需要更正的地方。

非常感谢。

1.首先请求数据:

代码语言:javascript
复制
$schoolid = $_GET['schoolid'];
$data = file_get_contents("http://www.mydomainname.com/api/webapi.php?Oper=liststudents&schoolid=" . $schoolid);
echo $data;

2.,这是一个结果的样本。很明显,Json字符串:

代码语言:javascript
复制
{"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.以下是我正在努力实现的目标的一个例子。

代码语言:javascript
复制
|ID|  FirstNm  |  LastNm | School |UID| Teacher|      
|---|------------|-----------|-----------|-----|------------|     
|---|------------|-----------|-----------|-----|------------|

等等,如此遥远.

4.下面是我尝试过的一些方法,但是我要么得到"0“结果,要么抛出一个错误。

一个。

代码语言:javascript
复制
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.

代码语言:javascript
复制
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;

再试几次,但我只需要一个工作模式.

EN

回答 2

Stack Overflow用户

发布于 2016-02-11 21:42:57

这就是我要做的:

  1. 修复你的JSON。我想你贴错了 {“数据”:{“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”:“LastName”:“u05d9\u05db 05ue8”,"SchoolID":"17","UID":"0018",“TeacherID”:“24}”;
  2. 使用json_decode将其转换为PHP对象 $obj = json_decode($json);
  3. 使用var_dump($obj)进行调试,这将为您提供如下内容: 对象(StdClass)1公共‘数据’=>数组(size=3) 0 =>对象(StdClass)2公共'ID‘=>字符串'0450’(length=4)公共'FirstName‘=>字符串’×™×ר××ב(length=16)公共'LastName’=>字符串‘×’×××x‘(length=12)公共'SchoolID’=>字符串'17‘(length=2 ))公共'UID‘=>字符串'0001’(length=4)公共'TeacherID‘=>字符串'26’(length=2) 1 => object(stdClass)3公共'ID‘=>字符串'0017’(length=4)公共'FirstName‘=> string’××动感×LastName×LastName××ב(length=14)公共'LastName’=>字符串‘×××’(length=6)公共'SchoolID‘=>字符串'17’(length=2)公共'UID‘=>字符串'0017’(length=4)公共'TeacherID‘=>字符串'24’(length=2) 2 => object(stdClass)4公共'ID‘=> string '0018’(length=4)公共'FirstName‘=> string’דבגבלג(length=17) (length=17)公共'LastName‘=> string’יש×>ר‘(length=8)公共'SchoolID’=> string '17‘(length=2) public 'UID’=> string '0018‘(length=4) public 'TeacherID’=> string '24‘(length=2)
  4. 最后,现在您已经了解了您正在使用的内容,您可以使用->对象运算符访问数据: $row{ var_dump($row->ID);var_dump($row->FirstName);var_dump($row->LastName);//.}
票数 1
EN

Stack Overflow用户

发布于 2016-02-11 21:20:26

像这样的东西应该管用。

代码语言:javascript
复制
   <?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添加一些$file_data()语句,以查看您是否真正获得了所期望的数据。存储数据的方式可能存在一些编码/格式化问题。你知道是什么处理和存储了这些数据吗?

关于编码,我做了一点研究。如果我没有弄错,您有需要转换为Unicode文本来显示的Unicode实体。康涅夫是很好的转换,但我不知道原始编码是什么。是日语写的吗?

代码语言:javascript
复制
$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?上试试这个

代码语言:javascript
复制
$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";

产生看起来像希伯来人的字符:

ארריינד

如果这是正确的,那么在显示之前编写一个函数来解码您的数据。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35350090

复制
相关文章

相似问题

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