undistro / cel-playground

CEL Playground provides a simple and user-friendly interface to write and quickly evaluate CEL expressions.
https://playcel.undistro.io
Apache License 2.0
121 stars 21 forks source link

Top-level List as data is not supported #44

Open mrueg opened 1 year ago

mrueg commented 1 year ago

Description

A clear and concise description of the bug.

How to Reproduce

  1. Go to cel-playground
  2. Enter a valid JSON with a top-level array[ { "noun": "lion", "population": 123, "predator": true }, { "noun": "deer", "population": 456, "predator": false }, { "noun": "pigeon", "population": 789, "predator": false } ]
  3. Press Run
  4. View Output
    line 1: cannot unmarshal !!seq into map[string]interface {}

    Expected Behavior

    Top-level Array should be accepted as it's valid JSON. See: https://stackoverflow.com/questions/3833299/can-an-array-be-top-level-json-text

Screenshots

If applicable, add screenshots to help explain your problem.

System Information

Additional Context

Here's an example: https://playcel.undistro.io/?content=H4sIAAAAAAAAA4WQSQrDMAxFryK09qZz66tUWRiilICxjAcohNy9ciB006Qb8XkfPYQm7F1xaPFJAWBqA4AwSA2EVpMfRZNZiyixelcWaOFwPH2bxKqS1HhJlRufzYa1Z06b1vPl%2BtM6OJ%2F3tXF88c65t%2Fvjj5hChwb5rW3OuqWPIRxECHH%2BAMP1TOcrAQAA

matheusfm commented 1 year ago

Hi @mrueg! Thank you for opening this issue! Yeah, it's really valid JSON. But I don't know how it could be accessible in CEL expression without a variable name. Do you have any idea?

Putting the array into any variable, like the example below, should work.. Does it make sense for your case?

https://playcel.undistro.io/?content=H4sIAAAAAAAAA42QTQoCMQxGrxKy7sZ%2F7VWMi%2BpEGSlt6bQglN7daBnQhc5kkw9eyCMp2JlkUGMhR%2BjPd74kQk0OpI6tAZQxABA6n2VUS7K9l6Q%2BYfAhW5PeQMNiufqmkUXn44ulmHlkVU2YOub417TebH%2BarsYO81Whv%2FHEWbv9YaashRO5igr5IYPDIEvk3%2B3VWJ9rxsH7gQEAAA%3D%3D

mrueg commented 1 year ago

Thanks for your response @matheusfm ! It's clearly an option, but might make things more difficult when applying custom CEL code afterwards (as I'd have to retrofit it) I've started a discussion in the cel-go repo as well.