una soporta segundo rapida por optimizar optimizacion mas lentas hacer cuantas consultas consulta con como json scala parsing scala-2.10 case-class

soporta - Scala: Parse JSON directamente en una clase de caso



optimizacion de consultas sql (7)

Dado una cadena de JSON, y una clase de caso que le corresponde, ¿cuál es una forma sencilla de analizar el JSON en la clase de caso? Hay muchas bibliotecas disponibles, pero parece que Scala podría ahora hacerlo de la caja.

¿Qué pasa si el JSON debe analizarse en una lista de la clase de caso?

ACTUALIZAR:

Jerkson parece estar abandonado, y no quiero instalar todo el framework Play o Lift ni nada pesado.



Hay varios marcos que pueden hacer eso exactamente.

JSON4s

JSON4s es bastante maduro y admite jackson o un analizador JSON nativo . Lo usé en muchos proyectos para reemplazar a Jerkson.

https://github.com/json4s/json4s

play-json

Se puede usar sin la pila de juego completa. Gran soporte como parte del proyecto de juego en typesafe.

http://www.playframework.com/documentation/2.0/ScalaJson

Scala-Pickling

Un marco de serialización. Hay una opción para serializar / deserializar a JSON.

https://github.com/scala/pickling

Rocíe JSON

Puede catalogar y deserializar. Necesita saber la cantidad de argumentos para la deserialización difícil.

https://github.com/spray/spray-json


He usado https://github.com/json4s/json4s , solo que la queja hasta el momento es https://github.com/json4s/json4s/issues/137

import org.json4s._ import org.json4s.native.JsonMethods._ implicit val formats = DefaultFormats case class ParsedPage(crawlDate: String, domain:String, url:String, text: String) val js = """ { "crawlDate": "20150226", "domain": "0x20.be", "url": "http://0x20.be/smw/index.php?title=99_Bottles_of_Beer&oldid=6214", "text": "99 Bottles of Beer From Whitespace (Hackerspace Gent) Revision as of 14:43, 8 August 2012 by Hans ( Talk | contribs ) 99 Bottles of Beer Where: Loading map... Just me, with 99 bottles of beer and some friends. Subpages" }""" parse(js).extract[ParsedPage]


Para cualquier persona toparse con esto por primera vez, circe también es una buena opción

val customerJson = s"""{"id" : "1", "name" : "John Doe"}""" case class Customer(id: String, name: String) val customer = decode[Customer](customerJson)


Spray Json es muy liviano y hace exactamente lo que necesitas. Es un conjunto de herramientas en lugar de un marco completo y solo puede importar el proyecto Spray-json en lugar de todo el proyecto.

https://github.com/spray/spray-json

Los ejemplos pueden ayudarte a configurar muy rápidamente. La mayoría de las veces su código para traducir a / desde JSON termina siendo uno, pero tiene la capacidad de manejarlo explícitamente en caso de que tenga algunos requisitos extraños.


Use net.liftweb

import net.liftweb.json._ case class Detail(username:String, password:String) implicit val formats = DefaultFormats val input = parse(jsonString).extract[Detail] println(input.username)

Asegúrese de que la versión de Scala coincida con el jar de lift-json. Por ej. para Scala 2.10 use lift-json_2.10.


Use spray-json ya que es pequeño.

import spray.json._ import DefaultJsonProtocol._ val json = """{"one" : "1", "two" : "2", "three" : "3"}""".parseJson case class Numbers(one: String, two: String, three: String) object MyJsonProtocol extends DefaultJsonProtocol { implicit val numbersFormat = jsonFormat3(Numbers) } import MyJsonProtocol._ val converted = json.convertTo[Numbers]

Descargue spray-json en sbt usando este build.sbt:

lazy val root = (project in file(".")). settings( name := "jsonExample", libraryDependencies += "io.spray" %% "spray-json" % "1.3.2" )