package net.dev123.yibome.converter; import java.text.DateFormat; import java.text.ParseException; import net.dev123.commons.util.DateTimeUtil; import net.dev123.commons.util.ParseUtil; import net.dev123.exception.ExceptionCode; import net.dev123.exception.LibException; import net.dev123.yibome.entity.Passport; import net.dev123.yibome.entity.PointLevel; import org.json.JSONException; import org.json.JSONObject; public class PassportJSONConverter { public static JSONObject toJSON(Passport passport) throws JSONException { if (passport == null) { return null; } JSONObject json = new JSONObject(); json.put("username", passport.getUsername()); json.put("access_token", passport.getAuthToken()); json.put("token_secret", passport.getAuthSecret()); DateFormat dateFormat = DateTimeUtil.getGMTDateFormat(); json.put("created_at", dateFormat.format(passport.getCreatedAt())); json.put("email", passport.getEmail()); json.put("state", passport.getState()); json.put("is_vip", passport.isVip()); JSONObject pointLevelJson = new JSONObject(); PointLevel pointLevel = passport.getPointLevel(); if (pointLevel != null) { pointLevelJson.put("points", pointLevel.getPoints()); pointLevelJson.put("title", pointLevel.getTitle()); pointLevelJson.put("pointLevel", pointLevel.getPointLevel()); } json.put("point_level", pointLevelJson); return json; } public static Passport toPassport(JSONObject json) throws LibException { if (json == null) { return null; } Passport passport = new Passport(); try { passport.setUsername(json.getString("username")); passport.setAuthToken(json.getString("access_token")); passport.setAuthSecret(json.getString("token_secret")); passport.setCreatedAt(ParseUtil.getDate("created_at", json)); passport.setEmail(json.getString("email")); passport.setState(json.getInt("state")); passport.setVip(json.getBoolean("is_vip")); PointLevel pointLevel = null; try { String levelJsonString = json.getString("point_level"); pointLevel = PointLevelJSONConverter.createPointLevel(levelJsonString); } catch (Exception e) {} passport.setPointLevel(pointLevel); } catch (JSONException e) { throw new LibException(ExceptionCode.JSON_PARSE_ERROR); } catch (ParseException e) { throw new LibException(ExceptionCode.DATE_PARSE_ERROR); } return passport; } }