2014-10-13 30 views
12

jestem coraz unexpected token błąd podczas próby analizować ten ciąg JSONJSON.parse() nieoczekiwany błąd żeton

$scope.feeds = JSON.parse('[{"id":"212216417436_10152811286407437","from":{ "category":"Movie","name":"The Lord of the Rings Trilogy","id":"212216417436"},"story":"The Lord of the Rings Trilogy shared The Hobbit\'s photo.","picture":"https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xaf1/v/t1.0-9/s130x130/1912397_736719376363670_7288336626443028501_n.jpg?oh=a7e83093f61fafa7909ff84263f989e4&oe=54B4481D&__gda__=1420472696_dbd6462629a00e218c849c5ed7b49c44","link":"https://www.facebook.com/TheHobbitMovie/photos/a.291674244201521.63650.160617097307237/736719376363670/?type=1","name":"Timeline Photos","caption":"\"I have the only right.\" \n\nWhat is your favorite Thorin quote from #TheHobbit?","properties":[ { "name":"By","text":"The Hobbit","href":"https://www.facebook.com/TheHobbitMovie?ref=stream"}],"icon":"https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif","actions":[ { "name":"Comment","link":"https://www.facebook.com/212216417436/posts/10152811286407437"},{ "name":"Like","link":"https://www.facebook.com/212216417436/posts/10152811286407437"}],"privacy":{ "value":""},"type":"photo","status_type":"shared_story","object_id":"736719376363670","application":{ "name":"Photos","id":"2305272732"},"created_time":"2014-10-12T21:35:41+0000","updated_time":"2014-10-12T21:37:17+0000"},{ "id":"21785951839_10152794856921840","from":{ "category":"App page","name":"9GAG","id":"21785951839"},"message":"Must NOT let my girlfriend see this!\nhttp://9gag.tv/p/a9OrlY?ref=fbl9\n\nWatch more awesome videos on your phone:\nAndroid ► http://goo.gl/Rbi9FP\niPhone/iPad ► http://goo.gl/NFMm9p","picture":"https://fbexternal-a.akamaihd.net/safe_image.php?d=AQCee84KqIBIdnIX&w=158&h=158&url=http%3A%2F%2Fd1d4324mp0stc8.cloudfront.net%2Fmedia%2Fphoto%2FpPgXmO5QJ_600w_v1.jpg","link":"http://9gag.tv/p/a9OrlY?ref=fbl9","name":"This \"Marry Me\" Lip-Sync Proposal Is So Touching And Amazing | 9GAG.tv","caption":"9gag.tv","description":"This sets the bar pretty high!","icon":"https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif","actions":[ { "name":"Comment","link":"https://www.facebook.com/21785951839/posts/10152794856921840"},{ "name":"Like","link":"https://www.facebook.com/21785951839/posts/10152794856921840"}],"privacy":{ "value":""},"type":"link","status_type":"shared_story","created_time":"2014-10-12T21:15:00+0000","updated_time":"2014-10-12T21:15:46+0000","shares":{ "count":160}}]'); 

Expanded obiekt string:

{ 
    "id":"212216417436_10152811286407437", 
    "from":{ 
     "category":"Movie", 
     "name":"The Lord of the Rings Trilogy", 
     "id":"212216417436" 
    }, 
    "story":"The Lord of the Rings Trilogy shared The Hobbit\'s photo.", 
    "picture":"https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xaf1/v/t1.0-9/s130x130/1912397_736719376363670_7288336626443028501_n.jpg?oh=a7e83093f61fafa7909ff84263f989e4&oe=54B4481D&__gda__=1420472696_dbd6462629a00e218c849c5ed7b49c44", 
    "link":"https://www.facebook.com/TheHobbitMovie/photos/a.291674244201521.63650.160617097307237/736719376363670/?type=1", 
    "name":"Timeline Photos", 
    "caption":"\"I have the only right.\" \n\nWhat is your favorite Thorin quote from #TheHobbit?", 
    "properties":[ 
     { 
     "name":"By", 
     "text":"The Hobbit", 
     "href":"https://www.facebook.com/TheHobbitMovie?ref=stream" 
     } 
    ], 
    "icon":"https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif", 
    "actions":[ 
     { 
     "name":"Comment", 
     "link":"https://www.facebook.com/212216417436/posts/10152811286407437" 
     }, 
     { 
     "name":"Like", 
     "link":"https://www.facebook.com/212216417436/posts/10152811286407437" 
     } 
    ], 
    "privacy":{ 
     "value":"" 
    }, 
    "type":"photo", 
    "status_type":"shared_story", 
    "object_id":"736719376363670", 
    "application":{ 
     "name":"Photos", 
     "id":"2305272732" 
    }, 
    "created_time":"2014-10-12T21:35:41+0000", 
    "updated_time":"2014-10-12T21:37:17+0000" 
}, 
{ 
    "id":"21785951839_10152794856921840", 
    "from":{ 
     "category":"App page", 
     "name":"9GAG", 
     "id":"21785951839" 
    }, 
    "message":"Must NOT let my girlfriend see this!\nhttp://9gag.tv/p/a9OrlY?ref=fbl9\n\nWatch more awesome videos on your phone:\nAndroid ► http://goo.gl/Rbi9FP\niPhone/iPad ► http://goo.gl/NFMm9p", 
    "picture":"https://fbexternal-a.akamaihd.net/safe_image.php?d=AQCee84KqIBIdnIX&w=158&h=158&url=http%3A%2F%2Fd1d4324mp0stc8.cloudfront.net%2Fmedia%2Fphoto%2FpPgXmO5QJ_600w_v1.jpg", 
    "link":"http://9gag.tv/p/a9OrlY?ref=fbl9", 
    "name":"This \"Marry Me\" Lip-Sync Proposal Is So Touching And Amazing | 9GAG.tv", 
    "caption":"9gag.tv", 
    "description":"This sets the bar pretty high!", 
    "icon":"https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif", 
    "actions":[ 
     { 
     "name":"Comment", 
     "link":"https://www.facebook.com/21785951839/posts/10152794856921840" 
     }, 
     { 
     "name":"Like", 
     "link":"https://www.facebook.com/21785951839/posts/10152794856921840" 
     } 
    ], 
    "privacy":{ 
     "value":"" 
    }, 
    "type":"link", 
    "status_type":"shared_story", 
    "created_time":"2014-10-12T21:15:00+0000", 
    "updated_time":"2014-10-12T21:15:46+0000", 
    "shares":{ 
     "count":160 
    } 
} 
+0

Ten błąd jest spowodowany przez próbuje zanalizować nieprawidłową JSON, a co Wysłałeś nieważne json zgodnie z [JsonLint] (http://jsonlint.com/) –

+0

o, to jest prawidłowy JSON. JsonLint tak powiedział. – Kanishka

+1

Nie, to dlatego, że prawdopodobnie opublikowałeś go jako ciąg, ale w rzeczywistości powinieneś opublikować tablicę. –

Odpowiedz

29

zweryfikowania ciąg json. Jeśli jest ok spróbuj tego:

var jsonStr="your json string"; 
var json=JSON.stringify(jsonStr); 
json=JSON.parse(json) 
+3

stringify zrobił magię. dzięki – Kanishka

+6

Konwertuje to z ciągu JSON na ciąg JSON, a następnie z powrotem na ciąg JSON. To nie będzie pomyślnie parsować JSON i jest równoważne 'var json =" twoim ciągiem json ";' – Quentin

+0

, który nie jest prawdziwy. stringify po prostu konwertuje dane wejściowe na tekst JSON i przechowuje tekst JSON w ciągu znaków. –

1

Kiedy piszesz ciąg w javascript, katalogu \ traktuje jako ucieczkę charakter, podczas gdy jest to potrzebne w json, aby rzeczywiście być \ i nie uciekając charakter.

Trzeba zmienić \" do \\" i \n do \\n, zachowując \' ponieważ jest to już znak ucieczki i powinien być analizowany w porządku