我需要将我的Facebook响应转换为JSON对象,或者在我的代码中找到另一种方法来使用响应。
我已经成功打印了我的facebook api使用这个回复日志:
Log.d("Friend Response in DIB: ", FriendResponse.toString());
这给了我这个:
06-09 14:02:33.706: D/Friend Response in DIB:(12421): {Response: responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[{"id":"1402927803328937","name":"Open Graph Test User"},{"id":"1402874766667901","name":"Jane Dickson"}],"paging":{"next":"https:\/\/graph.facebook.com\/v2.0\/277976949048048\/friends?format=json&access_token=CAAKsYnmrEh0BAGhTzCUOr6r3zMH7tt1mouEXrqsAi2fh1nYK1d1w5iSvBQEjCupMB1SA9f8G9GyAm41Bct0qwnXnHr4H81eHRHQaoEUrm9JhqRk2LNN260mZCNJwiuiqxX24zHrBINqZCcyh9VzsCM7PO2UKGfEJOcxmEhAZCl9v8XrcrBIkaeGNRC7zh7hZASZADRMTACaRUZApjkjyAuFxSWflkqMldfISgz4Lvi2gZDZD&limit=5000&offset=5000&__after_id=enc_Aey9afbBKXSo8gtNoFOb5eEu4paCRUYRSWIG0v3nSeCgpCIWIj7O-gHnmemCVpr7hQgH--aTwM6-lZA6MyqEfF6H"}}}, error: null, isFromCache:false}
此信息是正确的,现在我需要将每个返回用户的 id 和名称放入列表视图中自己的列表项。
我有一个代码可以执行此操作,但它使用makeHttpRequest从URL获取信息。
如何将我的Facebook响应类型转换为可以使用此代码而不是makeHttpRequest的类型? :
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_all_videos, "POST", params);
// Check your log cat for JSON reponse
Log.d("All Products: ", json.toString());
Log.d("Friend Response in DIB: ", FriendResponse.toString());
try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// products found
// Getting Array of Products
products = json.getJSONArray(TAG_PRODUCTS);
// looping through All Products
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
等...
所有人都非常感谢!
答案 0 :(得分:1)
查看官方Facebook文档here。
如果您执行异步(Request.executeAsync()
)请求,则会使用Request.Callback
方法onCompleted(Response response)
。如果您按顺序执行请求(请确保您不在主线程上),Response
将是Request.executeAndWait()
方法返回的值。
从Response
对象,您可以致电response.getGraphObject().getInnerJsonObject()
。使用Graph Explorer工具可以更好地了解从API调用中获得的JSON的结构。