Comments (4)
@longlylong 给个例子看看. 不太理解你说的.
from handyjson.
class A :HandJson{
var p = Array<P>()
}
class P:HandJson{
var name = "dddd"
}
A().toJSON()
这个的结果就是{"A":{p:[Any?],[Any?],...}}
正确应该是{"A":{p:["name":"dddd"],["name":"dddd"],...}}
from handyjson.
@longlylong 我在我的一个 PR 中修复了些问题.
#77
你可以试试我的这个分支.
from handyjson.
我认真考虑了这个问题,觉得这是理论上的限制,没有办法做出改进的。
toJSON()
接口返回的是一个字典,字典中各个值,是运行时通过反射的方式解析 A
类得到的,也就是,需要到运行时,才可能检测到各个值的类型。而你这里说的类型是编译期的概念。打个比方,如果你能知道 let a = A().toJSON()
得到的 a
是 [String: [[String: String]]
类型,意味着你可以写代码的时候,IDE就可以给你补全 a["p"].count
后边的 .count
(有类型信息)。但这个 a
是运行时才知道的,不可能编译期就获得它的类型。
也就是说,toJSON()
返回的字典,每个值的类型都是和 A
类对应的,但你只能通过强转的形式,让它成为对应的类型(因为你可以根据对应关系明白每个转换出来的值会是什么类型)。如:
if let p = A().toJSON()?["p"] as? [Any?] {
if let first = p.first as? String {
print(first)
}
}
from handyjson.
Related Issues (20)
- My suggestion: Use Codable instead it HOT 16
- SIGILL ILL_ILLTRP crash
- Referencing static method 'deserialize(from:designatedPath:)' on 'Array' requires that 'String' conform to 'HandyJSON'
- Cocoapods Error for 'Not found file'
- 生成的xcframework无法使用 HOT 2
- HandyJSON还能继续使用吗? HOT 4
- 在配合使用Realm的时候,无法转换Realm中List类型数据 HOT 2
- 现在支持 SPM 吗 HOT 1
- UIViewController.deserialize(from: [:]) crash
- 为啥toJSON方法转字典后,并不是自己创建的属性名 HOT 5
- 建议在README中显著标注「不建议使用」 HOT 2
- importing xcframework has problem with bazel
- 继承导致的crash HOT 1
- nil
- Not work with RealmSwift.xcframework HOT 1
- Unable to determine Swift version for the following pods
- 怎么和CoreData结合使用,直接把JSON数据转换为新的CoreData Entity,或更新原有的Entity? HOT 1
- @propertyWrapper
- Calling the toJSONString method with UIColor.clear will result in an error
- 可以自动下划线转驼峰么? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.