当前位置: 首页 > 编程语言 > C#

如何将以下JSON传递给C#补丁方法w或没有Javascript序列化程序分享

时间:2023-04-10 16:04:59 C#

C#学习教程:如何将以下JSON传递给带或不带Javascript序列化程序的C#补丁方法适用于StudioTeamServices(是VisualStudioOnline)。我遵循了https://www.visualstudio.com/integrate/api/wit/work-items我能够通过使用以下代码片段传递正确的ID来查询工作项:varuri=newUri("https://{实例}.visualstudio.com/DefaultCollection/_apis/wit/workitems/7?api-version=1.0");获取工作项(uri);publicstaticasyncvoidGetWorkItem(Uriuri){try{varusername="myusername";varpassword="我的密码";使用(HttpClientclient=newHttpClient()){client.DefaultRequestHeaders.Accept.Add(newMediaTypeWithQualityHeaderValue("application/json"));client.DefaultRequestHeaders.Authorization=newAuthenticationHeaderValue("Basic",Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}",username,password))));使用(HttpResponseMessageresponse=client.GetAsync(uri).Result){响应。EnsureSuccessStatusCode();字符串responseBody=awaitresponse.Content.ReadAsStringAsync();Console.WriteLine(responseBody);}控制台.Read();}}catch(Exceptionex){Console.WriteLine(ex.ToString());ole.Read();它正确返回此处指定的JSONhttps://www.visualstudio.com/integrate/api/wit/work-items#GetalistofworkitemsByIDs现在我正在尝试通过修改其标题来更新工作项https://www.visualstudio.com/integrate/api/wit/work-items#UpdateworkitemsUpdateafield为此,我写了一个方法:publicstaticasyncvoidUpdateWorkItemStatus(UrirequestUri,HttpContentiContent){{varmethod=newHttpMethod(“修补”);varrequest=newHttpRequestMessage(method,requestUri){Content=iContent};HttpResponseMessage响应;尝试{使用(HttpClientclient=newHttpClient()){varusername="myusername";varpassword="我的密码";client.DefaultRequestHeaders.Authorization=newAuthenticationHeaderValue("Basic",Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}",username,password))));response=awaitclient.SendAsync(request);响应.EnsureSuccessStatusCode();控制台.WriteLine(响应);控制台.Read();}}catch(TaskCanceledExceptione){Console.WriteLine("ERROR:"+e.ToString());控制台.Read();我通过传递我的json调整方法:varuri=newUri("https://{instance}.visualstudio.com/DefaultCollection/_apis/wit/workitems/7?api-version=1.0");stringjson=newJavaScriptSerializer().Serialize(new{op="replace",path="fields/System.Title",value="123NewTitle"});HttpContenthttpContent=newStringContent(json,Encoding.UTF8,"application/json-patch+json");UpdateWorkItemStatus(uri,httpContent);这符合https://www.visualstudio.com/integrate/api/wit/work-items#Updateworkitems中的信息他们没有任何代码示例,所以我使用JavascriptSerializer但这不会执行任何代码运行但没有输出并且我的工作项目没有被编辑。我不是确定是因为JavascriptSerializer格式不正确,但我以前使用过这个类并且工作正常。基本上我需要传递这个JSON:[{"op":"replace","path":"fields/System.Title","value":"NewTitle"}]任何关于如何让它运行并以正确格式传递JSON的帮助将不胜感激,即使不使用JSSerializer类。最终的想法是将它变成一个解释的适用于Unix的脚本,例如curl、Python或Perl。任何指示或建议也将不胜感激。我通常直接传递内容字符串,它是这样工作的:stringjson="[{"op":"replace","path":"/fields/System.Title","value":"Title"}]";JavaScriptSerializer生成的字符串json缺少“[”和“]”。顺便说一句,使用您提供的代码,如果您在UpdateWorkItemStatus(uri,httpContent)之前运行GetWorkItem(uri),则当应用程序自GetWorkItem()退出时,UpdateWorkItemStatus()将不会运行。以上就是C#学习教程:HowtopassthefollowingJSONtotheC#patchmethodwornoJavascriptserializer分享的全部内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多指教会多加关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: