Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menambah rentetan json yang sah ke objek

Bagaimana untuk menambah rentetan json yang sah ke objek

王林
王林ke hadapan
2024-02-11 17:51:18963semak imbas

如何向对象添加有效的 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"`
}

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)

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"`
}
🎜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)
}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam