无法将类型为“System.Int64”的对象强制转换为类型“Newtonsoft.Json.Linq.JObject”。 这是什么鬼?弄了两天了,还是不行。

默萧笙故 2015-09-28 09:09:42
[WebMethod]
public string GetOrdersInfoByOrderID(string paraJson)
{

OrdersDAO oDAO = new OrdersDAO();
JObject obj = (JObject)JsonConvert.DeserializeObject(paraJson);

string strOrderID = obj["OrderID"].ToString();
int orderID = int.Parse(strOrderID);

DataTable dtOrder = oDAO.GetOrderInfoByOrderID(orderID);
//dtCustomer = cDAO.GetCustomerByID(int.Parse(dtOrder.Rows[0]["CustomerID"].ToString()));

return JsonConvert.SerializeObject(dtOrder, Constant.isoDateTimeConverter); ;
}
...全文
9883 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的parajson已经是orderid了吧?
ajianchina 2015-09-28
  • 打赏
  • 举报
回复
兄弟,你学会调试了,你自己能摆平八成的问题,不会的话每个都得上网找上论坛问,但网上的不一定跟你一样的原因,因为你不会调试,论坛里的人也不了解问题细节,所以现在看看vs调试方法,花半天时间。
默萧笙故 2015-09-28
  • 打赏
  • 举报
回复
那应该这么解决呢?
默萧笙故 2015-09-28
  • 打赏
  • 举报
回复
感谢大家的帮助。JObject obj = (JObject)JsonConvert.DeserializeObject(paraJson); 报错
  • 打赏
  • 举报
回复
你这服务好神奇,如果只是要传个orderid,干嘛不直接作为服务参数传,非要用json反序列化,然后你的异常又是在哪里报的,看代码估计是获取实体的地方,也就是dal读取出来进行转化时报错了,可能数据库里是big也就是对应long类型
失落的神庙 2015-09-28
  • 打赏
  • 举报
回复
看错了。 我以为winform的。
失落的神庙 2015-09-28
  • 打赏
  • 举报
回复
ResData换成 OrdersDAO 应该就OK了。
失落的神庙 2015-09-28
  • 打赏
  • 举报
回复
怎么能这样转换 应该这样
 try
            {
                var anonymous = new ResData();
                return (ResData)JsonConvert.DeserializeAnonymousType(res, anonymous);
            }
            catch
            { return new ResData(); }
江南小鱼 2015-09-28
  • 打赏
  • 举报
回复
哪行代码抛错?
wjq 2015-09-28
  • 打赏
  • 举报
回复
OrdersDAO oDAO = new OrdersDAO(); JObject obj = (JObject)JsonConvert.DeserializeObject(paraJson); string strOrderID = obj["OrderID"].ToString(); int orderID = int.Parse(strOrderID); 改成 OrdersDAO oDAO = new OrdersDAO(); int orderID = (int)JsonConvert.DeserializeObject(paraJson); 你想让人家传完整的对象给你,结果人家就给你一个int,你说是什么鬼?……用这种所谓灵活的接口,又不约定协议,就都是这种问题。 以上让你改动的不保证马上就能work,但你给DeserializeObject加个断点,看它实际反序列化之后实际是什么类型的再说。
software_artisan 2015-09-28
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
你这服务好神奇,如果只是要传个orderid,干嘛不直接作为服务参数传,非要用json反序列化,然后你的异常又是在哪里报的,看代码估计是获取实体的地方,也就是dal读取出来进行转化时报错了,可能数据库里是big也就是对应long类型
这种方式是webapi很常用的,好处是无论接口需要多少个参数,都可以合并成一个json数据对象,返回值也是一样。同时也可以很好地跨平台调用。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧