{"id":19,"date":"2015-01-22T18:04:08","date_gmt":"2015-01-22T18:04:08","guid":{"rendered":"http:\/\/habett.fr\/wordpress\/?p=19"},"modified":"2015-01-22T18:04:08","modified_gmt":"2015-01-22T18:04:08","slug":"json-is-fragile","status":"publish","type":"post","link":"https:\/\/habett.fr\/blog\/2015\/01\/json-is-fragile\/","title":{"rendered":"JSON is fragile"},"content":{"rendered":"<p>La livebox Orange bugge. Apr\u00e8s avoir fait le tour de mes browsers, m\u00eame ceux du c\u00f4t\u00e9 obscur, j&rsquo;ai cherch\u00e9 dans les forums pour voir si d&rsquo;autres avaient de probl\u00e8me d&rsquo;interface de configuration indisponible sur livebox play. Me sentant d\u00e9cid\u00e9ment tr\u00e8s seul, j&rsquo;ai sorti mon firebug et me suis lanc\u00e9 dans un gros travail d&rsquo;inspection.<\/p>\n<p>Lors de <span class=\"caps\"><a class=\"zem_slink\" title=\"JSON\" href=\"http:\/\/json.org\/\" rel=\"homepage\">JSON<\/a>.<\/span>parse il me dit:<br \/>\n<span class=\"objectBox objectBox-text \">[bus] <a class=\"zem_slink\" title=\"Exception handling\" href=\"http:\/\/en.wikipedia.org\/wiki\/Exception_handling\" rel=\"wikipedia\">error handling<\/a> ajax request<\/span><\/p>\n<div class=\"errorTitle focusRow subLogRow \"><span class=\"errorMessage \">SyntaxError: <span class=\"caps\">JSON.<\/span>parse: bad <a class=\"zem_slink\" title=\"Control character\" href=\"http:\/\/en.wikipedia.org\/wiki\/Control_character\" rel=\"wikipedia\">control character<\/a> in <a class=\"zem_slink\" title=\"String literal\" href=\"http:\/\/en.wikipedia.org\/wiki\/String_literal\" rel=\"wikipedia\">string literal<\/a><\/span><\/div>\n<p>Ce sur plusieurs pages, les autres browsers loguant des choses tout \u00e0 fait similaires.<\/p>\n<p>Le <span class=\"caps\">JSON<\/span>\u00a0 en question ne semblait pas suspect dans la console mais, \u00e0 le lire, observe que l&rsquo;erreur de situe lorsqu&rsquo;il r\u00e9cup\u00e8re les infos sur les devices connect\u00e9s. Un petit coup de <span class=\"caps\">JSONL<\/span>int (http:\/\/jsonlint.com\/) me r\u00e9v\u00e8le bel et bien une erreur dans la section relative \u00e0 mon smart screen <a class=\"zem_slink\" title=\"Samsung Electronics\" href=\"http:\/\/samsung.com\/\" rel=\"homepage\">Samsung<\/a>. J&rsquo;ai cru au d\u00e9but \u00e0 un probl\u00e8me d&rsquo;encodage mais rien d&rsquo;\u00e9vident \u00e0 la vue.<\/p>\n<p>Ce n&rsquo;est qu&rsquo;en copiant la ligne dans un \u00e9diteur de texte orient\u00e9 caract\u00e8re comme pspad que je n&rsquo;ai enfin compris quoi qu&rsquo;en copiant la ligne dans mon terminal j&rsquo;avais d\u00e9j\u00e0 un d\u00e9but de r\u00e9ponse.<\/p>\n<p>\u00ab\u00a0userClassID\u00a0\u00bb: \u00ab\u00a0\u00a0\u00bb,<\/p>\n<p>L\u00e0 on ne devine rien mais un prenant le m\u00eame segment dans un \u00e9diteur pr\u00e9cis (<a class=\"zem_slink\" title=\"Sublime Text\" href=\"http:\/\/en.wikipedia.org\/wiki\/Sublime_Text\" rel=\"wikipedia\">Sublime Text 2<\/a> sur mon mac) je vois non des doubles quotes vides mais contenant un caract\u00e8re de contr\u00f4le S0H !! Je ne comprends pas vraiment la notation de Sublime mais il s&rsquo;agit d&rsquo;un caract\u00e8re de contr\u00f4le que les gars d&rsquo;<a href=\"http:\/\/orange.fr\/\">Orange.fr<\/a> ont oubli\u00e9 de filtrer, reste \u00e0 savoir lequel. SOH est en fait le premier caract\u00e8re de la table ascii, Start of Header pour \u00eatre pr\u00e9cis.<\/p>\n<p>Je ne sais pas trop comment contourner ce bug pour le moment mais je l&rsquo;ai identifi\u00e9. Avec du XML l&rsquo;erreur aurait \u00e9t\u00e9 la m\u00eame mais cela aurait \u00e9t\u00e9 \u00e0 mon avis plus simple \u00e0 identifier.<\/p>\n<div class=\"zemanta-pixie\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>La livebox Orange bugge. Apr\u00e8s avoir fait le tour de mes browsers, m\u00eame ceux du c\u00f4t\u00e9 obscur, j&rsquo;ai cherch\u00e9 dans les forums pour voir si d&rsquo;autres avaient de probl\u00e8me d&rsquo;interface de configuration indisponible sur livebox play. Me sentant d\u00e9cid\u00e9ment tr\u00e8s seul, j&rsquo;ai sorti mon firebug et me suis lanc\u00e9 dans un gros travail d&rsquo;inspection. Lors &hellip; <a href=\"https:\/\/habett.fr\/blog\/2015\/01\/json-is-fragile\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">JSON is fragile<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-19","post","type-post","status-publish","format-standard","hentry","category-archives"],"_links":{"self":[{"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/posts\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/comments?post=19"}],"version-history":[{"count":1,"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/posts\/19\/revisions"}],"predecessor-version":[{"id":20,"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/posts\/19\/revisions\/20"}],"wp:attachment":[{"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/media?parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/categories?post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/habett.fr\/blog\/wp-json\/wp\/v2\/tags?post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}