// Copyright 2024 Redpanda Data, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package parquet import "encoding/json" func scrubJSONNumbers(v any) any { switch t := v.(type) { case json.Number: if i, err := t.Int64(); err == nil { return i } if f, err := t.Float64(); err == nil { return f } return 0 case map[string]any: scrubJSONNumbersObj(t) return t case []any: scrubJSONNumbersArr(t) return t } return v } func scrubJSONNumbersObj(obj map[string]any) { for k, v := range obj { obj[k] = scrubJSONNumbers(v) } } func scrubJSONNumbersArr(arr []any) { for i, v := range arr { arr[i] = scrubJSONNumbers(v) } }