どのようにScalaでMAPにして複雑なJSON文字列を変換します

ADARSH K:

私のような行を含むテキストファイルを持っています

プレイヤー= { "メッシ":{ "詳細":{ "目標":500}、 "国": "アルゼンチン"}、 "ネイマール・ダ・シウバ・サントス・ジュニオール":{ "クラブ": "サントス"、 "FCバルセロナ"、「パリ聖人ドイツ語 "]、 "国":" ブラジル "}}

今私は、抽出インクルードのための正規表現を使用しています

{ "メッシ":{ "詳細":{ "目標":500}、 "国": "アルゼンチン"}、 "ネイマール・ダ・シウバ・サントス・ジュニオール":{ "クラブ": "サントス"、 "FCバルセロナ"、「パリサンドイツ"]、" 国 ":" ブラジル "}}

テキストファイルからとして値を受け入れる場合クラスにそれを渡す文字列

そして私は、このケースクラスを使用してデータフレームを作っています。

私の場合は、すべての行は、JSON String.Soに私は地図値に任意の複雑なJSON文字列に変換するための一般的な解決策を探していますとの内容で異なる場合があります。

チェックするときdataframe.printSchemaを、私は、String型として選手列を取得しています。しかし、私はそれが構造体の型としてキーと値を保持している地図の種類としてする必要があります。私はこの方法は、このリンクに言及しようとしました

どのように私は、ScalaのマップにJSON文字列を変換することができますか?

私はこの方法を使用する場合、私はエラーを得ました

「org.json4s.package $ MappingException:クラスにJOBJECT(一覧((詳細、jオブジェクト(一覧((目標、JSTRING(500)))))、(国、JSTRING(アルゼンチン))))に変換する方法がわかりません"java.lang.Stringで

そして私は、次のソリューションを使用しました

ScalaでJSONオブジェクトにJSON文字列を変換します

しかし、これらは、あまりにも私のために働いたことはありません。

これは、私の場合クラスです

case class caseClass (
                       Players :String = ""
                     )

私は、ユーザー定義関数を使用してJSON文字列を抽出しています。

単に私の要件は、私がなどの構造体、リストとして、キーと値を含む複雑なJSON文字列を持っているということです。..

私は、その内容に関して、適切なスキーマを保持し、それに対応するJSONに文字列を作りたいです。

親切に貴重なソリューションを期待。

中小企業:

あなたも一緒に暮らすことができる場合はJsValue代わりの値としてString、それは少し単純になります。

import play.api.libs.json._

case class CaseClass (
           Players :Option[JsValue]
         )

object CaseClass {

  implicit val jsonFormat = Json.format[CaseClass ]
}

私はあなたのJSONのいくつかの問題を見た - ので、あなたのようなものを持っている必要があります:

val json = Json.parse("""{
  "Players":{
     "Messi":{"Details":{"Goals":500},"Country":"Argentina"},
     "Neymar":{"Clubs":["Santos", "FC barcelona", "Paris saint German"], "Country":"Brazil"}
  }
}"""
  )

あなたが使用することができ、このうちの文字列を取得するには:

  json.validate[CaseClass] match {
    case JsSuccess(cc, _) => cc.Players.toString
    case JsError(errors) => // handle errors
  }  

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=180669&siteId=1