ストリームからJSONを受信しています。ScalaはJSONをいくつかのタイプに変換します
オブジェクトは、いくつかのスカラ型の1つで表すことができます。たとえば:{"userid":"blerk","name":"Fred"}
はUser(userId:String, userName:String)
{"groupId":"zerk","name":"Accounting"}
だろうGroup(groupId:String,groupName:String}
(現実のオブジェクトはより多くの要素を持っている)になります。
私はそれが重要な場合には、噴霧JSONを使用して、しかし、私が知りたいことはこれですよ:
私が機能を持っているしたいのですが、それが成功するまで、その順番はTry(myJson.convertTo[T])
を行い、「変換」、およびタイプT
の値を返します。
私の目的は、ある種の文字列マッチングのヒューリスティックスを使用して、それがどのようなタイプであるかを事前に突き止めずに、新しいケースが出現したときにリストに新しいタイプを追加できるようにすることです。私もこのようなコードを避けたいです
val t1=Try(myJson.convertTo[User])
if(t1.isSuccess) return t1.get
val t2=Try(myJson.convertTo[Group])
if(t2.isSuccess) return t2.get
悲しいことに、私はこの周りに私の小さな脳をラップし、任意の援助に感謝しています。
ありがとうございます。これは学習の練習なので、タイプセーフティーをあきらめるつもりはありません(少なくとも未だ)。そして可能なタイプがかなりあるので、ネストされた 'Either'ルートは完全に満足できるものではありません;-)。 Shapelessへのリンクは、ShapelessStreamが有用であるように見えるので、私はそれに感謝しています! – Mike