外部サーバーからJsonを取得している状況に陥っています(そのサーバーを制御することはできません)。Json には、1 回以上発生する可能性がある 1 つの要素があります。net.liftweb.json 機能を使用して解析しようとしていますが、要素が複数回発生する場合にのみ正常に機能します。要素が 1 回だけ出現する場合、解析に失敗します。
コード例を次に示します。
import net.liftweb.json._
import net.liftweb.json.JsonDSL._
case class JSonListIssue(foo: List[String])
class JSonTest extends TestCase {
implicit val formats = net.liftweb.json.DefaultFormats;
def testJsonList {
val jsonStr2Foos = "{\"foo\": \"bar\", \"foo\": \"bar2\"}"
val json = (parse(jsonStr2Foos).extract[JSonListIssue])
assertEquals(2, json.foo.size)
val jsonStr1Foo = "{\"foo\": \"bar\"}"
val json2 = (parse(jsonStr1Foo).extract[JSonListIssue]) // Results in Json MappingException
assertEquals(1, json2.foo.size)
}
}
上記のコードでは、2 番目の parse ステートメントが失敗します。ケース クラスを次のように定義すると、2 番目の解析は機能しますが、最初の解析は失敗します。
case class JSonListIssue(foo: String)
これをきれいな方法で解決する方法について何か提案はありますか? もちろん、MappingException をキャッチして、他のケース クラスを使用して解析することもできますが、それは汚いです...
ありがとう、ゲロ