2017-07-19 18 views
2

私はakka.http.scaladsl.model.HttpResponse、HttpEntityを使用しています。HttpEntityからJSONを取得

レスポンスを取得した後、レスポンスを取得すると、それは(Content-type: 'application/json'、{MyJSONHERE})の形式のresponseEntityになります。エンティティから私のjsonを抽出する方法はありますか?

ByteString形式のエンティティのコンテンツを提供するentity.getDataBytesを試しました。 JSONを正しく読み込み、解析したいと思います。誰かがこれについて私を導くことができますか?

+0

関連 - https://stackoverflow.com/q/32315789/864369 –

答えて

1

以下のコードは私

entity.dataBytes.runWith(Sink.fold(ByteString.empty)(_ ++ _)).map(_.utf8String) map { result => 
    JsonMethods.parse(result) 
} 

dataBytes戻りSource[ByteString, Any]のために働く、Sink.foldは1 ByteStringにストリームのすべての部品を組み合わせて、utf8StringはいつもStringByteStringを変換します。

HttpEntityに関する便利なドキュメントです。

1

以下のコードを試すことができますか?

entity.getDataBytes.utf8String 

JSONの文字列表現を返します。

+0

utfStringがアクセス 'utf8String'のための有効な関数 –

+1

として認識取得されていない、' entity.getDataBytes'は、バイト文字列を返す必要があり、延ByteStringクラスはUTF8STRING機能を持っています。 –

+0

あなたは 'utfString'ではなく' utfString'を使用しています –