ホームページ >バックエンド開発 >Golang >Go の浮動小数点数の JSON 出力で末尾のゼロを保持する方法は?

Go の浮動小数点数の JSON 出力で末尾のゼロを保持する方法は?

DDD
DDDオリジナル
2024-11-28 11:56:14480ブラウズ

How to Preserve Trailing Zeros in JSON Output for Go's Floating-Point Numbers?

浮動小数点数の JSON 出力で末尾のゼロを保持する

Go では、シリアル化に json.Marshal() 関数がよく使用されます。データ構造を JSON 形式に変換します。ただし、変換プロセス中に浮動小数点数から末尾のゼロが削除される傾向があります。これは、使用するアプリケーションが数値の末尾にゼロがあることを予期している場合に問題になる可能性があります。

この問題に対処する 1 つの方法は、json.Marshaler インターフェイスを実装するカスタム浮動小数点型を作成することです。これにより、型を JSON にシリアル化する方法を定義できます。実装例を次に示します。

このコード内:

  • KeepZero 型は、ネイティブ float64 型をラップする新しい浮動小数点型です。
  • MarshalJSON メソッドは、KeepZero の json.Marshaler インターフェイスを実装します。 type.
  • strconv.FormatFloat 関数は、浮動小数点数を文字列としてフォーマットするために使用されます。数値が整数の場合 (つまり、小数部分がない場合)、文字列は末尾のゼロを保持するために小数点以下 1 桁でフォーマットされます。それ以外の場合、文字列は固定小数点なしで書式設定されます。

KeepZero 型を使用するには、データ構造内の元の float64 フィールドを KeepZero フィールドに置き換えます。例:

Pt オブジェクトで json.Marshal を呼び出すと、Value フィールドはカスタム MarshalJSON メソッドを使用してシリアル化され、必要に応じて末尾のゼロが保持されます。

これにより、次の JSON 出力が生成されます:

このソリューションでは、末尾の JSON 出力を保持できます。使用するアプリケーションの要求に応じて、浮動小数点数を JSON にシリアル化するときに浮動小数点数にゼロを含めます。

以上がGo の浮動小数点数の JSON 出力で末尾のゼロを保持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。