2016-03-26 16 views
1

Ich habe ergab folgende JSON in einer Antwort:Warum gibt Ruby 2.3.0 JSON.parse einen unerwarteten Token-Fehler?

"{\n \"notices\": [\n {\n  \"id\": \"1234\",\n  \"projectId\": 1,\n  \"groupId\": \"55\",\n  \"createdAt\": \"2014-10-22T03:00:00.407Z\"\n },\n {\n  \"id\": \"1234\",\n  \"projectId\": 1,\n  \"groupId\": \"55\",\n  \"createdAt\": \"2014-10-22T03:00:00.407Z\"\n },\n ],\n \"count\": 2\n}\n" 

In irb für Ruby 2.3.0, wenn ich JSON.parse(x) auf der obigen Antwort verwenden, erhalte ich:

JSON::ParserError: 419: unexpected token at '], 
    "count": 2 
}' 

obwohl http://jsonlint.com sagt es ist gültiger JSON. Was mache ich falsch?

+0

Interessant. Der YAML-Parser, der auch JSON parsen kann, akzeptiert die Zeichenfolge, ohne sich zu beschweren. –

Antwort

2

Es scheint ein Komma nach dem letzten Objekt in Ihrem Array ein Problem zu sein mit mit:

\"createdAt\": \"2014-10-22T03:00:00.407Z\"\n },\n ],\n \"count\": 2\n}\n" 
               ^This comma 

Nach davon loszuwerden, habe ich die Parse wie erwartet zu funktionieren:

JSON.parse("{\n \"notices\": [\n {\n  \"id\": \"1234\",\n  \"projectId\": 1,\n  \"groupId\": \"55\",\n  \"createdAt\": \"2014-10-22T03:00:00.407Z\"\n },\n {\n  \"id\": \"1234\",\n  \"projectId\": 1,\n  \"groupId\": \"55\",\n  \"createdAt\": \"2014-10-22T03:00:00.407Z\"\n } ],\n \"count\": 2\n}\n") 
=> {"notices"=>[{"id"=>"1234", "projectId"=>1, "groupId"=>"55", "createdAt"=>"2014-10-22T03:00:00.407Z"}, {"id"=>"1234", "projectId"=>1, "groupId"=>"55", "createdAt"=>"2014-10-22T03:00:00.407Z"}], "count"=>2} 
+0

oh, mein Schlechter, du zeigst auf das Objekt, aber ich zeige auf das Komma :) –

+0

Heh, hab das nur etwas deutlicher gemacht :) –

Verwandte Themen