2013-11-19 2 views
0

Использование Jerkson версии:Jerkson JsonProperty не работает

<dependency> 
    <groupId>com.cloudphysics</groupId> 
    <artifactId>jerkson_2.10</artifactId> 
    <version>0.6.3</version> 
</dependency> 

У меня есть этот случай класс:

case class Parameter(val name:String, val value:String, @([email protected])("type") val aType:String, val restriction:String, val defaultValue:String, val required:Boolean, val description:String) 

ouptut Json содержит поле с именем 'типа'. Obviusly это проблема в Scala, поскольку «тип» - ключевое слово. Хотя похоже, что проданный JsonProperty поддерживается, это, похоже, сломается.

В тесте у меня есть этот код:

val p = Parameter("name", "value", "string", "restricted", "myDefault", true, "desc") 
println(Json.generate(p)) 

Он печатает:

{ "имя": "имя", "значение": "значение", "aType": "строка "" ограничение ":" ограниченный», "DefaultValue": "myDefault", "требуемая": правда, "описание": "DESC"}

'aType' и не 'типа'

Любых идеи, что я делаю неправильно?

ответ

1

Scala позволит использовать ключевые слова (и все), чтобы назвать вещи, если вы поместите их в клещах (`)

case class Parameter(..., `type`: String, ....) 

это даст вам то, что вы хотите.


Проект Джерксона заброшен.

Если бы это был джексон с scala module, ваш код был бы в порядке, @JsonProperty("type") также выполнил бы эту работу.

+0

обратные тики не помогают. JSON-де-сериализация не работает – YaOg

+0

также, у scala-модуля есть другие проблемы: см.: https://github.com/FasterXML/jackson-module-scala/issues/111 – YaOg

+0

О, я в порядке, даже не проверил десериализацию. Во всяком случае, это то, что Джеркссон заброшен, поэтому ваш код не работает. Проблемы, связанные с проблемой края или нет, будут работать с Jackson с модулем scala, что или любая другая библиотека, по-прежнему лучше выбора, чем библиотека, которая не увидела фиксацию через 7 месяцев и не знает об ее обманутости –