Le format JSON et les caractères de fin de lignes
Dans un fichier au format JSON, on ne met pas tout ce qu’on veut… Notamment en ce qui concerne les caractères de fin de ligne et les tabulations.
En effet, ceux-ci ne sont pas autorisés à l’intérieur des chaines de caractères. Voici un exemple.
Tout d’abord, pas de caractères spéciaux:
{
"item" : "article"
}
$ rvm use 2.1.0
Using /home/xavier/.rvm/gems/ruby-2.1.0
$ irb
>> require 'json'
=> file = IO.read File.expand_path('./doc.json')
>> JSON.parse file
=> {"item"=>"Article"}
Tout va bien.
Maintenant avec des caractères de fin de lignes échappés:
{
"item" : "article\ndescription\nprice"
}
=> file = IO.read File.expand_path('./doc.json')
=> "{\n \"item\" : \"article\\ndescription\\nprice\"\n}\n"
>> JSON.parse file
=> {"item"=>"article\ndescription\nprice"}
C’est toujours bon.
Par contre, avec des fins de lignes «en dur» dans le fichier:
{
"item" : "Article
description
price"
}
>> file = IO.read File.expand_path('./doc.json')
=> "{\n \"item\" : \"Article\n description\n price\"\n}\n"
>> JSON.parse file
JSON::ParserError: 757: unexpected token at '{
"item" : "Article
description
price"
}
'
Rien ne va plus. C’est pareil avec les tabulations.
Si vous récupérez ce genre de fichier, vous pouvez les nettoyer en remplaçant par exemple les tabulations et les fins de ligne par un espace:
file.gsub(/[\t\n]/, ' ')
À demain.
/ / / / / / / / / /
« Vim - un plugin pour markdown - partie 3 ---//---
Un badge pour la documentation pour vos projets Ruby »