我正试着用李浩毅的ujson来读json字符串。这是字符串:
{
"dataflows": [
{
"name": "test",
"sources": [
{
"name": "person_inputs",
"path": "/data/input/events/person/*",
"format": "JSON"
}
],
"transformations": [
{
"name": "validation",
"type": "validate_fields",
"params": {
"input": "person_inputs",
"validations": [
{
"field": "office",
"validations": [
"notEmpty"
]
},
{
"field": "age",
"validations": [
"notNull"
]
}
]
}
},
{
"name": "ok_with_date",
"type": "add_fields",
"params": {
"input": "validation_ok",
"addFields": [
{
"name": "dt",
"function": "current_timestamp"
}
]
}
}
],
"sinks": [
{
"input": "ok_with_date",
"name": "raw-ok",
"paths": [
"/data/output/events/person"
],
"format": "JSON",
"saveMode": "OVERWRITE"
},
{
"input": "validation_ko",
"name": "raw-ko",
"paths": [
"/data/output/discards/person"
],
"format": "JSON",
"saveMode": "OVERWRITE"
}
]
}
]
}我就是这么读的:
val j = os.read(os.pwd/RelPath("src/main/scala/metadata.json"))
val jsonData = ujson.read(j)但是,返回类型是ujson.Obj,而不是Arr(ArrayBuffer(Obj),因此当我尝试获取jsonData(0)时,得到的是json.Value$InvalidData: Expected ujson.Arr。
我之所以问这个问题,是因为我试图使用ujson对象来创建upickle对象,但是我做不到,而且我怀疑这是因为这个初始错误。
知道为什么会这样吗?任何帮助都将不胜感激!提前谢谢!!
发布于 2021-07-06 07:21:27
JSON的外部元素不是数组,而是一个具有单个元素dataflows的对象,其值为数组。试试jsonData("dataflows")(0)。
https://stackoverflow.com/questions/68265672
复制相似问题