json - scala ujson.read() 返回 ujson.Obj
问题描述
我正在尝试使用李浩毅的 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 对象,但我不能,我怀疑这是因为这个初始错误。
关于为什么会发生这种情况的任何想法?任何帮助将不胜感激!提前致谢!!
解决方案
JSON 的外部元素不是数组,它是具有单个元素的对象,dataflows
其值为数组。试试jsonData("dataflows")(0)
。
推荐阅读
- jquery - 问题:选中 input[type="radio"] 时 jQuery 更改 css(值)
- tensorflow - 直接从缓存对象加载 tensorflow 数据集
- c++ - 为 operator<< 重载调用模板成员函数不匹配
- reactjs - React useState 切换仅切换一次
- java - 尝试在空对象引用上调用虚拟方法 'androidx.lifecycle.LiveData com.example.xxx.viewmodels.CoffeeViewModel.getAllOrders()'
- rust - 有没有一种好方法可以让服务器的客户端直接访问其他客户端而不使用互斥锁?
- google-cloud-automl - 当他们说:“至少 8、1、1 个边界框分别分配给您的训练集、验证集和测试集时,谷歌是什么意思(谷歌云视觉 API)
- asp.net - 在引用的 dll 中获取 ASPNET CORE Web 应用程序的根文件夹位置时面临问题
- python - docxtpl 中的上下文未更新
- python - 部署 PWA 问题