JSON int密钥问题数据e2e(无效字符'1'查找对象密钥字符串的开头)

时间:2018-05-07 16:18:21

标签: json integration-testing aerospike end-to-end endly

我的应用使用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"
  }
]

1 个答案:

答案 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"
  }
]