我從沒有控制權的上游服務器接收JSON響應,進行修改。播放JSON JsPath有條件類型
的JSON可能具有以下格式
{"data":[["Some_text","boolean",["key_string1","key_string2"]]]}
或者它也可能顯示爲
{"data":[["Some_text","boolean","key_string2"]]}
或者,它可能顯示爲兩者的組合。
{"data":[["Some_text","boolean",["key_string1","key_string2"]],["Some_text","boolean","key_string2"]]}
個別我可以定義每種格式的READS,如果他們不混合。 但是,由於數據可能是混合格式,因此我無法圍繞如何編寫Read來檢查底層類型是字符串還是數組,然後再進行轉換?
是否可以這樣說
(
(JsPath)(0).read[String] and
(JsPath)(1).read[Boolean] and
(JsPath)(2).read(**if type is simple, String OR if type is array, then seq**)
)(SomeGloriousCaseClass)
我如何能接近反序列化的這個問題呢?
我有一個很好的想法,如何做到這一點,但你可以鏈接你想要映射到底層類? –
當然,如果它解決了有關反序列化的問題,我不介意底層類的任何格式。目前,我正在使用下面的案例類case case SomeGloriousCaseClass(initialPart:String,booleanPart:Boolean,theDifficultPart:Seq [String])''。我甚至不介意是否所有東西都被轉換成了一個序列 – Serendipity
'(_ \「data」)。read [JsArray] .flatMap {jsa => ??? }' – cchantep