25 votes

Comment corriger les erreurs "Invalid JSON" ?

Cela fait presque deux heures que je suis dessus et personne ne semble avoir le même problème que moi. Je doute que ce problème soit résolu mais je vais quand même essayer.

voici le code

/tellraw @p ["Would you like to teleport?",{"text":"Yes","color":"green","bold":"true","clickEvent":{"action":"run_command","value":"/tp @p ~ ~4 ~ "},"hoverEvent":{"action":"show_text","value":{"text":"Confirm"}},{"text":"No","color":"red","bold":"true","clickEvent":{"action":"run_command","value":"/tellraw @p{"text":"Come back when you want to teleport"}"}}}]

cette partie est bien

/tellraw @p ["Would you like to teleport?",{"text":"Yes","color":"green","bold":"true","clickEvent":{"action":"run_command","value":"/tp @p ~ ~4 ~ "},"hoverEvent":{"action":"show_text","value":{"text":"Confirm"}}

c'est juste quand j'ajoute ceci

,{"text":"No","color":"red","bold":"true","clickEvent":{"action":"run_command","value":"/tellraw @p{"text":"Come back when you want to teleport"}"}}}]

Minecraft me donne l'erreur :

JSON non valide à la ligne 1 colonne 203

J'ai essayé de l'espacer et de trouver ce qu'est la colonne 203 mais je n'y arrive pas, je ne sais pas ce que j'ai fait. Quelqu'un a une idée ?

84voto

Robotnik Points 36143

L'option "JSON" (ou J ava s cript O bjet N otation') est la partie de la commande Minecraft entourée de crochets. Les crochets représentent un tableau, et tous les objets principaux (parenthèses) font partie de ce tableau.

Si vous n'avez pas configuré votre tableau ou vos objets de la bonne manière, Minecraft sera incapable d'interpréter la signification de votre commande. Heureusement, il y a quelques outils que vous pouvez utiliser pour vous aider à déboguer cela.


La première chose à faire dans ces situations est de formater votre chaîne JSON pour la rendre plus facile à lire. JSONLint peut être utilisé à cette fin. Collez la partie de votre commande à partir du crochet, exécutez le validateur et copiez le JSON formaté.

Deuxièmement, vous voulez valider votre chaîne JSON. Vous pouvez également utiliser JSONLint pour valider les paramètres, mais je trouve que Formateur et validateur JSON est un peu plus facile à utiliser, car il conserve un historique des modifications, ce qui vous permet de revenir à une version particulière si nécessaire.

Voici la décomposition de votre chaîne JSON et les erreurs. Formateur et validateur JSON trouvé :

JSON Formatter & Validation output

La première chose que je vois, c'est que, dans la valeur de votre ClickEvent, la partie "texte" est mise en surbrillance parce que les guillemets que vous utilisez ici ne sont pas interprétés comme vous le souhaitez. Dans ce cas, vous voulez qu'ils soient traités comme du "texte" à utiliser plus tard dans votre événement de clic, mais pour le moment, l'interpréteur JSON pense qu'ils sont la "fin" de la déclaration JSON.

Vous devez ajouter une barre oblique inverse pour échapper à vos guillemets doubles internes afin qu'ils soient traités comme du texte :

"value": "/tellraw @p{\"text\":\" Come back when you want to teleport \"}"
         ^           | ^     ^  ^                                      ^
          external   |  these ones are 'escaped' because they 
          quote mark |  are 'inside' the external quotes

On va le réparer et le refaire :

Validation Output #2

Maintenant, il ne reste plus qu'une erreur. Cela se produit parce que l'objet au-dessus de le crochet mis en évidence n'est pas correctement fermé par un crochet de fermeture correspondant :

Missing bracket

L'interprète s'attend à ce que vous fermiez l'objet avant d'en commencer un nouveau :

 [
    "Would you like to teleport?", {
        "text": "Yes",
        "color": "green",
        "bold": "true",
        "clickEvent": {
            "action": "run_command",
            "value": "/tp @p ~ ~4 ~ "
        },
        "hoverEvent": {
            "action": "show_text",
            "value": {
                "text": "Confirm"
            }
        }}, 
         ^ add this

En le réexécutant, il semble que l'erreur ait été corrigée pour cet objet, mais il y a maintenant une parenthèse supplémentaire en bas :

Expecting comma or close square bracket

" On attend une virgule ou un ']'. "signifie qu'il s'attend à ce que vous ajoutiez un autre élément (avec une virgule) ou que vous terminiez le tableau (avec un crochet fermé). Le close-curly-bracket n'a aucun sens ici.

Enlevez la boucle supplémentaire, et tada !

Valid JSON

Voici votre tableau JSON valide (vous pouvez le réduire à une seule ligne et rajouter vous-même les éléments de commande). Je ne garantis pas qu'il fera ce que vous voulez. veulent mais au moins elle est valable maintenant.

["Would you like to teleport?", {
    "text": "Yes",
    "color": "green",
    "bold": "true",
    "clickEvent": {
        "action": "run_command",
        "value": "/tp @p ~ ~4 ~ "
    },
    "hoverEvent": {
        "action": "show_text",
        "value": {
            "text": "Confirm"
        }
    }
}, {
    "text": "No",
    "color": "red",
    "bold": "true",
    "clickEvent": {
        "action": "run_command",
        "value": "/tellraw @p{\"text\":\"Come back when you want to teleport\"}"
    }
}]

6voto

Ben Points 39577

Tout d'abord, la "ligne" et les "colonnes" font essentiellement référence aux caractères du texte. Comme tout votre code (la commande) est sur une seule ligne, c'est logique. La colonne, quant à elle, correspond aux "blocs" individuels dans lesquels se trouve chaque caractère. Par exemple.. :

  | 0 | 1 | 2 | 3 | 4 |
1 | H | E | L | L | O |

Comme vous pouvez le constater, le mot commence à la "ligne 1, colonne 0" et se termine à la "ligne 1, colonne 4". Donc, en ce qui concerne votre erreur, le 204e caractère (n'oubliez pas de commencer à 0 !) est le caractère qui fait échouer votre commande. Curieusement, cette erreur fait référence à la section de la commande suivante après la cible (c'est-à-dire @p ) - y compris l'espace.

  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ...
1 |   | { | " | t | e | x | t | " | ...

NOTE : Il se peut que ce ne soit pas un caractère qui existe déjà dans votre commande, il se peut aussi que ce soit un caractère qui est esperado mais n'est pas là.

-1voto

Ryan Points 1

Utilisez ça : Formatte JSON r. Il s'agit d'un outil Web permettant de visualiser, d'éditer, de formater et de valider les fichiers JSON.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X