Browse Source

#928 修复卡券拉取用户信息接口报空指针问题

master
Binary Wang 6 years ago
parent
commit
761e88201c
1 changed files with 29 additions and 16 deletions
  1. +29
    -16
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMemberCardUserInfoResultGsonAdapter.java

+ 29
- 16
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMemberCardUserInfoResultGsonAdapter.java View File

@@ -1,50 +1,62 @@
package me.chanjar.weixin.mp.util.json; 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.common.util.json.GsonHelper;
import me.chanjar.weixin.mp.bean.membercard.MemberCardUserInfo; import me.chanjar.weixin.mp.bean.membercard.MemberCardUserInfo;
import me.chanjar.weixin.mp.bean.membercard.NameValues; import me.chanjar.weixin.mp.bean.membercard.NameValues;
import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult; 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 的转换适配器 * Json to WxMpMemberCardUserInfoResult 的转换适配器
* *
* @author YuJian(mgcnrx11@gmail.com)
* @author YuJian(mgcnrx11 @ gmail.com)
* @version 2017/7/11 * @version 2017/7/11
*/ */
public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer<WxMpMemberCardUserInfoResult> { public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer<WxMpMemberCardUserInfoResult> {


@Override @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(); WxMpMemberCardUserInfoResult result = new WxMpMemberCardUserInfoResult();


JsonObject jsonObject = jsonElement.getAsJsonObject(); 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.setBonus(GsonHelper.getInteger(jsonObject, "bonus"));
result.setBalance(GsonHelper.getDouble(jsonObject, "balance")); 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")); result.setHasActive(GsonHelper.getBoolean(jsonObject, "has_active"));


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


JsonArray commonFieldListObj = userInfoJsonObject.getAsJsonArray("common_field_list"); JsonArray commonFieldListObj = userInfoJsonObject.getAsJsonArray("common_field_list");
NameValues[] commonFieldListValues = new NameValues[commonFieldListObj.size()]; NameValues[] commonFieldListValues = new NameValues[commonFieldListObj.size()];
for (int i = 0; i < commonFieldListObj.size(); i++) { for (int i = 0; i < commonFieldListObj.size(); i++) {
JsonObject commonField = commonFieldListObj.get(i).getAsJsonObject(); JsonObject commonField = commonFieldListObj.get(i).getAsJsonObject();
NameValues commonNameValues = new NameValues(); 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; commonFieldListValues[i] = commonNameValues;
} }

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


JsonArray customFieldListObj = userInfoJsonObject.getAsJsonArray("custom_field_list"); JsonArray customFieldListObj = userInfoJsonObject.getAsJsonArray("custom_field_list");
@@ -52,8 +64,8 @@ public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer
for (int i = 0; i < customFieldListObj.size(); i++) { for (int i = 0; i < customFieldListObj.size(); i++) {
JsonObject customField = customFieldListObj.get(i).getAsJsonObject(); JsonObject customField = customFieldListObj.get(i).getAsJsonObject();
NameValues customNameValues = new NameValues(); 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"); JsonArray valueListArray = customField.getAsJsonArray("value_list");
String[] valueList = new String[valueListArray.size()]; String[] valueList = new String[valueListArray.size()];
@@ -63,6 +75,7 @@ public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer
customNameValues.setValueList(valueList); customNameValues.setValueList(valueList);
customFieldListValues[i] = customNameValues; customFieldListValues[i] = customNameValues;
} }

cardUserInfo.setCustomFieldList(customFieldListValues); cardUserInfo.setCustomFieldList(customFieldListValues);


result.setUserInfo(cardUserInfo); result.setUserInfo(cardUserInfo);


Loading…
Cancel
Save