json-machine icon indicating copy to clipboard operation
json-machine copied to clipboard

Loss of pointer key in results with underscored pointers

Open smiletoeverybody opened this issue 5 months ago • 3 comments

Package version: 1.2.2 PHP: 8.2.28

The result of getting scalar values always loses pointer key if the key in the original json contains an underscore.

Example json:

{
    "code": "some value",
    "key_one": 1,
    "key_two": [1]
}

After execution of the following code we are getting the same results for initially different data

$pointer = Items::fromFile('example.json', ['pointer' => '/key_one']);
$result = iterator_to_array($pointer);
var_dump($result); // $result = [0 => 1]


$pointer = Items::fromFile('example.json', ['pointer' => '/key_two']);
$result = iterator_to_array($pointer);
var_dump($result); // $result = [0 => 1]

I tried to find the issue in JSON Pointer notation but there are no exceptions for underscoring character.

And if I'm not wrong expected behavior should be different for key_one:

$pointer = Items::fromFile('example.json', ['pointer' => '/key_one']);
$result = iterator_to_array($pointer);
var_dump($result); // $result = ['key_one' => 1]


$pointer = Items::fromFile('example.json', ['pointer' => '/key_two']);
$result = iterator_to_array($pointer);
var_dump($result); // $result = [0 => 1] - remains as it is right now

smiletoeverybody avatar May 26 '25 14:05 smiletoeverybody