Definition jsonComponentType (t : componentTypeT) : json :=
  JsonString match t with
  | INTEGER_SIGNED_8          =>  "INTEGER_SIGNED_8"
  | INTEGER_SIGNED_8_VEC2     =>  "INTEGER_SIGNED_8_VEC2"
  | INTEGER_SIGNED_8_VEC3     =>  "INTEGER_SIGNED_8_VEC3"
  | INTEGER_SIGNED_8_VEC4     =>  "INTEGER_SIGNED_8_VEC4"
  | INTEGER_UNSIGNED_8        =>  "INTEGER_UNSIGNED_8"
  | INTEGER_UNSIGNED_8_VEC2   =>  "INTEGER_UNSIGNED_8_VEC2"
  | INTEGER_UNSIGNED_8_VEC3   =>  "INTEGER_UNSIGNED_8_VEC3"
  | INTEGER_UNSIGNED_8_VEC4   =>  "INTEGER_UNSIGNED_8_VEC4"
  | INTEGER_SIGNED_16         =>  "INTEGER_SIGNED_16"
  | INTEGER_SIGNED_16_VEC2    =>  "INTEGER_SIGNED_16_VEC2"
  | INTEGER_SIGNED_16_VEC3    =>  "INTEGER_SIGNED_16_VEC3"
  | INTEGER_SIGNED_16_VEC4    =>  "INTEGER_SIGNED_16_VEC4"
  | INTEGER_UNSIGNED_16       =>  "INTEGER_UNSIGNED_16"
  | INTEGER_UNSIGNED_16_VEC2  =>  "INTEGER_UNSIGNED_16_VEC2"
  | INTEGER_UNSIGNED_16_VEC3  =>  "INTEGER_UNSIGNED_16_VEC3"
  | INTEGER_UNSIGNED_16_VEC4  =>  "INTEGER_UNSIGNED_16_VEC4"
  | INTEGER_SIGNED_32         =>  "INTEGER_SIGNED_32"
  | INTEGER_SIGNED_32_VEC2    =>  "INTEGER_SIGNED_32_VEC2"
  | INTEGER_SIGNED_32_VEC3    =>  "INTEGER_SIGNED_32_VEC3"
  | INTEGER_SIGNED_32_VEC4    =>  "INTEGER_SIGNED_32_VEC4"
  | INTEGER_UNSIGNED_32       =>  "INTEGER_UNSIGNED_32"
  | INTEGER_UNSIGNED_32_VEC2  =>  "INTEGER_UNSIGNED_32_VEC2"
  | INTEGER_UNSIGNED_32_VEC3  =>  "INTEGER_UNSIGNED_32_VEC3"
  | INTEGER_UNSIGNED_32_VEC4  =>  "INTEGER_UNSIGNED_32_VEC4"
  | INTEGER_SIGNED_64         =>  "INTEGER_SIGNED_64"
  | INTEGER_SIGNED_64_VEC2    =>  "INTEGER_SIGNED_64_VEC2"
  | INTEGER_SIGNED_64_VEC3    =>  "INTEGER_SIGNED_64_VEC3"
  | INTEGER_SIGNED_64_VEC4    =>  "INTEGER_SIGNED_64_VEC4"
  | INTEGER_UNSIGNED_64       =>  "INTEGER_UNSIGNED_64"
  | INTEGER_UNSIGNED_64_VEC2  =>  "INTEGER_UNSIGNED_64_VEC2"
  | INTEGER_UNSIGNED_64_VEC3  =>  "INTEGER_UNSIGNED_64_VEC3"
  | INTEGER_UNSIGNED_64_VEC4  =>  "INTEGER_UNSIGNED_64_VEC4"
  | FLOAT_16                  =>  "FLOAT_16"
  | FLOAT_16_VEC2             =>  "FLOAT_16_VEC2"
  | FLOAT_16_VEC3             =>  "FLOAT_16_VEC3"
  | FLOAT_16_VEC4             =>  "FLOAT_16_VEC4"
  | FLOAT_32                  =>  "FLOAT_32"
  | FLOAT_32_VEC2             =>  "FLOAT_32_VEC2"
  | FLOAT_32_VEC3             =>  "FLOAT_32_VEC3"
  | FLOAT_32_VEC4             =>  "FLOAT_32_VEC4"
  | FLOAT_64                  =>  "FLOAT_64"
  | FLOAT_64_VEC2             =>  "FLOAT_64_VEC2"
  | FLOAT_64_VEC3             =>  "FLOAT_64_VEC3"
  | FLOAT_64_VEC4             =>  "FLOAT_64_VEC4"
  end.
