Je construis une API REST en utilisant Golang mais j'ai quelques problèmes à essayer de Marshalling correctement une tranche de Json. Je me gratte la tête depuis un moment maintenant, même après avoir regardé plusieurs questions et réponses et sur le web.Marshall JSON Tranche à valide JSON
Essentiellement, j'ai une Redis client qui a appelé après un appel -X GET /todo/
régurgite une tranche de todos
[{"content":"test6","id":"46"} {"content":"test5","id":"45"}] //[]string
Maintenant, je veux revenir un donné Response
basé sur le fait que je l'ai trouvé todos
ou pas, donc j'ai un Struct
comme
type Response struct {
Status string
Data []string
}
Ensuite, Si je trouvais un peu todos
je viens Marshal
JSON avec
if(len(todos) > 0){
res := SliceResponse{"Ok", todos}
response, _ = json.Marshal(res)
}
Et, afin d'éliminer \
inutiles dans la réponse, j'utilise bytes.Replace
comme
response = bytes.Replace(response, []byte("\\"), []byte(""), -1)
Enfin, obtenir
{
"Status" : "Ok",
"Data" : [
"{"content":"test6","id":"46"}",
"{"content":"test5","id":"45"}"
]
}
Comme vous pouvez le voir chaque "
avant chaque {
et après chaque }
, à l'exclusion du premier et du dernier, sont cl mal tôt. Alors que le JSON correct serait
{
"Status": "Ok",
"Data": [{
"content ": "test6",
"id ": "46"
}, {
"content ": "test5",
"id ": "45"
}]
}
je réussi à les sortir en trouvant leur index et les couper et aussi avec regex mais je me demandais.
Existe-t-il un moyen propre et meilleur d'y parvenir?
Pourquoi quittez-vous la réponse Redis sous forme de chaînes, et non pas un type plus concret? Votre modèle de données a ces lignes comme des chaînes, donc bien sûr, il doit échapper les citations pour les mettre dans json. Si votre code json implique un traitement de chaîne, vous faites quelque chose de mal. – captncraig
En utilisant [go-redis] (https://github.com/go-redis/redis) et 'todos, _: = c.LRange (" todos ", 0, -1) .Result()' renvoie un ' [] chaîne de caractères – AndreaM16
Vous pourriez peut-être analyser chaque élément à un type struct. Vérification d'une solution alternative maintenant – captncraig