Bagaimana untuk menambah rentetan json yang sah ke objek

王林
Lepaskan: 2024-02-11 17:51:18
ke hadapan
1015 orang telah melayarinya

如何向对象添加有效的 json 字符串

editor php Yuzai akan memperkenalkan anda cara menambah rentetan json yang sah pada objek. Semasa proses pembangunan, kita selalunya perlu menukar data ke dalam format json dan menghantarnya ke bahagian hadapan atau sistem lain. Walau bagaimanapun, kadangkala kita perlu menambah data baharu pada objek json sedia ada, yang memerlukan kita menghuraikan, mengendalikan dan menyambung rentetan json. Dalam artikel ini, kami akan memperkenalkan kaedah yang mudah dan berkesan untuk melaksanakan fungsi ini untuk membantu anda memproses data json dengan lebih baik.

Kandungan soalan

Saya pada masa ini mempunyai sesuatu seperti ini

type info struct {
    ids        []string `json:"ids"`
    assignment string   `json:"assignment"`
}
Salin selepas log masuk

Sekarang assignment saya ialah rentetan json berkod keras yang besar dibaca daripada fail. Saya sedang melakukan sesuatu seperti ini

r := Info{Ids: names, assignment: existingJsonString}
body, _ := json.Marshal(r)
Salin selepas log masuk

Tetapi body di atas tidak betul kerana tugasan muncul sebagai rentetan dan bukannya objek json. Bagaimanakah cara saya memberitahu struktur maklumat body 是不正确的,因为赋值显示为字符串而不是 json 对象。我如何告诉信息结构 assignment 将是一个 json 字符串而不是常规字符串,以便 json.marshal 可以很好地使用它?

解决方法

使用类型json.rawmessage,请注意应导出 assignment sebagai rentetan json dan bukannya rentetan biasa supaya json.marshal boleh berfungsi dengan baik dengannya?

Penyelesaian

🎜Gunakan jenis json.rawmessage, sila ambil perhatian bahawa ia harus dieksport 🎜 🎜
type info struct {
    ids        []string        `json:"ids"`
    assignment json.rawmessage `json:"assignment"`
}
Salin selepas log masuk
🎜Contoh: 🎜
package main

import (
    "encoding/json"
    "fmt"
)

type Info struct {
    Ids        []string        `json:"ids"`
    Assignment json.RawMessage `json:"assignment"`
}

func main() {
    r := Info{
        Ids:        []string{"id1", "id2"},
        Assignment: json.RawMessage(`{"a":1,"b":"str"}`),
    }
    body, err := json.Marshal(r)
    if err != nil {
        panic(err)
    }

    fmt.Printf("%s\n", body)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menambah rentetan json yang sah ke objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan