2017-05-26 65 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"}}})