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

Unwanted count() exception in JsonPointer.php

Open pierluiginovatag opened this issue 2 years ago • 0 comments

Comparing two structured JSON I often get this exception:

count(): Argument #1 ($value) must be of type Countable|array, string given

raised at line 152 of file JsonPointer.php: ....

                    if (0 === ($flags & self::TOLERATE_ASSOCIATIVE_ARRAYS)) {
                        **if ($intKey > count($ref) && 0 === ($flags & self::RECURSIVE_KEY_CREATION)) {** 
                            throw new JsonPointerException('Index is greater than number of items in array');
                        } elseif ($intKey < 0) {
                            throw new JsonPointerException('Negative index');
                        }
                    }

....

I am calling jsonDiff in this way:

                    $diff = new JsonDiff(
                        $jsonTarget,
                        $jsonNew,
                        JsonDiff::REARRANGE_ARRAYS +
                            JsonDiff::COLLECT_MODIFIED_DIFF
                    );

with these two objects (first is Target, second is New), that are obviously differents:

TARGET [["' POT NOODLE 500011820348 £0.80D'","NOODLE","",[""],"","1","DRY PASTA AND RICE"],["' STIR FRY 501033820008 £0.75D'","LETTUCE","",[""],"","1","VEGETABLES"],["' CB SOUP 500023286522 £1.00D'","VEGETABLE SOUP","",["BOTTIGLIA","1.00 L"],"","1","VEGETABLES"],["' KIDNEY BEANS 505244916778 £0.33D £1.00D'","BEANS","",[""],"1.00","1","LEGUMES"],["' GRAVY 505717209125 £0.28D'","FILLETS","",[""],"","1","MEATS READY TO BE COOKED"],["' BAKED BEANS 505244916772 £2.00D'","BEANS","",[""],"","1","LEGUMES"],["' COFFEE 844529032622'","COFFEE","",["844529032622 L"],"","1","COFFEE AND INFUSIONS"],["' CHOCOLATE 505407086455'","CHOCOLATE","",[""],"","1","CHOCOLATE AND CHOCOLATES"],["' KITCHEN ROLL 800426021048 £4.75V'","REGINA KITCHEN ROLL","REGINA",["800426021048 METRI"],"","1","HOME CARE"],["' TABLE SALT 501998910311 £0.95D'","SALT","",[""],"","1","SAUCES AND CONDIMENTS"],["' RED WINE 780432074610 £8.00V'","WINE","",["x 780432074610"],"","1","ALCOHOLIC BEVERAGES"]]

NEW [[" PUI NUUULE £0.80D","BURGER","",[""],"","1","MEATS READY TO BE COOKED"],[" POT NOODLE 500011820348 £0.75D","NOODLE","",[""],"","1","DRY PASTA AND RICE"],[" CB SOUP 500023286522","VEGETABLE SOUP","",["BOTTIGLIA"],"","1","VEGETABLES"],[" KIDNEY BEANS 505244916778","BEANS","",[""],"","1","LEGUMES"],[" £1.00D","KIWI","",[""],"","1","FRUIT"],[" GRAVY 505717209125","FILLETS","",[""],"","1","MEATS READY TO BE COOKED"],[" BAKED BEANS","BEANS","",[""],"","1","LEGUMES"],[" 844529032622 £2.00D","KIWI","",[""],"","1","FRUIT"],[" COFFEE","COFFEE","",[""],"","1","COFFEE AND INFUSIONS"],[" CHOCOLATE 505407086455 £1.29V","CHOCOLATE","",[""],"","1","CHOCOLATE AND CHOCOLATES"],[" KITCHEN ROLL 800426021048","REGINA KITCHEN ROLL","REGINA",[""],"","1","HOME CARE"],[" TABLE SALT 501998910311 £0.95D","SALT","",[""],"","1","SAUCES AND CONDIMENTS"],[" RED WINE 780432074610 £8.00V","WINE","",["x 780432074610"],"","1","ALCOHOLIC BEVERAGES"]]

Is there a way to avoid /solve this ?

I am runnig PHO 8.1.10

Thanks

pierluiginovatag avatar Oct 26 '23 13:10 pierluiginovatag