LiteDB Studio导入JSON文件提示Unexpected token {报错如何解决
错误产生原因
- 你导入的JSON文件根节点是包含
Contact字段的对象,而非直接的文档数组。$file()函数默认读取JSON整个根节点内容,你写的SELECT $语句返回的是外层完整对象{"Contact": [...]},而不是可拆分插入集合的行数据。 - LiteDB 1.0.2版本的INSERT/INTO语法要求查询结果必须是可迭代的文档数组,当语法解析器读取到查询返回的首个字符是对象起始符
{而非数组起始符[时,就会触发位置0的Unexpected token {报错。
解决办法
根据你的使用需求任选一种方案即可:
方案1:修改导入查询语句(无需改动源JSON)
把查询语句调整为如下内容,直接提取JSON中Contact数组的元素作为导入行:
SELECT $.Contact[*] INTO new_col FROM $file('Sample.json');
执行完成后可以运行SELECT * FROM new_col验证导入的两条联系人数据是否正常。
方案2:修改源JSON结构(适配原有查询语句)
把JSON文件的外层Contact包装去掉,直接将数组作为根内容,修改后的JSON如下:
[ { "_id": 1, "FullName": "Lucy", "Email": "lucy@gmail.com", "Phone": "4584656970", "Address": "223 Str" }, { "_id": 2, "FullName": "Tom", "Email": "tom@gmail.com", "Phone": "4375588889", "Address": "123 Str" } ]
修改后你原来的导入语句即可正常运行。
内容的提问来源于stack exchange,提问作者rrirower
相关产品推荐
相关产品推荐

