Анализ потока данных приводит к ошибке «Недопустимый символ» в WinJS - PullRequest
2 голосов
/ 13 марта 2012

Я вызываю фид данных Flickr в WinJS для Windows 8 Metro App.Когда я пытаюсь проанализировать ответ канала с помощью JSON.parse, я получаю ошибку Invalid Character.Вот мой код:

function processPhotos(result)
{
    var photoData = JSON.parse(result.responseText);
    //bind here
    data.items.forEach(function (item) {
        list.push(item);
    });
}

function processError(error) {
    console.log(error.message);
}

WinJS.xhr({ url: "http://api.flickr.com/services/feeds/photos_public.gne?format=json" }).then(processPhotos, processError);
WinJS.Namespace.define("data", {
    items: groupedItems,
    groups: groupedItems.groups,
    getItemsFromGroup: getItemsFromGroup
});

Result.ResponseText содержит ожидаемое содержимое.

Кто-нибудь еще сталкивался с этим?

Ответы [ 2 ]

4 голосов
/ 23 августа 2012

Я должен был сделать это, чтобы очистить некоторые недопустимые символы в тексте ответа.(предложено мне https://stackoverflow.com/users/200698/devhammer)

var cleansed = result.responseText.replace(/\\'/g, "'");
var photoData = JSON.parse(cleansed).d;
3 голосов
/ 13 марта 2012

Если вы посмотрите на данные, вы заметите, что это не JSON, а JSONP . Вот почему JSON.parse() не может его обработать. Если вы хотите нормальный JSON, согласно документации , вы должны использовать nojsoncallback=1:

http://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1
...