0

Simple JSONReader code not working

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(); 
$reader->open('products.json');
$dom = new DOMDocument;
$xpath = new DOMXpath($dom);

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

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 . ". ";

    $reader->next('product');
}

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}

] }}

Edited by pritaeas: Moved to PHP.

3
Contributors
3
Replies
21
Views
3 Years
Discussion Span
Last Post by diafol
1
Votes + Comments
Yes, those are mine. I haven't been able to get an answer - been trying for close to 2 weeks
0

As pz states, JSONReader() is not a native function, so unless you give more info about this function, it's difficult to know how to help.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.