S.M_Emamian
S.M_Emamian

Reputation: 17393

how to Parse facebook JSON response

I think the return value from facebook is ambiguous.:

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject object,
                                GraphResponse response) {
                            // Application code

                            try {
                                JSONObject jsonObject = new JSONObject(response.toString());



                            } catch (JSONException e) {
                                e.printStackTrace();
                            }catch (NullPointerException e){

                            }



                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email,gender, birthday");
            request.setParameters(parameters);
            request.executeAsync();

        }



        @Override
        public void onCancel() {
            Log.e("facebook","canceled");
        }

        @Override
        public void onError(FacebookException e) {

            Log.e("facebook error",e.getMessage().toString());
        }
    });

result :

{Response:  responseCode: 200, graphObject: {"id":"931177080295510","birthday":"06\/24\/1991","gender":"male","email":"[email protected]","name":"Masoud Emamian"}, error: null}

how to parse it ?

Upvotes: 1

Views: 642

Answers (2)

Harvi Sirja
Harvi Sirja

Reputation: 2492

do it with this code. it's works for me.

loginButton = (LoginButton) findViewById(R.id.login_button);

List < String > permissionNeeds = Arrays.asList("user_photos", "email",
	"user_birthday", "public_profile", "AccessToken");
loginButton.registerCallback(callbackManager,
new FacebookCallback < LoginResult > () {@Override
	public void onSuccess(LoginResult loginResult) {

		System.out.println("onSuccess");

		String accessToken = loginResult.getAccessToken()
			.getToken();
		Log.i("accessToken", accessToken);

		GraphRequest request = GraphRequest.newMeRequest(
		loginResult.getAccessToken(),
		new GraphRequest.GraphJSONObjectCallback() {@Override
			public void onCompleted(JSONObject object,
			GraphResponse response) {
				Log.i("LoginActivity", response.toString());
				try {
					id = object.getString("id");
					try {
						URL profile_pic = new URL(
							"http://graph.facebook.com/" + id + "/picture?type=large");
						Log.i("profile_pic",
						profile_pic + "");

					} catch (MalformedURLException e) {
						e.printStackTrace();
					}
					name = object.getString("name");
					email = object.getString("email");
					gender = object.getString("gender");
					birthday = object.getString("birthday");
				} catch (JSONException e) {
					e.printStackTrace();
				}
			}
		});
		Bundle parameters = new Bundle();
		parameters.putString("fields",
			"id,name,email,gender, birthday");
		request.setParameters(parameters);
		request.executeAsync();
	}

	@Override
	public void onCancel() {
		System.out.println("onCancel");
	}

	@Override
	public void onError(FacebookException exception) {
		System.out.println("onError");
		Log.v("LoginActivity", exception.getCause().toString());
	}
});

Upvotes: 1

finki
finki

Reputation: 2123

What about using google gson? https://github.com/google/gson

I use it for every Android project where I need to serialize/deserialize json. Give it a try, here are some basic examples for you which should satisfy your needs:

Deserialization:

int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String anotherStr = gson.fromJson("[\"abc\"]", String.class);

If not, check the documentation here: https://sites.google.com/site/gson/gson-user-guide

Upvotes: 1

Related Questions