curlでの登録時に[不正なJSON文字列です]とエラーが出る

curlを使ってkintoneにデータ登録を試みているのですが「不正なJSON文字列です」とのメッセージが出て登録できません。

過去事例も参照したのですが、原因と考えられるものとは違っていました。

 

curlで実施している内容は以下となります。

curl -X POST -H "X-Cybozu-API-Token:{my token}" -H "Content-Type:application/json" -d "{'app': {my app id},'record': {'取引先名': {'value': 'ABC'}}}" "https:///{sundomain}.cybozu.com/k/v1/record.json"

取引先名は文字列(1行)で作成されているフィールドです。

curlはWindows10のcmdターミナル(DOS上)で実行しています。

また、curlを使ったGETはできています。

-Hオプション、-dオプションに引き続いた項目ならびにURLをシングルクォートで括るとエラーが発生するためダブルクォートで括っています。

確認ポイントなどをご指導いただけないでしょうか?

 

坂田 泰平さん

こんにちは。ひよこです。

-d で指定する JSON のキーや値の囲み文字をダブルクォートにすれば解決しそうです。
ただし、-d で指定する文字列全体をダブルクォートで囲む必要があるので、JSON のキーや値の部分のダブルクォートはエスケープします。

-d"{\"app\": {my app id},\"record\": {\"取引先名\": {\"value\": \"ABC\"}}}"

参考:Windows 環境における curl コマンド利用のまとめ (平成最終版) - Qiita

自分の環境が Windows ではないので、手元では確認できてないのですが…。

ひよこさん

ご指摘ありがとうございます。

ダブルクォートで囲んだやり方を実施してみましたが、結果は変わりませんでした。

色々試した結果、ご指摘いただいた点の修正は必要かつ日本語はNGということがわかりました。

フィールドコードをアスキー文字に変えると登録でき、その状態で値を上記"ABC"から"あいう"にすると同様のエラーとなりました。

Windows10のDOS窓では実務としては使えないな。。。という感じですね。ちなみにPowerShellでcurl.exeを使った場合も同様の結果となりました。

OKのパターン
curl -X POST -H "X-Cybozu-API-Token:{my token}" -H "Content-Type:application/json" -d "{\"app\": \"252\",\"record\":{\"targetName\": {\"value\": \"xyz\"}}}" "https:///{subdomain}.cybozu.com/k/v1/record.json"

NGのパターン
curl -X POST -H "X-Cybozu-API-Token:UZ6ZewOiMj7dhr6XsImWX1MoeKjPIoNFtR4Zktgd" -H "Content-Type:application/json" -d "{\"app\": \"252\",\"record\":{\"取引先名\": {\"value\": \"xyz\"}}}" "https:///gmzgcx1rfjdp.cybozu.com/k/v1/record.json"

curl -X POST -H "X-Cybozu-API-Token:UZ6ZewOiMj7dhr6XsImWX1MoeKjPIoNFtR4Zktgd" -H "Content-Type:application/json" -d "{\"app\": \"252\",\"record\":{\"targetName\": {\"value\": \"あいう\"}}}" "https:///gmzgcx1rfjdp.cybozu.com/k/v1/record.json"