Maison >développement back-end >Golang >Comment supprimer les caractères indésirables entre les clés et les valeurs en JSON ?

Comment supprimer les caractères indésirables entre les clés et les valeurs en JSON ?

WBOY
WBOYavant
2024-02-09 17:15:071124parcourir

Comment supprimer les caractères indésirables entre les clés et les valeurs en JSON ?

l'éditeur php Strawberry est là pour partager avec vous une astuce sur le traitement JSON : Comment supprimer les caractères inutiles entre les clés et les valeurs en JSON ? Lors du traitement des données JSON, nous devons souvent nettoyer certains caractères inutiles pour améliorer la lisibilité des données et réduire la taille de la transmission des données. En utilisant les fonctions et expressions régulières associées à PHP, nous pouvons facilement supprimer les caractères inutiles entre les clés et les valeurs dans JSON, rendant les données plus ordonnées et standardisées. Ensuite, je présenterai en détail les étapes de fonctionnement spécifiques et la mise en œuvre du code.

Contenu de la question

J'ai JSON comme ceci : {"key1": "value1", n n "key2": "value2nwithnewline"}

Je veux :

  1. Supprimer nn
  2. Préserver les caractères value2n et newline.

J'aurai donc un JSON valide.

J'ai essayé :regex mais je n'ai pas compris comment spécifier en dehors des clés et des valeurs.

Et ça :

package main

import (
    "bytes"
    "fmt"
)

func main() {
    jsonStr := `{"key1": "value1", \n \n "key2": "value2\nwithnewline"}`
    var cleaned bytes.Buffer
    quoteCount := 0

    for i := 0; i < len(jsonStr); i++ {
        if jsonStr[i] == '"' {
            quoteCount++
        }

        if quoteCount%2 == 0 && jsonStr[i] != '\n' {
            cleaned.WriteByte(jsonStr[i])
        } else if quoteCount%2 == 1 {
            cleaned.WriteByte(jsonStr[i])
        }
    }

    fmt.Println(cleaned.String())
}

Lien Go Playground : https://go.dev/play/p/zvNSCuE4SjQ

Cela ne fonctionne pas car cela peut n en fait être nn 实际上是 n

解决方法

鉴于您问题的参数,您可以使用 strings.ReplaceAll

Solution de contournement

cleaned := strings.ReplaceAll(input, "\n \n ", "")Compte tenu des paramètres de votre question, vous pouvez utiliser strings.ReplaceAll Remplacez tout nn :

cleaned.WriteByte(jsonStr[i])

🎜Si vous souhaitez continuer à utiliser votre stratégie actuelle, vous rencontrerez quelques problèmes. L'un d'eux est que quelle que soit votre condition, vous écrivez toujours une chaîne : 🎜 se produit dans vos cas if et else. 🎜

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