Skip to content

Commit

Permalink
#928 修复卡券拉取用户信息接口报空指针问题
Browse files Browse the repository at this point in the history
  • Loading branch information
binarywang committed Jan 25, 2019
1 parent bdd7299 commit 761e882
Showing 1 changed file with 29 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,59 +1,71 @@
package me.chanjar.weixin.mp.util.json;

import com.google.gson.*;
import java.lang.reflect.Type;

import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import me.chanjar.weixin.common.util.json.GsonHelper;
import me.chanjar.weixin.mp.bean.membercard.MemberCardUserInfo;
import me.chanjar.weixin.mp.bean.membercard.NameValues;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult;

import java.lang.reflect.Type;
import static me.chanjar.weixin.common.util.json.GsonHelper.getString;

/**
* Json to WxMpMemberCardUserInfoResult 的转换适配器
*
* @author YuJian(mgcnrx11@gmail.com)
* @author YuJian(mgcnrx11 @ gmail.com)
* @version 2017/7/11
*/
public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer<WxMpMemberCardUserInfoResult> {

@Override
public WxMpMemberCardUserInfoResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
public WxMpMemberCardUserInfoResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context)
throws JsonParseException {
WxMpMemberCardUserInfoResult result = new WxMpMemberCardUserInfoResult();

JsonObject jsonObject = jsonElement.getAsJsonObject();

result.setOpenId(GsonHelper.getString(jsonObject, "openid"));
result.setErrorCode(GsonHelper.getString(jsonObject, "errcode"));
result.setErrorMsg(GsonHelper.getString(jsonObject, "errmsg"));
result.setNickname(GsonHelper.getString(jsonObject, "nickname"));
result.setMembershipNumber(GsonHelper.getString(jsonObject, "membership_number"));
result.setOpenId(getString(jsonObject, "openid"));
result.setErrorCode(getString(jsonObject, "errcode"));
result.setErrorMsg(getString(jsonObject, "errmsg"));
result.setNickname(getString(jsonObject, "nickname"));
result.setMembershipNumber(getString(jsonObject, "membership_number"));
result.setBonus(GsonHelper.getInteger(jsonObject, "bonus"));
result.setBalance(GsonHelper.getDouble(jsonObject, "balance"));
result.setSex(GsonHelper.getString(jsonObject, "sex"));
result.setUserCardStatus(GsonHelper.getString(jsonObject, "user_card_status"));
result.setSex(getString(jsonObject, "sex"));
result.setUserCardStatus(getString(jsonObject, "user_card_status"));
result.setHasActive(GsonHelper.getBoolean(jsonObject, "has_active"));

JsonObject userInfoJsonObject = jsonObject.getAsJsonObject("user_info");
MemberCardUserInfo cardUserInfo = new MemberCardUserInfo();
if (userInfoJsonObject == null) {
return result;
}

JsonArray commonFieldListObj = userInfoJsonObject.getAsJsonArray("common_field_list");
NameValues[] commonFieldListValues = new NameValues[commonFieldListObj.size()];
for (int i = 0; i < commonFieldListObj.size(); i++) {
JsonObject commonField = commonFieldListObj.get(i).getAsJsonObject();
NameValues commonNameValues = new NameValues();
commonNameValues.setName(GsonHelper.getString(commonField, "name"));
commonNameValues.setValue(GsonHelper.getString(commonField, "value"));
commonNameValues.setName(getString(commonField, "name"));
commonNameValues.setValue(getString(commonField, "value"));
commonFieldListValues[i] = commonNameValues;
}

MemberCardUserInfo cardUserInfo = new MemberCardUserInfo();
cardUserInfo.setCommonFieldList(commonFieldListValues);

JsonArray customFieldListObj = userInfoJsonObject.getAsJsonArray("custom_field_list");
NameValues[] customFieldListValues = new NameValues[customFieldListObj.size()];
for (int i = 0; i < customFieldListObj.size(); i++) {
JsonObject customField = customFieldListObj.get(i).getAsJsonObject();
NameValues customNameValues = new NameValues();
customNameValues.setName(GsonHelper.getString(customField, "name"));
customNameValues.setValue(GsonHelper.getString(customField, "value"));
customNameValues.setName(getString(customField, "name"));
customNameValues.setValue(getString(customField, "value"));

JsonArray valueListArray = customField.getAsJsonArray("value_list");
String[] valueList = new String[valueListArray.size()];
Expand All @@ -63,6 +75,7 @@ public WxMpMemberCardUserInfoResult deserialize(JsonElement jsonElement, Type ty
customNameValues.setValueList(valueList);
customFieldListValues[i] = customNameValues;
}

cardUserInfo.setCustomFieldList(customFieldListValues);

result.setUserInfo(cardUserInfo);
Expand Down

0 comments on commit 761e882

Please sign in to comment.