首页 > 解决方案 > json到案例类提取给出错误

问题描述

我有一个 json,我必须从中将值填充到 scala 案例类,但是在我填充它时它给出了错误。我正在使用 lift json 3.3.0 进行转换

Scala 案例类

package sampling

    case class JobJson(name:String,id:String,dataflowId:String,properties:Properties)
    case class Properties(activities:List[Activity],activityGroup:List[ActivityGroup])
    case class Activity(name:String,types:String,id:String,inputs:List[Inputs],outputs:List[Outputs],runtimeInfo:Map[String,Any],start:String,end:String)
    case class Inputs(properties:InputProperties,sourceConnection:SourceConnection)
    case class InputProperties(structure:List[Structure],translator:List[Translator])
    case class Structure(index:Int,name:String,dataType:String)
    case class Translator(index:Int,name:String,dataType:String)
    case class SourceConnection(connectionType:String,fileName:String,linkedService:String,location:String,datasetId:String,datafileId:String)
    case class Outputs(properties:OutputProperties,destConnection:DestConnection)
    case class OutputProperties(structure:List[OutputStructure],translator:String)
    case class OutputStructure(index:Int,name:String,dataType:String)
    case class DestConnection(connectionType:String,fileName:String,linkedService:String,location:String,datasetId:String,datafileId:String)
    case class ActivityGroup(name:String,id:String,properties:ActivityGroupProperty)
    case class ActivityGroupProperty(activityList:List[ActivityList])
    case class ActivityList(id:String,order:String)

代码填充位置


    implicit val formats = net.liftweb.json.DefaultFormats;
      val p= parse(json).extract[JobJson];
      println(p);

JSON


    {
      "name": "new flow test 3",
      "id": "2e456f79-b62d-44df-a809-18a2e0af9377",
      "dataflowId": "2e456f79-b62d-44df-a809-18a2e0af9377",

      "properties": {
        "Activities": [
          {
            "name": "Time Series Anamoly Detection",
            "types": "Robust Principal Component Analysis",
            "id": "g0a1",
            "inputs": [
              {
                "properties": {
                  "structure": [
                    {
                      "index": 1,
                      "name": "Survived",
                      "dataType": "integer"
                    },
                    {
                      "index": 2,
                      "name": "Pclass",
                      "dataType": "integer"
                    }
                  ],
                  "translator": [
                    {
                      "index": 1,
                      "name": "Survived",
                      "dataType": "integer"
                    },
                    {
                      "index": 2,
                      "name": "Pclass",
                      "dataType": "integer"
                    }
                  ]
                },
                "sourceConnection": {
                  "connectionType": "AzureBlob",
                  "fileName": "Titanic.csv",
                  "linkedService": "sasurl",
                  "location": "wasbs://DFC33643-64A3-4A15-B3C0-17AA97C37FFD@olympusstoragedev.blob.core.windows.net/F2E42EC7-635E-4522-8EB2-2270D7AB4387/F011ED33-FBF3-46FB-BB0B-A797734257FC/pqlzn.csv",
                  "datasetId": "F2E42EC7-635E-4522-8EB2-2270D7AB4387",
                  "datafileId": "F011ED33-FBF3-46FB-BB0B-A797734257FC"
                }
              }
            ],
            "outputs": [
              {
                "properties": {
                  "structure": [
                    {
                      "index": 1,
                      "name": "Survived",
                      "dataType": "integer"
                    },
                    {
                      "index": 2,
                      "name": "Pclass",
                      "dataType": "integer"
                    }
                  ],
                  "translator": null
                },
                "destConnection": {
                  "connectionType": "AzureBlob",
                  "fileName": "Titanic.csv",
                  "linkedService": "sasurl",
                  "location": "wasbs://DFC33643-64A3-4A15-B3C0-17AA97C37FFD@olympusstoragedev.blob.core.windows.net/F2E42EC7-635E-4522-8EB2-2270D7AB4387/F011ED33-FBF3-46FB-BB0B-A797734257FC/pqlzn.csv",
                  "datasetId": "F2E42EC7-635E-4522-8EB2-2270D7AB4387",
                  "datafileId": "F011ED33-FBF3-46FB-BB0B-A797734257FC"
                }
              }
            ],
            "runtimeInfo": {
              "metric": "Survived",
              "defineOutput": "Exclude Anomaly",
              "selectDateColumn": "Pclass"
            },
            "start": "st",
            "end": "end"
          },
          {
            "name": "Seetal Dataset",
            "types": "output",
            "id": "g0a2",
            "inputs": [
              {
                "properties": {
                  "structure": [
                    {
                      "index": 1,
                      "name": "Survived",
                      "dataType": "integer"
                    },
                    {
                      "index": 2,
                      "name": "Pclass",
                      "dataType": "integer"
                    }
                  ],
                  "translator": [
                    {
                      "index": 1,
                      "name": "Survived",
                      "dataType": "integer"
                    },
                    {
                      "index": 2,
                      "name": "Pclass",
                      "dataType": "integer"
                    }
                  ]
                },
                "sourceConnection": {
                  "connectionType": "AzureBlob",
                  "fileName": "Titanic.csv",
                  "linkedService": "sasurl",
                  "location": "wasbs://DFC33643-64A3-4A15-B3C0-17AA97C37FFD@olympusstoragedev.blob.core.windows.net/F2E42EC7-635E-4522-8EB2-2270D7AB4387/F011ED33-FBF3-46FB-BB0B-A797734257FC/pqlzn.csv",
                  "datasetId": "F2E42EC7-635E-4522-8EB2-2270D7AB4387",
                  "datafileId": "F011ED33-FBF3-46FB-BB0B-A797734257FC"
                }
              }
            ],
            "outputs": [
              {
                "properties": {
                  "structure": [
                    {
                      "index": 1,
                      "name": "Survived",
                      "dataType": "integer"
                    },
                    {
                      "index": 2,
                      "name": "Pclass",
                      "dataType": "integer"
                    }
                  ],
                  "translator": null
                },
                "destConnection": {
                  "connectionType": "AzureBlob",
                  "fileName": "Titanic.csv",
                  "linkedService": "sasurl",
                  "location": "wasbs://DFC33643-64A3-4A15-B3C0-17AA97C37FFD@olympusstoragedev.blob.core.windows.net/F2E42EC7-635E-4522-8EB2-2270D7AB4387/F011ED33-FBF3-46FB-BB0B-A797734257FC/F011ED33-FBF3-46FB-BB0B-A797734257FC.csv",
                  "datasetId": "F2E42EC7-635E-4522-8EB2-2270D7AB4387",
                  "datafileId": "F011ED33-FBF3-46FB-BB0B-A797734257FC"
                }
              }
            ],
            "runtimeInfo": {

            },
            "start": "st",
            "end": "end"
          }
        ],
    "activityGroup": [
                {
                    "name": "grp1",
                    "id": "g0",
                    "properties": {
                        "activityList": [
                            {
                                "id": "g0a0",
                                "order": "0"
                            },
                            {
                                "id": "g0a1",
                                "order": "1"
                            },
                            {
                                "id": "g0a2",
                                "order": "2"
                            }
                        ]
                    }
                }
            ]

      }

    }

错误

Exception in thread "main" net.liftweb.json.MappingException: No usable value for properties
No usable value for activities
No usable value for types
Did not find value which can be converted into java.lang.String
    at net.liftweb.json.Meta$.fail(Meta.scala:227)
    at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:438)
    at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:385)
    at net.liftweb.json.Extraction$$anonfun$15.apply(Extraction.scala:260)
    at net.liftweb.json.Extraction$$anonfun$15.apply(Extraction.scala:260)
    at scala.collection.immutable.List.map(List.scala:277)
    at net.liftweb.json.Extraction$.instantiate$1(Extraction.scala:260)
    at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:308)
    at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:379)
    at net.liftweb.json.Extraction$.extract0(Extraction.scala:444)
    at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$extract0(Extraction.scala:206)
    at net.liftweb.json.Extraction$.extract(Extraction.scala:43)
    at net.liftweb.json.JsonAST$JValue.extract(JsonAST.scala:704)
    at sampling.Main$.delayedEndpoint$sampling$Main$1(Main.scala:417)
    at sampling.Main$delayedInit$body.apply(Main.scala:68)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
    at scala.App$class.main(App.scala:76)
    at sampling.Main$.main(Main.scala:68)
    at sampling.Main.main(Main.scala)
Caused by: net.liftweb.json.MappingException: No usable value for activities
No usable value for types
Did not find value which can be converted into java.lang.String
    at net.liftweb.json.Meta$.fail(Meta.scala:227)
    at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:438)
    at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:385)
    at net.liftweb.json.Extraction$$anonfun$15.apply(Extraction.scala:260)
    at net.liftweb.json.Extraction$$anonfun$15.apply(Extraction.scala:260)
    at scala.collection.immutable.List.map(List.scala:273)
    at net.liftweb.json.Extraction$.instantiate$1(Extraction.scala:260)
    at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:308)
    at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:379)
    at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:431)
    ... 22 more
Caused by: net.liftweb.json.MappingException: No usable value for types

虽然我做得对,但为什么我会出错。我已经重新检查了很多次

标签: jsonscala

解决方案


推荐阅读