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によってファイル名として解釈されました。
あなたのPOJOクラスを共有することはできますか? getTheRealAnswerは存在しますか?あなたは '' 'org.bson.Document'''に言及しますが、mongoの呼び出しとそれ以外に何があるのかはわかりません。 mongoに接続するライブラリは何ですか? – Barry
@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
基本的に私はSeqの各要素をjsonizeし、StringBuilderを使用して要素をコンマで区切っていました。 – gknauth