Я работаю над iOS-приложением, используя среду MonoTouch. Я использую Visual Studio 2010 Professional SP1 с расширением Xamarin.iOS (v1.3.250). Я смог открыть действительный FacebookConnect.FBSession
с помощью FacebookConnect.FBLoginView
без каких-либо проблем, но когда я пытаюсь сделать запрос API Графа, используя FacebookConnect.FBRequest
, я получаю нестандартную строку стиля JSON. Когда я запускаю следующий запрос через Graph API Explorer:Facebook Graph API не возвращается стандарт JSON
me?fields=albums.fields(id,name,cover_photo)
Я получаю следующий ответ:
{
"id": "111111111111111111",
"albums": {
"data": [
{
"id": "111111111111111111",
"name": "Some Album (#1)",
"cover_photo": "111111111111111111",
"created_time": "000-00-00T00:00:00+0000"
},
{
"id": "111111111111111111",
"name": "Some Album (#2)",
"cover_photo": "111111111111111111",
"created_time": "000-00-00T00:00:00+0000"
},
],
"paging": {
"cursors": {
"after": "xxxxxxxx=",
"before": "xxxxxxxx="
}
}
}
}
Теперь все это просто прекрасно, и это то, что я ожидал получить, но когда я делаю тот же самый запрос Graph API из моего приложения, как это:
public static void GetPhotoAlbums(string _userID)
{
// _userID = "me"
mFBRequest = new FBRequest(FBSession.ActiveSession, _userID + "?fields=albums.fields(id,name,cover_photo)");
FBRequestConnection fbRequestConnection = new FBRequestConnection();
fbRequestConnection.AddRequest(mFBRequest, OnPhotoAlbumsReceived);
fbRequestConnection.Start();
}
static void OnPhotoAlbumsReceived(FBRequestConnection _connection, NSObject _result, NSError _error)
{
if (_error == null)
{
Console.WriteLine("FacebookManager.OnPhotoAlbumsReceived() - JSON: " + _result.Description);
object o = JsonConvert.DeserializeObject(_result.Description);
// ...
}
}
Я получаю эту JSON 'как' ответ:
{
albums = {
data = (
{
"cover_photo" = 111111111111111111;
"created_time" = "000-00-00T00:00:00+0000";
id = 111111111111111111;
name = "Some Album (#1)";
},
{
"cover_photo" = 111111111111111111;
"created_time" = "000-00-00T00:00:00+0000";
id = 111111111111111111;
name = "Some Album (#2)";
},
);
paging = {
cursors = {
after = "xxxxxxxx=";
before = "xxxxxxxx=";
};
};
};
"id": "111111111111111111";
}
Я не совсем уверен, как/почему я получаю ответ, отформатированный в нестандартном пути, но, разумеется, я получаю Newtonsoft.Json.JsonReaderException
при попытке десериализации данных, поскольку она не соответствует стандарту правила форматирования (т.е. =
вместо :
отделить пары ключ/значение, ;
вместо ,
отделить элементы контейнера, некоторые клавиши, имеющие котировки в то время как другие этого не делают, и т.д ...)
Я довольно новый на Facebook и JSON в целом, и я действительно в недоумении за то, что происходит с строкой ответа, которую я получаю. Любая помощь, отзывы, идеи очень приветствуются. Благодарю.