Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menukar Snake-Case kepada CamelCase Keys dalam JSON menggunakan Go?

Bagaimana untuk Menukar Snake-Case kepada CamelCase Keys dalam JSON menggunakan Go?

Mary-Kate Olsen
Lepaskan: 2024-10-28 17:07:29
asal
665 orang telah melayarinya

How to Convert Snake-Case to CamelCase Keys in JSON Using Go?

Menukar Snake-Case kepada CamelCase Keys dalam JSON

Dalam Go, menukar kunci dalam dokumen JSON daripada snake_case kepada camelCase boleh mencabar, terutamanya apabila JSON bersarang dan mungkin mengandungi jenis yang besar atau antara muka{} sewenang-wenangnya.

Kaedah 1: Menggunakan Struktur Berbeza dengan Teg

Untuk kes penukaran mudah, anda boleh memanfaatkan keupayaan Go untuk menentukan struktur yang berbeza dengan tag yang berbeza-beza. Nyahmarshal JSON ke dalam struct sumber dengan teg snake_case, kemudian tukarkannya secara remeh kepada struct sasaran dengan teg camelCase.

<code class="go">import (
    "encoding/json"
)

// Source struct with snake_case tags
type ESModel struct {
    AB string `json:"a_b"`
}

// Target struct with camelCase tags
type APIModel struct {
    AB string `json:"aB"`
}

func ConvertKeys(json []byte) []byte {
    var x ESModel
    json.Unmarshal(b, &x)

    b, _ = json.MarshalIndent(APIModel(x), "", "  ")
    return b
}</code>
Salin selepas log masuk

Kaedah 2: Menukar Kekunci Peta Secara Rekursif

Untuk dokumen JSON yang lebih kompleks, anda boleh cuba unmarshal ke dalam peta. Jika berjaya, gunakan fungsi penukaran kunci secara rekursif pada semua kunci dan nilai dalam peta.

<code class="go">import (
    "bytes"
    "encoding/json"
    "fmt"
    "strings"
)

func ConvertKeys(j json.RawMessage) json.RawMessage {
    m := make(map[string]json.RawMessage)
    if err := json.Unmarshal([]byte(j), &m); err != nil {
        // Not a JSON object
        return j
    }

    for k, v := range m {
        fixed := fixKey(k)
        delete(m, k)
        m[fixed] = convertKeys(v)
    }

    b, err := json.Marshal(m)
    if err != nil {
        return j
    }

    return json.RawMessage(b)
}

func fixKey(key string) string {
    return strings.ToUpper(key)
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menukar Snake-Case kepada CamelCase Keys dalam JSON menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan