2015-08-05 3 views
1

При использовании Json4s было очень ясно, что вы можете явно игнорировать определенные поля. Однако я не вижу никакой документации о том, как игнорировать все неизвестные поля.Json4s (Родной/Джексон) Игнорировать все неизвестные поля

В Джексон, я хотел бы использовать следующую аннотацию:

import com.fasterxml.jackson.annotation._ 

@JsonIgnoreProperties(ignoreUnknown=true) 
case class MyClass(string: String) 

Как это сделать с помощью Джексона или родной версии Json4s?

ответ

4

Я не совсем уверен, если я приведу вас сюда, но Json4s (по крайней мере, версия org.json4s) по умолчанию игнорирует дополнительные поля.

import org.json4s.DefaultFormats 
import org.json4s.native.JsonMethods._ 

implicit val formats = DefaultFormats 
case class Mailserver(url: String, username: String, password: String) 

val json = parse(
""" 
    { 
    "url": "imap.yahoo.com", 
    "username": "myusername", 
    "password": "mypassword", 
    "additional": "field" 
    } 
""" 
) 

val m = json.extract[Mailserver] 
println(m.url) 
println(m.username) 
println(m.password) 

Это прекрасно работает.

+0

Любопытно, какую версию Scala вы используете? И какая версия Json4s? Я заметил, что это все еще беспокоит меня. Хотя я бы хотел тщательно протестировать его. – crockpotveggies

+0

Для теста я использовал версию 3.2.11 json4s и Scala 2.11.x. Какая у вас проблема? – thwiegan

+0

Я использовал ту же версию на Scala 2.10.x. Я обращаюсь к частному API, который регулярно меняет структуру и добавляет поля, хотя я заметил, что он все еще не работает, потому что появятся некоторые поля. Эти поля не безопасны для типов, поэтому я стараюсь не разбирать их вообще. – crockpotveggies

Смежные вопросы