You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CURL导入Meilisearch数据时触发Invalid JSON: line 1 column 1报错

报错核心诱因
  • 你目前的Meilisearch Docker启动流程、本地JSON文件校验逻辑都是完全合规的,唯一的问题点出在CURL的参数使用上:--data参数的作用是将其后紧跟的字符串直接作为请求体内容发送,不会自动读取对应路径下的本地文件。
  • 按照你现有写法执行时,Meilisearch实际收到的请求体只是纯字符串"products.json"或者"movies.json"本身,完全没有读到你本地存储的合法JSON数据。这时候JSON解析器在请求体的第1行第1个位置,收到的是字母p或m,既不是对象起始符{也不是数组起始符[,自然会触发「Invalid JSON: expected value at line 1 column 1」的报错。
  • 这个报错和你本地JSON文件的格式合规性完全无关——哪怕你反复校验文件、甚至直接用Meilisearch官方提供的示例JSON测试,只要请求没有把文件的实际内容发送到服务端,报错就会稳定复现。
修正后的正确请求写法

要让curl正确读取本地JSON文件的内容并作为请求体发送,只需要在文件路径前加@前缀,告知curl需要从对应文件中加载内容:

  • 原products索引的导入命令修正后:
curl -X POST 'http://127.0.0.1:7700/indexes/products/documents' --data @products.json
  • 原movies示例数据的导入命令修正后:
curl -X POST 'http://127.0.0.1:7700/indexes/movies/documents' --data @movies.json

可选的兼容性优化写法

  • 手动指定JSON格式的请求头,避免curl默认携带的表单格式头部引发不必要的校验问题:
curl -X POST 'http://127.0.0.1:7700/indexes/movies/documents' \
  -H 'Content-Type: application/json' \
  --data @movies.json
  • 导入体积超过1GB的大JSON文件时,替换--data为--data-binary,避免curl对内容做不必要的转义处理,同时降低大文件传输的内存占用:
curl -X POST 'http://127.0.0.1:7700/indexes/movies/documents' \
  -H 'Content-Type: application/json' \
  --data-binary @movies.json

注意事项

  • @符号和文件路径之间不能加空格,否则会被curl识别为要发送带@前缀的纯字符串,依旧会触发相同的JSON解析错误。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 06:45:10