webapi接收集合数据

       最近在做一个项目,前端(angularjs)需要传递批量数据到webapi。开始想已Get方式提交,结果是单个对象(没问题,但是多个对象集合一起传递时,找不到api方法。  (单对象序列化后的JSON:"[{"REMARK":"备注","TYPE":"测试"}]",多对象序列化后的JSON:"[{"REMARK":"备注","TYPE":"测试"},{"REMARK":"备注1","TYPE":"测试1"}]",后台有此对象对应的实体)

        没办法,只好改用post方式提交。这次可以找到后台方法,但是又出现了新的问题,后台一直接收到的都是null。网上查来查去最后发现,后台接收数据类型定义成动态类型(dynamic)可以接收到数据,到此终于有了进展,还是挺开心的。

      数据是接收到了,可是接收到的是dynamic类型的,这个类型的数据该怎么使用呢,继续问度娘吧。结果发现网上说的都是直接当做对象使用,或者可以直接强转成对应的实体类集合。这个挺好,试试吧。结果悲剧了,各种错误,完全行不通。没办法只能自己来,仔细观察接收到的dynamic数据,发现反序列JSON失败的原因,是因为接收到的数据不是标准JSON格式,像("data": "{\"Test\":\"[{\\\"REMARK":\\\"备注\\\",\\\"TYPE\\\":\\\"测试\\\"},{\\\"REMARK\\\":\\\"备注1\\\",\\\"TYPE\\\":\\\"测试1\\\"}]\"}")这样,所以反序列化的时候失败。

       所以想要反序列化成功,需要把数据转成成标准JSON格式。我是这样处理的,先用Convert.ToString()把dynamic类型转化成string,然后截取集合部分即:{\\\"REMARK":\\\"备注\\\",\\\"TYPE\\\":\\\"测试\\\"},{\\\"REMARK\\\":\\\"备注1\\\",\\\"TYPE\\\":\\\"测试1\\\"}],最后再用replace方法把\\\替换成"",得到的数据就可以反序列化成集合对象了。

      第一次写着玩,或许问题很简单,留着做个纪念吧。描述的不好,敬请谅解。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值