public CollectionjsonContent(Collection collection){ var serializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore,Formatting = Newtonsoft.Json.Formatting.Indented,ContractResolver = new CamelCasePropertynamesContractResolver() }; collection.Version = "1.0"; headers.ContentType = new MediaTypeheaderValue("application/vnd.collection+Json"); using (var writer = new JsonTextWriter(new StreamWriter(_memoryStream)){CloSEOutput = false}) { //var readdocument = new Readdocument(); {IReaddocument.Collection = collection}; var serializer = JsonSerializer.Create(serializerSettings); serializer.Serialize(writer,collection); writer.Flush(); } _memoryStream.position = 0;}
虽然上面的代码编译并在某种程度上解决了问题但是我将再次遇到另一个问题,即无法在我的控制器单元测试中使用JsonCollection内容.请考虑以下单元测试代码段:
using (var request = CreateRequest()) { var controller = new TestController(DataService) {Request = request}; var temp = await controller.ListAsync(grIDSearchData,sampleSearchData); if ((temp is NotFoundResult) && (sampleCollection.Any())) { Assert.Fail("Controller dID not return any result but query dID"); } var Json = await temp.ExecuteAsync(cancellationTokenSource); var readdocument = Json.Content.ReadAsAsync<Readdocument>(new[] {new CollectionjsonFormatter()},cancellationTokenSource).Result; }
由于我没有设置Readdocument的集合属性,因此readdocument始终为空,我无法读取其内容.
如何在WEB API项目中异步读取客户端JsonCollection的内容?
要了解方法的清晰图片,请查看Conference Web Api
和authors blog
我刚刚用这个修复程序推动了release 0.7.0,一个主要的命名重构以及对序列化的一个很好的改进,而不是写出空集合.
请参阅release notes以了解更改(特别是命名,因为包名称和命名空间已更改)
总结以上是内存溢出为你收集整理的c# – 在Web Api项目中阅读CollectionJson内容全部内容,希望文章能够帮你解决c# – 在Web Api项目中阅读CollectionJson内容所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)