【问题标题】:reading json file using jackson library in scala language在scala语言中使用jackson库读取json文件
【发布时间】:2021-05-19 14:00:07
【问题描述】:

我是 scala 语言的新手,我正在尝试使用 jackson 库读取我的 scala 文件中的 json 文件

我儿子的档案是这样的

{
  "Rice":[
    {
      "name":"Basmati",
      "price":40
    },
    {
      "name":"jeera",
      "price":30
    },
    {
      "name":"Indrayani",
      "price":40
    }
  ],
  "Pulses":[
    {
      "name":"peas",
      "price":60
    },
    {
      "name":"ground nut",
      "price":60
    },
    {
      "name":"dal",
      "price":80
    }
  ],
  "Wheats":[
    {
      "name":"atta",
      "price":40
    },
    {
      "name":"bread",
      "price":45
    },
    {
      "name":"bun",
      "price":50
    }
  ]
}

我尝试使用案例类来存储和打印数据 像这样的代码示例

case class Inventory(var name:String,var price:String)

object InventoryDataManagement {
  def main(args: Array[String]): Unit = {
    val mapper = JsonMapper.builder()
      .addModule(DefaultScalaModule)
      .build()

    val src = new File("src/main/json/inventary.json")

    val myMap = mapper.readValue(src,classOf[Inventory])

    println(myMap.name)
  }
}

但我收到如下错误

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Rice" (class Inventory), not marked as ignorable (2 known properties: "price", 
"name"])

请帮助理解这一点 提前谢谢!!!

【问题讨论】:

    标签: json scala jackson


    【解决方案1】:

    无法识别的字段“Rice”(库存类)

    此错误应该让您注意到 Jackson 正在 Inventory 类上查找字段 Rice,这没有意义。

    为什么会这样?

    因为您告诉 Jackson 将您的 JSON 文件作为单个 Inventory 实例读取。

    这不是您的 JSON 文件包含的内容,它包含可以表示为 Map[String, Seq[Inventory]] 的内容。

    你应该尝试这样的事情:

    mapper.readValue(src,classOf[Map[String, Seq[Inventory]]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-06
      • 2021-12-07
      • 2023-03-29
      • 1970-01-01
      • 2014-12-13
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多