HandyJSON icon indicating copy to clipboard operation
HandyJSON copied to clipboard

兼容Realm.swift

Open MrWilsonXu opened this issue 5 years ago • 9 comments

在同时使用Realm.swift时,按照realm.swift方式创建的模型数组对象,handyJson无法解析 例如: var a = List < SomeModel > () a属性是无法解析的

MrWilsonXu avatar Aug 20 '18 10:08 MrWilsonXu

我也遇到了相同的问题,尝试用mapping转化成list<T>类型,但是mapper.specify的converter闭包输入值不是标准的json,而是如下格式,这种是什么格式啊,怎么转成对象或json串: ( { lPhone = 88069176; phoneName = "\U7535\U8bdd\U3001\U7535\U68af\U7ef4\U4fee"; phoneType = 1; sPhone = 889176; } )

dagaozi avatar Sep 06 '18 02:09 dagaozi

@xuyecan 我也遇到一样的问题

chendandan avatar Sep 06 '18 03:09 chendandan

这个问题解决了吗?

miaozhang9 avatar Nov 15 '18 10:11 miaozhang9

handyjson和realm.swift数据库,可以桥接实现解析转换插入数据库。HandyJson识别不了realm中的reamlist类型属性,所以说没法转换,但是我们可以在model中建立一个HandyJson能解析的list属性,然后再建立一个realm的realmlist类型属性,在basemodel中添加实现方法 addRealmData 和 addHandyData,子类继承实现,addRealmData中实现把handyJson解析出来的数据添加到realmlist数据中例如: self.mediaList_realm.append(objectsIn: self.mediaList) ,反之如果需要把数据库的数据,转换成正常的json时,需要将reamllist数据添加到正常的list中例如: for item in self.mediaList_realm { self.mediaList.append(item) } 注意点:这里必须循环遍历添加到正常的list中,而无法使用 self.mediaList.append( self.mediaList_realm),切记。

miaozhang9 avatar Feb 21 '19 02:02 miaozhang9

增加了兼容List类型对象 踩坑中 https://github.com/yonglefu/HandyJSONRealm

Yongle-Fu avatar Mar 16 '19 15:03 Yongle-Fu

dynamic var xxx = List<Double>() dynamic var title: String dynamic var 会导致getMappingHandler时property的address不匹配 注册的mapper会失效

Yongle-Fu avatar Mar 21 '19 17:03 Yongle-Fu

可以用 HandyJSON 的 mapping方法来手动解析。

 func mapping(mapper: HelpingMapper) {
        
        mapper <<< self.objects <-- TransformOf<List<Object>, [[String: Any]]>(fromJSON: { jsonDict -> List<Object>? in
            let list = List<Object>()
            guard jsonDict != nil, jsonDict!.count > 0 else { return list }
            let objs = [Object].deserialize(from: jsonDict) ?? []
            for obj in objs {
                list.append(obj!)
            }
            return list
        }, toJSON: { list -> [[String: Any]] in
            var arr = [Object]()
            for obj in list! {
                arr.append(obj)
            }
            return (arr.toJSON() as! [[String : Any]])
        })
    }

AscenX avatar May 27 '19 09:05 AscenX

i have Object Realm but when using toJson() it's return empty data

fukemy avatar Mar 14 '22 05:03 fukemy

@AscenX can u help me how to use your function? Thanks

fukemy avatar Mar 14 '22 05:03 fukemy