首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >com.fasterxml.jackson.databind.JsonMappingException

com.fasterxml.jackson.databind.JsonMappingException
EN

Stack Overflow用户
提问于 2016-11-30 08:46:53
回答 1查看 1.2K关注 0票数 0

我使用JacksMapper将JSON字符串解析为Map[String,String]

代码语言:javascript
复制
  def parseJSON(line: String): Map[String, String] = {
    JacksMapper.readValue[Map[String, String]](line)
  }

对于一些JSON字符串,它抛出错误:

代码语言:javascript
复制
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"这样的字符串。我如何灵活地执行它,以便解决方案能够适应在某些情况下可能是数组的其他可能字段?

编辑:在我的例子中,我从来没有使用静态类解析的复杂数组。只有数字或字符串的数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 11:17:14

你可以分两步完成:

  1. 解析JSON而不考虑值类型
  2. 映射值并在需要时进行转换

这可能会给出这样的结果:

代码语言:javascript
复制
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
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40883816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档