今天在工作中遇到的幾個小問題,總結一下: 1.因為業務需要調用PHP的介面,獲取到的返回體需要做一段邏輯處理,然而某個欄位接收到的參數是io.serializable類型,欄位的類型不是預期的string類型,當時有點懵逼,因為是用Scala的match case做模式匹配,也沒多想,幸虧同事提示一 ...
今天在工作中遇到的幾個小問題,總結一下:
1.因為業務需要調用PHP的介面,獲取到的返回體需要做一段邏輯處理,然而某個欄位接收到的參數是io.serializable類型,欄位的類型不是預期的string類型,當時有點懵逼,因為是用Scala的match case做模式匹配,也沒多想,幸虧同事提示一番,才想起String其實實現了serializable介面,所以儘管返回的是io.serializable類型,但是也可以用string來接收;
2.調用PHP介面,返回體用JsonObject接受,但是有些許欄位是null,本能反應用Gson轉換為對象,用Scala的Option去接收可能為null的欄位,但是程式運行就會報一個with no args的錯誤;
解決方法:用case class接收PHP介面返回,對於可能為null的欄位不用加Option修飾,先不用管這個case class ,而是在JsonObject對欄位加上isJsonNull的判斷,後面Build thrift返回體的時候,這些欄位定義為Option類型的Build進去就好了;
其實現在一想,用case class對欄位進行判斷獲取也是可以的,明天實驗一番;
val uesrName:Option[String] = response.get("data").getAsJsonObject.get("userName").isJsonNull match {
case true => None
case false => Some(response.get("data").getAsJsonObject.get("userName").getAsString)
}