java parcelable转json字符串,json 字符串转parcelable

 

https://blog.csdn.net/m940034240/article/details/81118091(java实体转map)

https://blog.csdn.net/sotong006/article/details/72354216(map转java实体)

http://hellorheaven.iteye.com/blog/842346

public class EntityUtils {
    //(一定要绑定,订阅成功才能进行对象转换)。
    /**
     * 实体类转Map
     *
     * @param object
     * @return
     */
    public static Map<String, Object> entityToMap(Parcelable object) {
//        stu.writeToParcel(p, 0);
        Map<String, Object> map = new HashMap();
        for (Field field : object.getClass().getDeclaredFields()) {
            try {
                boolean flag = field.isAccessible();
                field.setAccessible(true);
                Object o = field.get(object);
                map.put(field.getName(), o);
                field.setAccessible(flag);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return map;
    }


    /**
     * 实体类转Map
     *
     * @param
     * @return
     */
    public static Map<String, Object> filterMap(Map<String, Object> map_filter) {
        Map map = new HashMap();
        map.put("macAddress", map_filter.get("macAddress"));
        map.put("did", map_filter.get("did"));
        map.put("ipAddress", map_filter.get("ipAddress"));
        map.put("productKey", map_filter.get("productKey"));
        map.put("productName", map_filter.get("productName"));
        map.put("remark", map_filter.get("remark"));
        map.put("alias", map_filter.get("alias"));
        map.put("productUI", map_filter.get("productUI"));
//        String isLAN = map_filter.get("productUI");
        map.put("isLAN", map_filter.get("isLAN"));//(byte)((boolean)map_filter.get("productUI")?1:0)
        map.put("subscribed", map_filter.get("subscribed"));
        map.put("isBind", map_filter.get("isBind"));
        map.put("hasProductDefine", map_filter.get("hasProductDefine"));
        map.put("isDisabled", map_filter.get("isDisabled"));
        map.put("netStatus", map_filter.get("netStatus"));
        map.put("productType", map_filter.get("productType"));
        return map;
    }


    /**
     * Map转实体类
     *
     * @param map 需要初始化的数据,key字段必须与实体类的成员名字一样,否则赋值为空
     * @return
     */
    public static <T> T mapToEntity(Map<String, Object> map, Parcelable.Creator<T> creator) {

//        Parcel t = null;
        Parcel parcel = null;
        parcel = Parcel.obtain();
//            parcel.writeMap(map);
        parcel.setDataPosition(0); // this is extremely important!
//        parcel.writeMap(map);
        parcel.writeString((String) map.get("macAddress"));
        parcel.writeString((String) map.get("did"));
        parcel.writeString((String) map.get("ipAddress"));
        parcel.writeString((String) map.get("productKey"));
        parcel.writeString((String) map.get("productName"));
        parcel.writeString((String) map.get("remark"));
        parcel.writeString((String) map.get("alias"));
        parcel.writeString((String) map.get("productUI"));
        parcel.writeByte((byte) ((boolean) map.get("isLAN") ? 1 : 0));
        parcel.writeByte((byte) ((boolean) map.get("subscribed") ? 1 : 0));
        parcel.writeByte((byte) ((boolean) map.get("isBind") ? 1 : 0));
        parcel.writeByte((byte) ((boolean) map.get("hasProductDefine") ? 1 : 0));
        parcel.writeByte((byte) ((boolean) map.get("isDisabled") ? 1 : 0));

//        parcel.writeSerializable((GizWifiDeviceNetStatus) map.get("netStatus"));
//        parcel.writeSerializable((GizWifiDeviceType) map.get("productType"));
        switch ((String) map.get("netStatus")) {
            case "GizDeviceOffline":
                parcel.writeSerializable(GizWifiDeviceNetStatus.GizDeviceOffline);
                break;
            case "GizDeviceOnline":
                parcel.writeSerializable(GizWifiDeviceNetStatus.GizDeviceOnline);
                break;
            case "GizDeviceControlled":
                parcel.writeSerializable(GizWifiDeviceNetStatus.GizDeviceControlled);
                break;
            case "GizDeviceUnavailable":
                parcel.writeSerializable(GizWifiDeviceNetStatus.GizDeviceUnavailable);
                break;
        }

        switch ((String) map.get("productType")) {
            case "GizDeviceNormal":
                parcel.writeSerializable(GizWifiDeviceType.GizDeviceNormal);
                break;
            case "GizDeviceCenterControl":
                parcel.writeSerializable(GizWifiDeviceType.GizDeviceCenterControl);
                break;
            case "GizDeviceSub":
                parcel.writeSerializable(GizWifiDeviceType.GizDeviceSub);
                break;
        }

        parcel.setDataPosition(0);
//        String mac = parcel.readString();
//        String did = parcel.readString();
//        String productKey = parcel.readString();
//        String productName = parcel.readString();
//        String remark = parcel.readString();
        return creator.createFromParcel(parcel);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值