2017-05-26 11 views
0

既存のJiraの問題にウォッチャーを追加しようとすると、JSON文字列に構文上の問題がありますが、何か分かりません。C#JSONとREST APIを使ってJira isseにウォッチャーを追加する

string URL = "http://jira/rest/api/2/issue/TS-1000/watchers" 
string JSON = @"{{""watchers"":[{{""name"":""jdoe""}}]}}" 

私はBAD REQUEST 400The request sent by the client was syntactically incorrect

取得URLにPOST経由でJSONを送信すると、私はバリデータによってJSONを実行したのだが、罰金出てきました。私はまた、 "名前"の代わりに "username"のような別のものを試してきました。""""jdoe""""のようなユーザー名の周りには、""jdoe""が出てきます。何も違いはないようです。他の場所で、私は近くのJIRAチケットを作成し、することができるよプログラムで

- (。私はそれを投稿しなかった理由それゆえ)ので、私は私のHttpRequestと認証コードは大丈夫です知っている私は、この問題を調査してきました

CURLには多くの例がありますが、それは私にとってはあまり役に立ちません。

+0

は、JSONは '@ "{" ":[{" "ウォッチャー" "名前" ":" "jdoeを" "}]}" すべきではありませんか'? – stuartd

+0

まあ、簡潔にするために、私は最初の投稿でコードを凝縮します。 'ストリングaddJiraWatcher = String.Formatの(@ "{" "ウォッチャー" ":[{" "名前" ":" "{0}" "}]}"、ConfigurationManager.AppSettings [ "theboss" フルラインはこれです]); ' しかし、私はその文字列を使用する場合、私は例外'入力文字列が正しいformat.'ではありませんでした得ます。 :/ このように使用した他のすべてのJSONクエリには、中括弧を2倍にする必要があります。しかし、私は文字列をラベルに出力し、二重引用符と中括弧は削除されています - それで、それがWeb要求でどのように提出されたかを仮定します。 –

答えて

1

パラメータString.Formatにこのような文字列を使用する場合のみ、{{を二重にする必要があります。ですから、ただ定数の文字列を送信したいのであれば、 `@" {"" watchers "":[{"" name "": "" jdoe ""}}} "のような単一の中括弧を使用してください。

JSONシリアライザを使用して有効なJSONを生成する方がよいことに注意してください。通常JSON.Netは良い選択です:

var jsonString = JsonConvert.SerializeObject(
     new {watchers = new []{new {name = "jdoe"}}}) 
関連する問題