code: def _parse_json_data(self, fileData):
      parserUtils._parse_json_part(
          fileData, self.buffers, "buffers", parserUtils.Buffer.fromDict
      )
      parserUtils._parse_json_part(
          fileData,
          self.bufferViews,
          "bufferViews",
          parserUtils.BufferView.fromDict,
      )
      parserUtils._parse_json_part(
          fileData,
          self.accessors,
          "accessors",
          parserUtils.Accessor.fromDict,
      )
      parserUtils._parse_json_part(
          fileData,
          self.nodes,
          "nodes",
          parserUtils.Node.fromDict,
          errorwarn=False,
      )
      parserUtils._parse_json_part(
          fileData,
          self.meshes,
          "meshes",
          parserUtils.Mesh.fromDict,
          errorwarn=False,
      )
      parserUtils._parse_json_part(
          fileData,
          self.materials,
          "materials",
          parserUtils.Material.fromDict,
          errorwarn=False,
      )
      parserUtils._parse_json_part(
          fileData, self.scenes, "scenes", parserUtils.Scene.fromDict
      )
      parserUtils._parse_json_part(
          fileData,
          self.images,
          "images",
          parserUtils.Image.fromDict,
          errorwarn=False,
      )
      parserUtils._parse_json_part(
          fileData,
          self.textures,
          "textures",
          parserUtils.Texture.fromDict,
          errorwarn=False,
      )
      parserUtils._parse_json_part(
          fileData,
          self.samplers,
          "samplers",
          parserUtils.Sampler.fromDict,
          errorwarn=False,
      )
      parserUtils._parse_json_part(
          fileData,
          self.cameras,
          "cameras",
          parserUtils.Camera.fromDict,
          errorwarn=False,
      )
  
      parserUtils._parse_json_part(
          fileData,
          self.animations,
          "animations",
          parserUtils.Animation.fromDict,
          errorwarn=True,
      )
      # get longest animation by its input global time incase user does not define animation time or number of frames to render
      for anim in self.animations:
          anim.calc_max_time(self.accessors)
          self.animation_time = max(anim.anim_time, self.animation_time)
          # important call to setup weight animation
  
      if len(self.cameras) < 1:
          self.has_camera = False
      dicts = fileData.get("extensionsUsed")
      if dicts != None:
          for ext in dicts:
              self.extensions.append(ext)
  
      exts = fileData.get("extensions")
      if exts != None:
          light_ext = exts.get("KHR_lights_punctual")
          if light_ext != None:
              lights = light_ext.get("lights")
              if lights != None:
                  for light in lights:
                      self.lights.append(
                          parserUtils.Light.fromDict(light)
                      )
  
imports: from __future__ import print_function
  import os
  import sys
  import json
  import vray
  from .None import parserUtils
  from .None import cameraUtils
  import numpy
  from tempfile import mkstemp
  import math
  import pyquaternion
  import base64
  from ..None import testUtils
label_desc: Use image node_id 30 for calling the GltfParser obj's underlying member method code with example usage: obj._parse_json_data(fileData) without return types