json - 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
虽然我做得对,但为什么我会出错。我已经重新检查了很多次
解决方案
推荐阅读
- apache-spark - Spark RDD 以独占方式按键分区
- python - 如何在熊猫数据框中查找连续相同字符串值的计数?
- python - 如何判断我的 Python 包是否使用 C 扩展?
- stata - 如何以编程方式创建宏的名称并将其用作宏?
- python - 使用 Python 中的第二列按字母顺序排列文本文件
- ios - 编辑 Swift 4 时 TextField 消失
- python - Python Scrapy - 无法登录网站
- angularjs - AngularJs ng-repeat 有条件地按限制过滤
- reactjs - 如何在特定时间后取消 axios 调用
- javascript - Javascript 中奖百分比算法