json-machine
json-machine copied to clipboard
Loss of pointer key in results with underscored pointers
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