我使用JacksMapper将JSON字符串解析为Map[String,String]
def parseJSON(line: String): Map[String, String] = {
JacksMapper.readValue[Map[String, String]](line)
}对于一些JSON字符串,它抛出错误:
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY token特别是这个字符串会发生这样的情况:
{"id":"123",“名称”:“访问”,“类别”:“abc”,"x_ids":"220"}
我假设问题出在"x_ids":["220"]上,而我希望结果是Map[String,String]。因此,在本例中,我希望将数组转换为像"x_ids"->"220,230"这样的字符串。我如何灵活地执行它,以便解决方案能够适应在某些情况下可能是数组的其他可能字段?
编辑:在我的例子中,我从来没有使用静态类解析的复杂数组。只有数字或字符串的数组。
发布于 2016-11-30 11:17:14
你可以分两步完成:
这可能会给出这样的结果:
def parseJSON(line: String): Map[String, String] = {
JacksMapper.readValue[Map[String, Any]](line)
.mapValues {
case array: Iterable[Any] => array.mkString(", ")
case anyValue: Any => anyValue.toString
}
}https://stackoverflow.com/questions/40883816
复制相似问题