2017-03-21 32 views
0

Play Frameworkを使用していますが、ScalaオブジェクトをJSON文字列に変換しようとしています。ここでScalaオブジェクトをJSON Stringに変換できません

は、私は私のオブジェクトを取得する私のコードです:

val profile: Future[List[Profile]] = profiledao.getprofile(profileId); 

オブジェクトがprofile値になりました。

オブジェクトをFuture[List[Profile]]に変換してJSONデータに変換し、そのデータをJSON文字列に変換してファイルに書き出したいとします。

{"empty":false,"traversableAgain":true} 

私は:これは私がJSONデータに変換しようとしていますが、それは私に次のような出力を与えている方法です

val jsondata = Json.toJson(profile) 
Jackson.toJsonString(jsondata) 

:ここ

は、私がこれまでに書いたコードです変換を行うには Jacksonライブラリを使用します。

誰かがこれを手伝ってくれますか?

+0

あなたの 'profile'値は' object'のどのタイプですか? – meucaa

+0

@meucaaその関数profiledao.getprofile(profileid)はFuture [List [Profile]]を返します – raja

答えて

2

なぜジャクソンに気をつけますか?あなたがプレイを使用している場合は、ボンネットの下にFWIWジャクソンを使用して使用可能なplay-jsonを、持っている:

まず、あなたはplay-jsonProfileをシリアライズする方法を知っているように、暗黙のReadsを必要としています。 Profileはケースクラスがある場合は、この操作を行うことができます。

import play.api.libs.json._ 

implicit val profileFormat = Json.format[Profile] 

ない場合は、あなた自身のReadsthisのように定義します。

val profilesJson = profiledao.getprofile(profileId).map(toJson) 

profiledaoprofileDaoでなければなりません。)

を最後に:(規則に従うとgetProfileをする必要があります)getprofileFuture[List[Profile]]を返すので、JsValue

次に、あなたが得るためにこれを行うことができますResultのようにOkのようにこれを折り返して、コントローラから返すことができます。

+0

JSONデータを返す暗黙の読み取りがありますか?しかし、JSON Stringに変換する方法 – raja

+1

'Reads'はJSONを生成しません。 Scalaオブジェクトを 'JsValue'に変換する関数です。この関数が適用されると、 'Json.stringify'を使って' JsValue'を文字列に変換することができます。 – Vidya

+0

私は、輸入ライブラリが大変重要だと思います。なぜ、私がJsonのインポートを変更したのかというと、それはすべて正常に動作するようになったからです。 – raja

関連する問題