2017-10-20 29 views
0

J'essaye de créer un éditeur où j'envoie le code à l'API HackerEarth pour la compilation sous forme d'objet JSON. J'utilise PostMan pour vérifier l'API . L'objet JSON est la suivante:comment est-ce que je peux passer l'extrait de code comme chaîne multilignée dans l'objet json

{ 
"code":`#include<stdio.h> 
     int main() 
     { 
     printf("hello world"); 
     }`, 
"language":"C" 
} 

L'erreur que je suis arrivé est la suivante:

SyntaxError: Unexpected token 
in JSON at position 29 
at JSON.parse (<anonymous>) 
at parse (C:\Users\GURU\Documents\Project-master\node_modules\body-parser\lib\types\json.js:89:19) 
at C:\Users\GURU\Documents\Project-master\node_modules\body-parser\lib\read.js:121:18 
at invokeCallback (C:\Users\GURU\Documents\Project-master\node_modules\raw-body\index.js:224:16) 
at done (C:\Users\GURU\Documents\Project-master\node_modules\raw-body\index.js:213:7) 
at IncomingMessage.onEnd (C:\Users\GURU\Documents\Project-master\node_modules\raw-body\index.js:273:7) 
at emitNone (events.js:105:13) 
at IncomingMessage.emit (events.js:207:7) 
at endReadableNT (_stream_readable.js:1047:12) 
at _combinedTickCallback (internal/process/next_tick.js:102:11) 
at process._tickCallback (internal/process/next_tick.js:161:9) 

S'il vous plaît aider! Merci d'avance!

+0

Ce n'est pas JSON, mais un objet JavaScript. Si vous utilisez 'JSON.stringify (obj)', alors il devient JSON. Le tag mongodb est cependant un peu inquiétant, car "qu'est-ce que vous essayez vraiment de faire?". Becuase MongoDB ne stocke pas non plus de "chaînes JSON". Les objets JavaScript simples sont analysés par BSON par le pilote. Pas de JSON ici. –

Répondre

1

Vous avez principalement une mauvaise utilisation du conteneur JSON. Les chaînes sont toujours doubles. Newline doit être échappée. Les doubles quotes doivent être échappées.

{ 
"code":"#include <stdio.h> int main() { printf(\"hello world\"); }", 
"language":"C" 
} 

Utilisez RFC 4627 pour la connaissance ou un JSON validator plus profond.

+0

Je ne veux pas que ce soit dans une seule ligne, je veux le transmettre à l'API de la même manière @Stanislav Sokol – gurucharan

+0

@gurucharan Vos nouvelles lignes seront encodées (probablement comme \ n) et comme dit cette réponse - vous devez utiliser des guillemets doubles pour être valide. Le backtick n'est pas un délimiteur de chaîne valide – Jamiec

+0

Je recommande vivement la lecture de [JSON] (http://json.org/). Il est clairement indiqué que les sauts de ligne ne sont pas autorisés, vous devez donc échapper à vos sauts de ligne avec '\ n' –