Nesting JSON in a custom claim using the EL


I’m trying to add a custom claim with a JSON value to access tokens using the appuser.custom_claim feature in the Expression Language. The JSON value ends up being escaped in the access token like so:

      "sub": "00u11ouch7fpyqKil0h8",
      "ver": 1,
      "custom_claim": [
        "{   id: \"50eb1de3-39c7-4fa1-9916-50d6fa575d2c\" }",
        "{   id: \"1be8375a-aac3-469a-ac9f-c2d5bf4fc981\" }"

Is there any way to add nested data in a claim without the escaping? I know anything can be done with the Token Inline Hook, but perhaps there is another way.

The case for allowing nested objects is strong as according to the OpenID Connect spec, an address claim should be a JSON object, which contains sub-claims.

More to the point, it seems to be supported in Auth0, which the Okta has acquired recently.