2016-03-24 8 views
0

私はAWSラムダ関数ました:Scala List [org.bson.Document]をJSON文字列に変換するにはどうすればよいですか?

def test(pj: Pojo, context: Context): java.util.List[Document] 

ですべての入力JSON値でpjを初期化していませんでした。

私はこのようなScalaではAWSラムダを行うanother wayが見つかりました:

import com.fasterxml.jackson.databind.ObjectMapper 
import com.fasterxml.jackson.module.scala.DefaultScalaModule 

val scalaMapper = new ObjectMapper().registerModule(new DefaultScalaModule) 

def test(input: InputStream, output: OutputStream): Unit = { 
    val inputPojo = scalaMapper.readValue(input, classOf[Pojo]) 
    val answer: Seq[Document] = getTheRealAnswer(inputPojo) 
    val jsonStr = "{ frustration: \"I wish my answer was JSON.\" }" 
    output.write(jsonStr.getBytes("UTF-8")) 
} 

をし、それが動作しますが、私は本当に答えはドキュメントのJSON配列であるとして返すようにしたいものを除きます。それについてどうすればいいですか?

編集:私の元の投稿では、私が書いた:は、「[最初の例は]として一覧[ドキュメント]のJSON変換を処理するエラー22.基本的にはAWS(と思う)として答えを返していましたJSONにはコロンがたくさんあり、エラー22はファイル名のコロンから来ています。 AWS CLIからのAWSラムダ関数の呼び出しでエラーが発生していました。私はコマンド呼び出しで出力ファイル名を省略し、返されたJSONはAWS CLIによってファイル名として解釈されました。

+0

あなたのPOJOクラスを共有することはできますか? getTheRealAnswerは存在しますか?あなたは '' 'org.bson.Document'''に言及しますが、mongoの呼び出しとそれ以外に何があるのか​​はわかりません。 mongoに接続するライブラリは何ですか? – Barry

+0

@Barry、私はこのメッセージを書いて以来、私は次のように動作するようになっています:def jsonizePoints(cDocument:Seq [Document]):String = {val sb = new StringBuilder; (doc < - cDocument){if(sb.nonEmpty){sb.append( "、")} sb.append(doc.toJson)} sb.toString} – gknauth

+0

基本的に私はSeqの各要素をjsonizeし、StringBuilderを使用して要素をコンマで区切っていました。 – gknauth

答えて

1

私はこのメッセージを書いたので、私はこのように動作するものしまっ:

def jsonizeDocs(cDocument: Seq[Document]): String = { 
    val sb=new StringBuilder 
    for (doc <- cDocument) { 
    if (sb.nonEmpty) { 
     sb.append(",") 
    } 
    sb.append(doc.toJson) 
    } 
    sb.toString 
} 
関連する問題