Skip to content

Commit 761e882

Browse files
committed
binarywang#928 修复卡券拉取用户信息接口报空指针问题
1 parent bdd7299 commit 761e882

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMemberCardUserInfoResultGsonAdapter.java

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,71 @@
11
package me.chanjar.weixin.mp.util.json;
22

3-
import com.google.gson.*;
3+
import java.lang.reflect.Type;
4+
5+
import com.google.gson.JsonArray;
6+
import com.google.gson.JsonDeserializationContext;
7+
import com.google.gson.JsonDeserializer;
8+
import com.google.gson.JsonElement;
9+
import com.google.gson.JsonObject;
10+
import com.google.gson.JsonParseException;
411
import me.chanjar.weixin.common.util.json.GsonHelper;
512
import me.chanjar.weixin.mp.bean.membercard.MemberCardUserInfo;
613
import me.chanjar.weixin.mp.bean.membercard.NameValues;
714
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;
815

9-
import java.lang.reflect.Type;
16+
import static me.chanjar.weixin.common.util.json.GsonHelper.getString;
1017

1118
/**
1219
* Json to WxMpMemberCardUserInfoResult 的转换适配器
1320
*
14-
* @author YuJian(mgcnrx11@gmail.com)
21+
* @author YuJian(mgcnrx11 @ gmail.com)
1522
* @version 2017/7/11
1623
*/
1724
public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer<WxMpMemberCardUserInfoResult> {
1825

1926
@Override
20-
public WxMpMemberCardUserInfoResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
27+
public WxMpMemberCardUserInfoResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context)
28+
throws JsonParseException {
2129
WxMpMemberCardUserInfoResult result = new WxMpMemberCardUserInfoResult();
2230

2331
JsonObject jsonObject = jsonElement.getAsJsonObject();
2432

25-
result.setOpenId(GsonHelper.getString(jsonObject, "openid"));
26-
result.setErrorCode(GsonHelper.getString(jsonObject, "errcode"));
27-
result.setErrorMsg(GsonHelper.getString(jsonObject, "errmsg"));
28-
result.setNickname(GsonHelper.getString(jsonObject, "nickname"));
29-
result.setMembershipNumber(GsonHelper.getString(jsonObject, "membership_number"));
33+
result.setOpenId(getString(jsonObject, "openid"));
34+
result.setErrorCode(getString(jsonObject, "errcode"));
35+
result.setErrorMsg(getString(jsonObject, "errmsg"));
36+
result.setNickname(getString(jsonObject, "nickname"));
37+
result.setMembershipNumber(getString(jsonObject, "membership_number"));
3038
result.setBonus(GsonHelper.getInteger(jsonObject, "bonus"));
3139
result.setBalance(GsonHelper.getDouble(jsonObject, "balance"));
32-
result.setSex(GsonHelper.getString(jsonObject, "sex"));
33-
result.setUserCardStatus(GsonHelper.getString(jsonObject, "user_card_status"));
40+
result.setSex(getString(jsonObject, "sex"));
41+
result.setUserCardStatus(getString(jsonObject, "user_card_status"));
3442
result.setHasActive(GsonHelper.getBoolean(jsonObject, "has_active"));
3543

3644
JsonObject userInfoJsonObject = jsonObject.getAsJsonObject("user_info");
37-
MemberCardUserInfo cardUserInfo = new MemberCardUserInfo();
45+
if (userInfoJsonObject == null) {
46+
return result;
47+
}
3848

3949
JsonArray commonFieldListObj = userInfoJsonObject.getAsJsonArray("common_field_list");
4050
NameValues[] commonFieldListValues = new NameValues[commonFieldListObj.size()];
4151
for (int i = 0; i < commonFieldListObj.size(); i++) {
4252
JsonObject commonField = commonFieldListObj.get(i).getAsJsonObject();
4353
NameValues commonNameValues = new NameValues();
44-
commonNameValues.setName(GsonHelper.getString(commonField, "name"));
45-
commonNameValues.setValue(GsonHelper.getString(commonField, "value"));
54+
commonNameValues.setName(getString(commonField, "name"));
55+
commonNameValues.setValue(getString(commonField, "value"));
4656
commonFieldListValues[i] = commonNameValues;
4757
}
58+
59+
MemberCardUserInfo cardUserInfo = new MemberCardUserInfo();
4860
cardUserInfo.setCommonFieldList(commonFieldListValues);
4961

5062
JsonArray customFieldListObj = userInfoJsonObject.getAsJsonArray("custom_field_list");
5163
NameValues[] customFieldListValues = new NameValues[customFieldListObj.size()];
5264
for (int i = 0; i < customFieldListObj.size(); i++) {
5365
JsonObject customField = customFieldListObj.get(i).getAsJsonObject();
5466
NameValues customNameValues = new NameValues();
55-
customNameValues.setName(GsonHelper.getString(customField, "name"));
56-
customNameValues.setValue(GsonHelper.getString(customField, "value"));
67+
customNameValues.setName(getString(customField, "name"));
68+
customNameValues.setValue(getString(customField, "value"));
5769

5870
JsonArray valueListArray = customField.getAsJsonArray("value_list");
5971
String[] valueList = new String[valueListArray.size()];
@@ -63,6 +75,7 @@ public WxMpMemberCardUserInfoResult deserialize(JsonElement jsonElement, Type ty
6375
customNameValues.setValueList(valueList);
6476
customFieldListValues[i] = customNameValues;
6577
}
78+
6679
cardUserInfo.setCustomFieldList(customFieldListValues);
6780

6881
result.setUserInfo(cardUserInfo);

0 commit comments

Comments
 (0)