Обратная операция извлечения (json4s)

json4s позволяет пользователю преобразовать объект JsonAST в класс case с помощью extract.

import org.json4s._
import org.json4s.jackson.JsonMethods._

implicit val formats = DefaultFormats

case class Item(name: String, price: Double)
val json = parse("""{"name": "phone", "price": 1000.0}""") // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))
val item = json.extract[Item] // Item(phone,1000.0)

Однако, чтобы преобразовать класс case в объект JsonAST, я могу придумать только один способ:

  1. сериализовать класс case с помощью write
  2. десериализовать строку с помощью extract

Как показано ниже:

parse(write(item)) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))

Есть ли лучший способ конвертации? Спасибо!

Это покрывает то, что вы хотите? stackoverflow.com/questions/22992472/…

Ethan 13.09.2018 19:35
0
1
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Extraction.decompose преобразует объект класса case в JsonAST.

Extraction.decompose(item) // JObject(List((name,JString(phone)), (price,JDouble(1000.0))))

Пожалуйста, добавьте вспомогательное описание, чтобы объяснить Почему это ответ на вопрос.

Steve Land 14.09.2018 12:19

Другие вопросы по теме