PHP – JSON decodieren

Lesezeit: 3 Minuten

Ich habe das folgende Skript, um Suchergebnisse von einer API abzurufen und dann das Array zu zerschneiden und auszugeben. Ich habe Probleme beim Decodieren des JSON in ein Array, es wird zurückgegeben Array(0) {
}

Es ist ein WordPress-Shortcode

Hier ist ein Beispiel für den Json, der von der API abgerufen wird:

[
  {
    "barcode": "000015426950",
    "name": "Karen's cowboy",
    "author": "Ann",
    "author_last": "Martin",
    "publisher": "New York : Scholastic, c2000.",
    "year_pub": "",
    "edition": "",
    "genre": "",
    "checkout": "out",
    "series": "",
    "callnum": "MAR",
    "fiction": "true",
    "in_house": "false",
    "timestamp": "1355835387",
    "outto": "000008388615",
    "duedate": "1372005722",
    "ISBN": "059052528X",
    "media_type": "",
    "print": "false",
    "BOXID": "2147483647",
    "uid": "10",
    "printed": ""
  },
  {
    "barcode": "000015426949",
    "name": "Karen's yo-yo",
    "author": "Ann M",
    "author_last": "Martin",
    "publisher": "New York : Scholastic, c2000.",
    "year_pub": "",
    "edition": "",
    "genre": "",
    "checkout": "out",
    "series": "",
    "callnum": "MAR",
    "fiction": "true",
    "in_house": "false",
    "timestamp": "1355835343",
    "outto": "000008388615",
    "duedate": "1373216918",
    "ISBN": "0590525115",
    "media_type": "",
    "print": "false",
    "BOXID": "",
    "uid": "10",
    "printed": ""
  },
...
  }
]

Hier ist der Code, der verwendet wird, um den JSON abzurufen und ihn zu paginieren:

function book_search_form() {
?>
<form method='get'><input type="text" name="searchvalue" value="<? if (isset($_GET["searchvalue'])) echo $_GET['searchvalue'];?>' />&nbsp;<input type="submit" value="Search" /><input type="hidden" name="pagenum" value="1" /></form>
<br>
<?php 
if(isset($_GET['pagenum']) && isset($_GET['searchvalue']))
{
$page=$_GET['pagenum'];
$searchvalue = $_GET['searchvalue'];   // get the value of the page from your url
$recordsPerPage=10; // number of records you want on your page
$api_url = get_option('api_url');
    $api_key = get_option('api_key');
    $data = file_get_contents("$api_url/book/index.php/name/$searchvalue?key=2513619352");
    $array = (array)json_decode($data);

$index=($page*$recordsPerPage)-1;
$recordsToBeDisplayed = array_slice($array,$index,$recordsPerPage);// this array contains all the records you would want to display on a page;



    $total_pages=ceil(count($array)/$recordsPerPage);
    }
else { 

//use default values

}
?>
<html>...<body><div id="records">
<?
echo '<pre>';
echo $recordsToBeDisplayed;
echo '</pre>';?><!-- use the array created above to display records -->
    </div>
<div id="pagination">
<?
for($j=1;$j<=$total_pages;$j++){
                    if($j==$page)
                   {?>

                   <li style="display: inline;"><a href="https://stackoverflow.com/questions/19609354/?searchvalue=&pagenum=<?=$j?>"><u><?=$j?></u></a></li>
                   <?}else{?>
                        <li style="display: inline;"><a href="https://stackoverflow.com/questions/19609354/?searchvalue=&pagenum=<?=$j?>"><?=$j?></a></li>


                   <?}}?>
</div>
<?php


}

  • mögliches Duplikat von Parsing JSON file with PHP

    – Bud Damyanov

    6. August 14 um 8:33 Uhr

PHP – JSON decodieren
gview

Versuchen json_decode

$array = json_decode($data, true);

Dann erhalten Sie ein Array anstelle eines Objekts.

Beispiel #1 Beispiele für json_decode()

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>

Das obige Beispiel wird ausgegeben:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

Trennen Sie bitte Ihre PHP von HTML, verwenden Sie Einrückungen und:

$array = json_decode($data, TRUE); //second param used for associative array return

Example #1 json_decode() examples
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>
The above example will output:
object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

PS: Von der Bibel (http://php.net/manual/en/function.json-decode.php)

Wenn die Eingabe im Array-Format vorliegt, können Sie dieselbe Funktion verwenden json_decode. Sie müssen nur loop for result anwenden.

json = ‘{

“a1”:{ “field1″:”name1”, “field2”:age1, “field3″:”country1” },

“a2”:{ “field1″:”name2”, “field2”:age2, “field3″:”country2” },

“a3”:{ “field1″:”name3”, “field2”:age3, “field3″:”country3” } }’;

$Array = json_decode($json, wahr);

foreach ($Array als $key => $value)
{

    echo " $key ";

    foreach ($value as $k => $val)    
    {
        echo "$k | $val <br />";
    } 

}

.

570390cookie-checkPHP – JSON decodieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy