docs: def is_json_compat(value):
      """
      Check that the value is either a JSON decodable string or a dict
      that can be encoded into a JSON.
  
      Raises ValueError when validation fails.
      """
  
      try:
          value = json.loads(value)
      except ValueError as e:
          raise ValueError('JSON decoding error: ' + str(e))
      except TypeError:
          # Check that the value can be serialized back into json.
          try:
              json.dumps(value)
          except TypeError as e:
              raise ValueError(
                  'must be a JSON serializable object: ' + str(e))
  
      if not isinstance(value, dict):
          raise ValueError(
              'must be specified as a JSON serializable dict or a '
              'JSON deserializable string'
          )
  
      return True