他の Scala JSON 解析の質問を読んだことがありますが、それらはすべて、深くネストされていない、または型が混在していない非常に基本的なドキュメントを想定しているようです。または、ドキュメントのすべてのメンバーを知っているか、一部が失われることはないと想定しています。
現在、Jackson のストリーミング API を使用していますが、必要なコードの理解と保守が困難です。代わりに、Jerksonを使用して、可能であれば解析された JSON を表すオブジェクトを返したいと思います。
基本的には、動的言語でよく知っている JSON 解析機能を複製したいと考えています。私はそれがおそらく非常に間違っていることを理解しているので、私は教育を受けるためにここにいます.
ツイートがあるとします:
{
"id": 100,
"text": "Hello, world."
"user": {
"name": "Brett",
"id": 200
},
"geo": {
"lat": 10.5,
"lng": 20.7
}
}
さて、Jerkson Case Class の例は、たとえば ID のみを解析したい場合に非常に役立ちます。
val tweet = """{...}"""
case class Tweet(id: Long)
val parsed = parse[Tweet](tweet)
しかし、上記のツイートのようなものにどう対処すればよいでしょうか?
いくつかの落とし穴:
null
たとえば、上記の「geo」が である場合や、ある日、フィールドnull
が削除される可能性があり、解析コードが失敗したくない場合などです。- 一部のフィールドが余分になるか、フィールドが追加されますが、それらを無視できるようにしたいと考えています。