thoughtbot/Argo
Ver no GitHubIncorrectly parsing numbers as `Null` under Linux
Open
#455 aberto em 17 de abr. de 2017
bughelp wanted
Métricas do repositório
- Stars
- (3.455 stars)
- Métricas de merge de PR
- (Nenhuma PRs mesclada em 30d)
Description
Sample JSON
{
"aggregations": {
"my_aggregation": {
"value": 9
}
}
}
Models
let int: Decoded<Int> = json <| ["aggregations", "device_count", "value"]
// ^ missingKey("value")
Argo Version
4.1.2
Dependency Manager
Swift Package Manager.
This only occurs under Linux. Locally, there's no problem on MacOS. Under the debugger it seemed to be showing that value was present but its value was null, as if {"value": null}.
Resolved this way (ugh).
let dict = json as? [String:Any]
let int = dict.flatMap({ d -> Any? in
return d["aggregations"]
}).flatMap({ d -> [String:Any]? in
return d as? [String:Any]
}).flatMap({ d -> Any? in
return d["my_aggregation"]
}).flatMap({ d -> [String:Any]? in
return d as? [String:Any]
}).flatMap({ d -> Any? in
return d["value"]
}).flatMap({ d -> Int? in
return d as? Int
})
I assume this is related to NSNumber being a shitshow on Linux, and thus isn't really Argo's problem. This issue is more for the benefit of everyone else.
(Related observation: if NSNumber's crufty addition of so many features is due to years of the "benefits" of ABI stability, I'm terrified for the consequences of Swift 5).