HinataYasukawa
@HinataYasukawa

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

curlコマンドでinvalid characterエラーが直らない

解決したいこと

curlコマンドでJSON形式のデータをPOSTしようとしているのですがエラーが出ます。構文が間違っているのだろうと予想はつくのですが、調べてもコマンドが合っているように思えます。
BookTitleの'B'でエラーが出ていることは分かっています。

発生している問題・エラー

{"error":"invalid character 'B' looking for beginning of object key string"}

該当するソースコード

-X POST--jsonの二つのオプションでコマンドを試していますが、どちらも同じエラーが出ています。

curl -X POST -H "Content-Type: application/json" -d '{"BookTitle": "吾輩は猫である", "Content": "おもろかった"}' "http://localhost:8080/reviews"   
 curl --json '{"BookTitle": "吾輩は猫である", "Content": "おもろかった"}' "http://localhost:8080/reviews"   

自分で試したこと

  • Invoke-RestMethodを使う
    このコマンドを使うと解決はした。しかしcurlコマンドエラーの原因が知りたい
  • DBの構造を確認
    BookTitleとContentで間違いない。
  • curlコマンドの記述方法を検索
    合っているように思える。
  • URLの""を外す
    結果は変わらなかった

↓参照した記事

0

1Answer

構文はあっているのでBでエラーということは BookTitle の代わりに booktitle にしてみると変わりますか?
質問文をコピペで貼り付けてるので大丈夫かと思いますが全角空白は入ってませんか?

0Like

Comments

  1. @HinataYasukawa

    Questioner

    booktitleにすると、invalid character 'b'に変わります。
    全角空白は入ってません。

  2. タグのPowerShellを見落としてました
    PowerShellの場合JSONの値はシングルクォートで囲まないとエラーになります

    こうかな?

    curl.exe --data '"{\"BookTitle\": \"吾輩は猫である\", \"Content\": \"おもろかった\"}"' --verbose --request POST --url "http://localhost:8080/reviews"
    
  3. @HinataYasukawa

    Questioner

    すみませんPowerShellで実行と書き忘れていました。
    シングルクォート、ダブルクオート、中括弧の順番なのですね。
    教えて頂いたコマンドで実行できました!ありがとうございます!(',",\を微妙に違う形で書いていました...)

Your answer might help someone💌