Maison > développement back-end > Golang > Comment ajouter une chaîne JSON valide à un objet

Comment ajouter une chaîne JSON valide à un objet

王林
Libérer: 2024-02-11 17:51:18
avant
1029 Les gens l'ont consulté

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

L'éditeur php Yuzai vous présentera comment ajouter une chaîne json valide à un objet. Pendant le processus de développement, nous devons souvent convertir les données au format json et les transmettre au front-end ou à d'autres systèmes. Cependant, nous devons parfois ajouter de nouvelles données à un objet json existant, ce qui nous oblige à analyser, exploiter et épisser des chaînes json. Dans cet article, nous présenterons une méthode simple et efficace pour implémenter cette fonction afin de vous aider à mieux traiter les données json.

Contenu des questions

J'ai actuellement quelque chose comme ça

type info struct {
    ids        []string `json:"ids"`
    assignment string   `json:"assignment"`
}
Copier après la connexion

À l'heure actuelle, mon assignment est une grande chaîne JSON codée en dur lue à partir d'un fichier. Je fais quelque chose comme ça

r := Info{Ids: names, assignment: existingJsonString}
body, _ := json.Marshal(r)
Copier après la connexion

Mais le body ci-dessus est incorrect car l'affectation apparaît sous la forme d'une chaîne au lieu d'un objet json. Comment puis-je dire à la structure d'information body 是不正确的,因为赋值显示为字符串而不是 json 对象。我如何告诉信息结构 assignment 将是一个 json 字符串而不是常规字符串,以便 json.marshal 可以很好地使用它?

解决方法

使用类型json.rawmessage,请注意应导出 assignment d'être une chaîne json au lieu d'une chaîne normale afin que json.marshal puisse bien fonctionner avec elle ?

Solution

🎜Utilisez le type json.rawmessage, veuillez noter qu'il doit être exporté 🎜 : 🎜
type info struct {
    ids        []string        `json:"ids"`
    assignment json.rawmessage `json:"assignment"`
}
Copier après la connexion
🎜Exemple : 🎜
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)
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal