Cómo convertir cadena JSON en Complejo de MAP en Scala

ADARSH K:

Tengo un archivo de texto que contiene una línea como

jugadores = { "Messi": { "Detalles": { "Objetivos": 500}, "País": "Argentina"}, "Neymar": { "clubes": [ "Santos", "FC Barcelona", "París saint German "], "País":" Brasil "}}

Ahora estoy acostumbrado una expresión regular para el extracto

{ "Messi": { "Detalles": { "Objetivos": 500}, "País": "Argentina"}, "Neymar": { "clubes": [ "Santos", "FC Barcelona", "Paris Saint German "]," País ":" Brasil "}}

Del archivo de texto y pasarlo a una clase de caso que acepta el valor como una cadena .

y yo estoy haciendo una trama de datos usando esta clase caso.

En mi caso, cada línea puede ser diferente en los contenidos con JSON en el String.So Busco a una solución general para convertir cualquier cadena JSON complejo de Valores de mapa.

Al comprobar dataframe.printSchema , estoy consiguiendo la columna de jugadores como un tipo de cadena. Pero necesito que sea como un tipo de mapa que contiene una clave y un valor como un tipo de estructura. Yo método probado hace referencia en este enlace

¿Cómo puedo convertir una cadena JSON a un mapa Scala?

cuando utilicé esta manera, ha obtenido un error

"Org.json4s.package $ MappingException: no sabe cómo convertir jobject (lista ((Detalles, jobject (Lista ((Objetivos, jstring (500))))), (país, jstring (Argentina)))) en la clase java.lang.String "

y I utilizados siguiendo soluciones

La conversión de cadena JSON en un objeto JSON en Scala

Pero estos también no funcionó para mí.

Esta es mi clase de caso

case class caseClass (
                       Players :String = ""
                     )

Estoy extrayendo la cadena JSON utilizando una función definida por el usuario.

Simplemente mi requisito es que tengo un complejo de cadena JSON que contiene las claves y valores como la estructura, etc .. lista

por lo que quiero hacer la cadena a su correspondiente JSON que contiene un esquema adecuado con respecto a su contenido.

Amablemente esperando soluciones valiosas.

PYMES:

Si también puede vivir con JsValuecomo valor en lugar de Stringlo que parece un poco más simple:

import play.api.libs.json._

case class CaseClass (
           Players :Option[JsValue]
         )

object CaseClass {

  implicit val jsonFormat = Json.format[CaseClass ]
}

Vi algunos problemas con su JSON - por lo que tendría que tener algo como:

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

Para obtener una cadena de ello se puede utilizar:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=180673&siteId=1
Recomendado
Clasificación