ホームページ  >  記事  >  バックエンド開発  >  マーシャリング時に値を変換する

マーシャリング時に値を変換する

PHPz
PHPz転載
2024-02-09 17:36:311183ブラウズ

マーシャリング時に値を変換する

php エディター Strawberry では、グループ化時の値の変換について紹介します。プログラミングにおいて、マーシャリング時の値の変換とは、異なるデータ型間で変換する操作を指します。値を変換すると、特定のニーズを満たすために、あるデータ型の値を別のデータ型に変換できます。たとえば、文字列を整数に変換したり、整数を文字列に変換したりします。値の変換は、プログラミングにおいて非常に一般的かつ重要な操作の 1 つです。変換された値の使用をマスターすると、コードの柔軟性と読みやすさが向上し、潜在的なエラーや問題も回避できます。次の記事では、マーシャリング時に変換値をより深く理解して適用できるように、さまざまなデータ型間の変換方法と考慮事項を詳しく紹介します。

質問内容

以下のコードですが、アンマーシャリング時に名前を変換することは可能でしょうか?実際の JSON 内にあるかどうかに関係なく、常に小文字にしたいとします。

type Person struct {
    FirstName string `json:"first_name"`
    LastName  string `json:"last_name"`
}

func main() {
    jsonText := GetJsonFromSomewhere()
    var v Person
    json.Unmarshal(jsonText, &v)
}

回避策

これを実現する 1 つの方法は、encoding/json パッケージ # インターフェイスから unmarshaler## を実装するカスタム タイプを作成することです。 これはこのインターフェイスへのリンクですunmarshaler を実装する任意の型は、JSON アンマーシャリングを行うときに構造体フィールドの型として使用できます。アンマーシャリングするとき、encoding/json はインターフェイスの unmarshaljson 関数の実装を使用して、json バイトをフィールド タイプに変換します。

したがって、特に文字列値を小文字に変更する

unmarshaljson 関数を作成できます。

これが例です:

リーリー

次に、JSON マップの構造で、

string の代わりにカスタム タイプを使用できます: リーリー

この構造にアンマーシャリングすると、名と姓の値は小文字になります (また、

string として使用するには、これらを string に型変換して戻す必要があることにも注意してください) s)。 リーリー

これは、go プレイグラウンドで実行されている上記のコードです。

以上がマーシャリング時に値を変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。