尝试使用json4s解析JSON时收到以下错误:
Non-standard token 'NaN': enable JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS to allow
如何启用此功能?
答案 0 :(得分:0)
假设您的ObjectMapper对象名为mapper
:
val mapper = new ObjectMapper()
// Configure NaN here
mapper.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true)
...
val json = ... //Get your json
val imported = mapper.readValue(json, classOf[Thing]) // Thing being whatever class you're importing to.
答案 1 :(得分:0)
@Nathaniel Ford,谢谢你让我走上了正确的道路!
我最后查看了parse()方法的源代码(这是我本来应该做的)。这有效:
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.ObjectMapper
import org.json4s._
import org.json4s.jackson.Json4sScalaModule
val jsonString = """{"price": NaN}"""
val mapper = new ObjectMapper()
// Configure NaN here
mapper.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true)
mapper.registerModule(new Json4sScalaModule)
val json = mapper.readValue(jsonString, classOf[JValue])
答案 2 :(得分:0)
虽然上面的答案仍然正确,但应该修改的是,因为 Jackson 2.10 JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS
已被弃用。
配置正确 NaN
处理的可持续方法如下:
val mapper = JsonMapper.builder().enable(JsonReadFeature.ALLOW_NON_NUMERIC_NUMBERS).build();
// now your parsing