homepage Welcome to WebmasterWorld Guest from
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Become a Pro Member

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
Forum Library, Charter, Moderators: coopster & jatar k

PHP Server Side Scripting Forum

JSONReader code not working
PHP and JSONReader to parse large json file

 2:14 am on May 14, 2014 (gmt 0)

I am trying to use JSONReader (along with PHP & XPATH) to parse a very large JSON file, then display search results. A stream parser (such as JSONREader) is recommended over JSON_decode when parsing large files. This simple code below is not displaying any results (in the echo statements). Any advice is greatly appreciated.

$reader = new JSONReader();
$dom = new DOMDocument;
$xpath = new DOMXpath($dom);

while ($reader->read() && $reader->name !== 'product') {

while ($reader->name === 'product') {
$node = $dom->importNode($reader->expand(), TRUE);

$name = $xpath->evaluate('string(name)', $node);
$price = $xpath->evaluate('string(price)', $node);
echo "Name: " . $name . ". ";
echo "Price: " . $price . ". ";


Here is a snippet of the JSON file:
"products": {
"product" : [
{ "name" : "Dell 409", "price" : 499.99},
{ "name" : "HP Lap top", "price" : 599.99},
{ "name" : "Compaq 11", "price" : 299.99}

] }}



 3:08 pm on May 14, 2014 (gmt 0)

Pardon my ignorance but I'm not familiar with JSONReader - do you have a link to the docs?


Presumably "name" is a special JSONReader property referencing the current JSON property name? Or is it intended to be a reference to the "name" property in your JSON string?


 11:45 pm on May 14, 2014 (gmt 0)

"name" is the element from the json file.


 8:49 am on May 16, 2014 (gmt 0)

In that case your code does not look correct.


If "name" is intended to refer to the "name" element in the JSON string then this would seem to assume that "name" is a root level element, which it is not. "name" is a property in an object in the "product" array, which is itself an element of the "products" object.

(Although TBH your code suggests that "->name" is a reference to the current element?)

Which JSONReader are you using? This one...?

Global Options:
 top home search open messages active posts  

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved