想要使用Scala进行idea JSON解析吗

想要使用Scala进行idea JSON解析吗,json,scala,Json,Scala,以下是我的JSON格式: {"copybook": { "item": { "storage-length": 1652, "item": [ { "storage-length": 40, "level": "05", "name": "OBJECT-NAME", "display-length": 40

以下是我的JSON格式:

{"copybook": {
    "item": {
        "storage-length": 1652,
        "item": [
            {
                "storage-length": 40,
                "level": "05",
                "name": "OBJECT-NAME",
                "display-length": 40,
                "position": 1,
                "picture": "X(40)"
            },
            {
                "storage-length": 8,
                "occurs-min": 0,
                "level": "05",
                "name": "C-TCRMANKEYBOBJ-OFFSET",
                "numeric": true,
                "display-length": 8,
                "position": 861,
                "occurs": 99,
                "depending-on": "C-TCRMANKEYBOBJ-COUNT",
                "picture": "9(8)"
            }
        ],
        "level": "01",
        "name": "TCRMCONTRACTBOBJ",
        "display-length": 1652,
        "position": 1
    },
    "filename": "test.cbl"
}}
如何解析此json并将其转换为CSV格式?我使用的是Scala默认的JSON解析器。我面临的主要问题是,我无法使用case类提取数据,因为项目数组中的所有项目名称都不相同


这个格式对我来说没问题,请按照这个链接粘贴JSON-。欢迎使用任何scala代码。我得到以下数据:

implicit val formats = DefaultFormats
val json2 = parse(jsonString, false) \\ "item"
val list = json2.values.asInstanceOf[List[Map[String, String]]]
    for (obj <- list) {
      //println(obj.keys) 
      //obj.values
      println (obj.toList.mkString(","))

    } 

(name,OBJECT-NAME),(storage-length,40),(picture,X(40)),(position,1),(display-length,40),(level,05) 
(name,C-TCRMANKEYBOBJ-OFFSET),(storage-length,8),(occurs-min,0),(occurs,99),(picture,9(8)),(position,861),(numeric,true),(depending-on,C-TCRMANKEYBOBJ-COUNT),(display-length,8),(level,05)
implicit val formats=DefaultFormats
val json2=parse(jsonString,false)\\\“项”
val list=json2.values.asInstanceOf[list[Map[String,String]]

for(obj在遍历方面可以更好地为您工作。请尝试阅读。

在遍历方面可以更好地为您工作。请尝试阅读。

csv格式确实需要固定的模式,因此您需要知道json中所有可能的“平坦”路径:如“copybook.item.storage length”、“copybook.item.item.storage length”和所有其他路径当你横穿马路时,你会得到“叶子”,想法是横穿json并收集所有唯一的叶子。它们将代表csv完整模式。对于数组项,这取决于你的设计,但最简单的展开-这可以扩展到${array_size}记录,其中一组字段[从每个数组项]展开正在分解的记录之间更改,其余的json记录(普通字段)是相同的。这种格式对我来说没问题,请按照此链接粘贴json-。任何scala代码都非常感谢。我得到以下数据:请发电子邮件给我,因为CSV格式确实需要固定的模式,因此您需要知道所有可能的“模式”json中的路径:如“copybook.item.storage length”、“copybook.item.item.storage length”和所有其他“leave”当你沿着这条路走下去的时候,你会得到的想法是遍历json并收集所有唯一的叶子。它们将代表csv完整模式。对于数组项,这取决于你的设计,但是最简单的展开-这可以扩展到${array_size}记录,其中一组字段[从每个数组项]展开正在分解的记录之间更改,其余的json记录(普通字段)是相同的。此格式对我来说没问题,请按照此链接粘贴json-。任何scala代码都非常感谢。我得到以下数据:请发电子邮件给我