2017-05-26 108 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""}}]}}" 

當我通過POST提交JSON的URL,我得到BAD REQUEST 400The request sent by the client was syntactically incorrect

我已經通過驗證程序運行JSON和它出來了罰款。我也嘗試了諸如「用戶名」而不是「名稱」之類的不同的東西,在用戶名周圍引用更多的引號,比如""""jdoe"""",它會在提交時產生""jdoe""等,但似乎沒有任何區別。

在亞洲其他節目我能夠創建和關閉吉拉門票 - (。因此,爲什麼我沒有張貼),所以我知道我的HttpRequest和驗證碼是罰款

我研究過這個問題有很多CURL的例子,但這對我沒有什麼幫助。

+0

不應該Json是'@「{」「watchers」「:[{」「name」「:」「jdoe」「}]}」'? – stuartd

+0

好吧,爲了簡潔起見,我在第一篇文章中簡化了代碼。完整的代碼如下:'string addJiraWatcher = string.Format(@「{」「watchers」「:[{」「name」「:」「{0}」「}]}」,ConfigurationManager.AppSettings [「theboss」 ]);' 但是,當我使用該字符串時,輸入字符串的格式不正確。 :/ 我以這種方式使用的所有其他JSON查詢都需要將花括號加倍。但是,我已經將字符串輸出到標籤,並且刪除了雙引號和大括號 - 所以我假設它是如何在webrequest中提交的。 –

回答

1

只有當您使用這樣的字符串作爲String.Format的參數時,您才需要加倍{{。因此,如果你想發送只是常量字符串使用單個花括號,如`@「{」「watchers」「:[{」「name」「:」「jdoe」「}]}」。

請注意,最好使用JSON序列化程序來生成有效的JSON。通常JSON.Net是不錯的選擇:

var jsonString = JsonConvert.SerializeObject(
     new {watchers = new []{new {name = "jdoe"}}})