| @@ -1,50 +1,62 @@ | |||
| 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"); | |||
| @@ -52,8 +64,8 @@ public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer | |||
| 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()]; | |||
| @@ -63,6 +75,7 @@ public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer | |||
| customNameValues.setValueList(valueList); | |||
| customFieldListValues[i] = customNameValues; | |||
| } | |||
| cardUserInfo.setCustomFieldList(customFieldListValues); | |||
| result.setUserInfo(cardUserInfo); | |||