public FunctionInfo deserialize()

in zetasql-toolkit-core/src/main/java/com/google/zetasql/toolkit/catalog/io/JsonCatalogDeserializer.java [261:290]


    public FunctionInfo deserialize(
        JsonElement jsonElement, java.lang.reflect.Type type, JsonDeserializationContext context)
        throws JsonParseException {
      JsonObject jsonObject =
          getAsJsonObject(
              jsonElement,
              "Invalid JSON function: " + jsonElement + ". Functions should be objects.");

      String functionName =
          getFieldAsString(
              jsonObject,
              "name",
              "Invalid JSON function: " + jsonElement + ". Field name should be string.");

      FunctionSignature[] signatures =
          Optional.ofNullable(jsonObject.get("signatures"))
              .map(jsonSignatures -> context.deserialize(jsonSignatures, FunctionSignature[].class))
              .map(FunctionSignature[].class::cast)
              .orElseThrow(
                  () ->
                      new JsonParseException(
                          "Invalid JSON function: " + jsonElement + ". Signatures missing."));

      return FunctionInfo.newBuilder()
          .setNamePath(ImmutableList.of(functionName))
          .setGroup("UDF")
          .setMode(Mode.SCALAR)
          .setSignatures(Arrays.asList(signatures))
          .build();
    }