将嵌套的JSON回送到PHP中

问题描述 投票:0回答:2

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

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

我正在努力解析的元素是“团队”,“位置”和“承诺”的“类别”父节点和子节点。

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

<?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,它都会失败?但从当地它的作品?

有任何想法吗???谢谢!

php json
2个回答
2
投票

它应该是:

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

代替。数据中的数字键不存在数字键。 “类别”也不是对象,因此您不能使用箭头( - >)表示法。


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>
© www.soinside.com 2019 - 2024. All rights reserved.