code: def fromjson(source, *args, **kwargs):
      
  
      source = read_source_from_arg(source)
      return JsonView(source, *args, **kwargs)
docs: Extract data from a JSON file. The file must contain a JSON array as
      the top level object, and each member of the array will be treated as a
      row of data. E.g.::
  
          >>> import petl as etl
          >>> data = '''
          ... [{"foo": "a", "bar": 1},
          ... {"foo": "b", "bar": 2},
          ... {"foo": "c", "bar": 2}]
          ... '''
          >>> with open('example.json', 'w') as f:
          ...     f.write(data)
          ...
          74
          >>> table1 = etl.fromjson('example.json', header=['foo', 'bar'])
          >>> table1
          +-----+-----+
          | foo | bar |
          +=====+=====+
          | 'a' |   1 |
          +-----+-----+
          | 'b' |   2 |
          +-----+-----+
          | 'c' |   2 |
          +-----+-----+
  
      If your JSON file does not fit this structure, you will need to parse it
      via :func:`json.load` and select the array to treat as the data, see also
      :func:`petl.io.json.fromdicts`.
  
      .. versionchanged:: 1.1.0
  
      If no `header` is specified, fields will be discovered by sampling keys
      from the first `sample` objects in `source`. The header will be
      constructed from keys in the order discovered. Note that this
      ordering may not be stable, and therefore it may be advisable to specify
      an explicit `header` or to use another function like
      :func:`petl.transform.headers.sortheader` on the resulting table to
      guarantee stability.