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

Comment ajouter une chaîne JSON valide à un objet

王林
王林avant
2024-02-11 17:51:181007parcourir

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer