将嵌套的JSON回送到PHP

时间:2018-05-31 13:15:44

标签: php json

我有一个JSON feed我通过PHP解析。我有问题得到一些嵌套元素回应我会很感激一些帮助..我已经看了很多相关的帖子,但似乎无法得到逻辑,以处理我的特定JSON提要。有人可以告诉我做错了吗?

JSON Feed在这里> https://api.lever.co/v0/postings/leverdemo?skip=1&limit=3&mode=json

我正在努力解析的元素是"类别" " team"," location"的父节点和子节点和#34;承诺"。

我以为这会起作用 - 但它不会......

<?php

$url = 'feed.json'; 
$data = file_get_contents($url); 
$characters = json_decode($data, true);

?>

<table>
<tbody>
    <tr>
        <th>Job title</th>
        <th>Team</th>
        <th>Location</th>
        <th>Commitment</th>
        <th>DescriptionPlain</th>
        <th>applyUrl</th>
    </tr>
    <?php foreach ($characters as $character) : ?>
    <tr>
        <td> <?php echo $character['text']; ?> </td>



        <td> <?php echo $character['categories'][2]['team'] ?></td>
        <td> <?php echo $character['categories'][2]->team ?></td>
        <td> <?php echo $character['categories'][1]->location ?></td>
        <td> <?php echo $character['categories'][0]->commitment ?></td>

        <td> <?php echo $character['descriptionPlain']; ?> </td>
        <td> <?php echo $character['applyUrl']; ?> </td>

    </tr>
    <?php endforeach; ?>
</tbody>

注意,它只是那些未能回应的孩子?还注意到,如果我在$ url变量中使用完整的url,它都会失败?但是从当地它起作用了吗?

任何想法???谢谢!

2 个答案:

答案 0 :(得分:2)

应该是:

    <td> <?php echo $character['categories']["team"] ?></td>
    <td> <?php echo $character['categories']["location"] ?></td>
    <td> <?php echo $character['categories']["commitment"] ?></td>

代替。数据中的数字键不存在数字键。另外&#34;类别&#34;不是对象,因此您不能使用箭头( - &gt;)表示法。

答案 1 :(得分:0)

修改

你得到一个错误,因为你试图访问一个对象,实际上你有一个数组,这是解决方案希望它有所帮助:

<?php
$url = 'https://api.lever.co/v0/postings/leverdemo?skip=1&limit=3&mode=json'; 
$data = file_get_contents($url); 
$characters = json_decode($data, true);
$nb = count($characters);
?>
<table>
<tbody>
    <tr>
        <th>Job title</th>
        <th>Team</th>
        <th>Location</th>
        <th>Commitment</th>
        <th>DescriptionPlain</th>
        <th>applyUrl</th>
    </tr>
    <?php while($nb > 0){ 
    $nb--;
    $nb_lists = count($characters[$nb]['lists']);
    ?>
    <tr>
    <?php 
        while($nb_lists > 0){
            $nb_lists--;
            ?>
        <td> <?php if(isset($characters[$nb]['lists'][$nb_lists]['text'])){ echo $characters[$nb]['lists'][$nb_lists]['text'];} ?> </td>
        <?php } ?>
        <td> <?php if(isset($characters[$nb]['categories']['team'])){echo $characters[$nb]['categories']['team'];} ?></td>
        <td> <?php if(isset($characters[$nb]['categories']['team'])){echo $characters[$nb]['categories']['team'];} ?></td>
        <td> <?php if(isset($characters[$nb]['categories']['location'])) {echo $characters[$nb]['categories']['location'];} ?></td>
        <td> <?php if(isset($characters[$nb]['categories']['commitment'])){ echo $characters[$nb]['categories']['commitment'];} ?></td>
        <td> <?php if(isset($characters[$nb]['descriptionPlain'])){echo $characters[$nb]['descriptionPlain']; }?> </td>
        <td> <?php if(isset($characters[$nb]['applyUrl'])){echo $characters[$nb]['applyUrl'];} ?> </td>
    </tr>
    <?php } ?>
</tbody>