From 93c301e05b3a417442caf9215b0ae74402bfaeff Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Fri, 19 Jul 2019 22:25:44 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oauth/request/AuthLinkedinRequest.java | 10 +++---- .../java/me/zhyd/oauth/utils/CustomTest.java | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java index b552256..7a636ac 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java @@ -4,6 +4,7 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONPath; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.enums.AuthUserGender; @@ -120,13 +121,8 @@ public class AuthLinkedinRequest extends AuthDefaultRequest { .execute(); JSONObject emailObj = JSONObject.parseObject(emailResponse.body()); this.checkResponse(emailObj); - if (emailObj.containsKey("elements")) { - email = emailObj.getJSONArray("elements") - .getJSONObject(0) - .getJSONObject("handle~") - .getString("emailAddress"); - } - return email; + Object obj = JSONPath.eval(emailObj, "$['elements'][0]['handle~']['emailAddress']"); + return null == obj ? null : (String) obj; } private String getUserName(JSONObject userInfoObject, String nameKey) { diff --git a/src/test/java/me/zhyd/oauth/utils/CustomTest.java b/src/test/java/me/zhyd/oauth/utils/CustomTest.java index eab7ddd..b7a7c65 100644 --- a/src/test/java/me/zhyd/oauth/utils/CustomTest.java +++ b/src/test/java/me/zhyd/oauth/utils/CustomTest.java @@ -1,7 +1,16 @@ package me.zhyd.oauth.utils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONPath; import org.junit.Test; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author yadong.zhang (yadong.zhang0415(a)gmail.com) * @version 1.0 @@ -60,4 +69,22 @@ public class CustomTest { // } return stackTrace[2].getMethodName(); } + + @Test + public void jsonpath(){ + List>> list = new ArrayList<>(); + + Map> map = new HashMap<>(); + Map node = new HashMap<>(); + node.put("emailAddress", "xxxx"); + map.put("handle~", node); + list.add(map); + + + Map master = new HashMap<>(); +// master.put("elements", list); + JSONObject emailObj = JSONObject.parseObject(JSON.toJSONString(master)); + Object object = JSONPath.eval(emailObj, "$['elements'][0]['handle~']['emailAddress']"); + System.out.println(object); + } } -- GitLab