class_docstr: Accept JSON string values.
  
  The value is transmitted and received by BokehJS as a *string*
  containing JSON content. i.e., you must use ``JSON.parse`` to unpack
  the value into a JavaScript hash.
  
  Args:
      default (string, optional) :
          A default value for attributes created from this property to
          have.
  
      help (str or None, optional) :
          A documentation string for this property. It will be automatically
          used by the :ref:`bokeh.sphinxext.bokeh_prop` extension when
          generating Spinx documentation. (default: None)
class_docstr_tok: ["Accept","JSON","string","values",".","The","value","is","transmitted","and","received","by","BokehJS","as","a","*","string","*","containing","JSON","content",".","i.e.",",","you","must","use","``","JSON.parse","``","to","unpack","the","value","into","a","JavaScript","hash",".","Args",":","default","(","string",",","optional",")",":","A","default","value","for","attributes","created","from","this","property","to","have",".","help","(","str","or","None",",","optional",")",":","A","documentation","string","for","this","property",".","It","will","be","automatically","used","by","the",":","ref",":","`","bokeh.sphinxext.bokeh_prop","`","extension","when","generating","Spinx","documentation",".","(","default",":","None",")"]
code: def validate(self, value: Any, detail: bool = True) -> None:
      super().validate(value, detail)
  
      try:
          import json
  
          json.loads(value)
      except ValueError:
          msg = (
              "" if not detail else f"expected JSON text, got {value!r}"
          )
          raise ValueError(msg)
  
imports: from __future__ import annotations
  import logging
  from typing import Any
  from .primitive import String
label_desc: Use image node_id 1 for calling the JSON obj's underlying member method code with example usage: obj.validate(value, detail) without return types