首頁  >  文章  >  後端開發  >  如何向物件添加有效的 json 字串

如何向物件添加有效的 json 字串

王林
王林轉載
2024-02-11 17:51:18964瀏覽

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

php小編魚仔為您介紹如何為物件新增有效的json字串。在開發過程中,我們經常需要將資料轉換為json格式並傳輸給前端或其他系統。然而,有時我們需要在一個已有的json物件中加入新的數據,這就需要我們對json字串進行解析、操作和拼接。在本文中,我們將介紹一種簡單而有效的方法來實現這個功能,幫助您更好地處理json資料。

問題內容

我目前有這樣的東西

type info struct {
    ids        []string `json:"ids"`
    assignment string   `json:"assignment"`
}

現在我的 assignment 是一個從檔案中讀取的大型硬編碼 json 字串。 我正在做這樣的事情

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

但是上面的 body 是不正確的,因為賦值顯示為字串而不是 json 物件。我如何告訴資訊結構 assignment 將是一個 json 字串而不是常規字串,以便 json.marshal 可以很好地使用它?

解決方法

使用類型json.rawmessage,請注意應導出 assignment

type info struct {
    ids        []string        `json:"ids"`
    assignment json.rawmessage `json:"assignment"`
}

範例:

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)
}

以上是如何向物件添加有效的 json 字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除