我的应用使用aerospike将地图存储在其中一个垃圾箱中, 我使用endly进行e2e测试,它使用JSON进行数据表示:
如何使用JSON填充数据存储区,其中key需要为int? 由于json不允许int键我收到以下错误:无效字符'1'寻找对象键字符串的开头
这是我的数据工作流程(由回归工作流调用)
@ data.yaml
defaults:
datastore: db1
pipeline:
register:
action: dsunit:register
config:
driverName: aerospike
descriptor: "tcp([host]:3000)/[namespace]"
parameters:
dbname: db1
namespace: test
host: 127.0.0.1
port: 3000
dateFormat: yyyy-MM-dd hh:mm:ss
prepare:
data:
action: nop
init:
- key = data.db.mydaaset
- mydaaset = $AsTableRecords($key)
setup:
action: dsunit:prepare
URL: regression/db1/data/
data: $mydaaset
以下是我的用例级别数据:
@ mydaaset.json
[
{
"Table": "myDataset",
"Value": [{
"id": "$id",
"created": "$timestamp.yesterday",
"fc":{
1191: "$timestamp.yesterday",
1192: "$timestamp.now",
}
}],
"AutoGenerate": {
"id": "uuid.next"
},
"Key": "${tagId}_myDataset"
}
]
答案 0 :(得分:1)
在你的例子中,@ mydaaset.json文件是无效的JSON,因此你得到了
'invalid character '1' looking for beginning of object key string'
解析错误
为了使用map [int] int bin在aerospike中预先设置用例测试数据,可以使用AsInt UDF
@ mydaaset.json
[
{
"Table": "myDataset",
"Value": [{
"id": "$id",
"created": "$timestamp.yesterday",
"fc":{
"$AsInt(1191)": "$timestamp.yesterday",
"$AsInt(1192)": "$timestamp.now",
}
}],
"AutoGenerate": {
"id": "uuid.next"
},
"Key": "${tagId}_myDataset"
}
]