object[]类型的数据如何处理和读取

anabiosispe 2013-03-17 06:25:33
碰到这么一个问题
通过webservice执行一个函数,返回值是一个object[]数组
然后里面每一个元素又是一个数组,也就是说object[0]本身也有一系列子元素,这些子元素是short类型数值。
但是我没能直接short[] array=object[0] as short[]这么转换。
也没能object[0][0]这样来访问object[]中第一个元素的第一个子元素。

请问应该如何访问这种数值?
...全文
1031 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
AddressRelation[][] relations = innerEventArgs.Result as AddressRelation[][]; 这是偶用的。。肯定是没问题的。也是调用webservice的方法返回的。只是用了异步而已 如果你的是short数组的数组那么换一下 short[][] relations = webRtn as short[][]; 试试看了。。。
  • 打赏
  • 举报
回复
shawn_yang 2013-03-28
  • 打赏
  • 举报
回复
返回值和是不是webservice无关,是开发人员事先定义的
anabiosispe 2013-03-28
  • 打赏
  • 举报
回复
多谢大家的热心帮助。 这个有点蛋疼,不太清楚webservice内部的数据转换,ArrayList会返回出什么东西来。 后来我的数据读出来了,这么搞一搞单个数据强制转换,挨个取出来后,再存到数组里 short data=(short)(((object[])ecgData[i])[j]);
happyer_longlong 2013-03-18
  • 打赏
  • 举报
回复
说明你传输数据的时候么有指定类型,要做强类型化处理
anabiosispe 2013-03-18
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
你应该要求对方给你一个傻瓜化的服务方法组,而不是给你空洞的东西。
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public System.Collections.ArrayList GetData(int Id) { DataClassesDataContext db = new DataClassesDataContext(); Ecg ecg = db.Ecgs.First(p => p.id == ecgId); short[,] data = (short[,])Helper.ByteArrayToObject(ecg.ecg_data.ToArray()); System.Collections.ArrayList al = new System.Collections.ArrayList(); int length = data.GetUpperBound(1); for (int k = 0; k < 12; k++) { System.Collections.ArrayList inner = new System.Collections.ArrayList(); for (int i = 0; i < length; i++) { inner.Add(data[k, i]); } al.Add(inner); } return al; } 我看到了源代码,但是不知道怎么把数据取出来。 把webservice函数返回的object[]直接转arrayList,编译时也提示不能转
jxwangjm 2013-03-18
  • 打赏
  • 举报
回复
应该是 short[] data=(short[])(object[0]);
兔子-顾问 2013-03-18
  • 打赏
  • 举报
回复
short[] sarr = (object[0] as object[]).Select(o=>(short)o).ToArray();
phommy 2013-03-18
  • 打赏
  • 举报
回复
如果你只是问short[]到object[]的转换,逐个转就是了。就算用Cast<>其实也是逐个转的 至于接口到底返回的是啥,能找到人就问人,找不到就跟踪起来监视窗口一下就看见了。经常维护别人的代码已经习惯这么做了,比去问作者还方便
  • 打赏
  • 举报
回复
你应该要求对方给你一个傻瓜化的服务方法组,而不是给你空洞的东西。
anabiosispe 2013-03-17
  • 打赏
  • 举报
回复
引用 6 楼 jxwangjm 的回复:
楼主的意思是WebService返回一个Object[]数组,它的子元素也是Short[] webservice的设计者跟我说可以short[] data=object[0]这么用 对啊,就这样就可以啊
我可能还是需要去确认一下类型,或者做一下反射吧
jxwangjm 2013-03-17
  • 打赏
  • 举报
回复
楼主的意思是WebService返回一个Object[]数组,它的子元素也是Short[] webservice的设计者跟我说可以short[] data=object[0]这么用 对啊,就这样就可以啊
skcry 2013-03-17
  • 打赏
  • 举报
回复
Object 已经是最基类型了,什么东西都能转成object,但是反起来就有问题,还是需要看是啥类型
threenewbee 2013-03-17
  • 打赏
  • 举报
回复
webservice的设计者跟我说可以short[] data=object[0]这么用 他自己都不知道他写的东西能做什么,他写的东西你还怎么调用。
diandian0122 2013-03-17
  • 打赏
  • 举报
回复
1、自己知道类型,拆箱 2、自己不知道类型,反射获取类型
anabiosispe 2013-03-17
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
设计你的服务方法时,其参数给出具体到实体的类型,而不是object。 如果你设计时含糊地不知道类型,程序也就像无头苍蝇一样。
我暂时没有看到原webservice的源代码 只能用对象管理器看见提供的函数原型 public object[] GetData(int Id) webservice的设计者跟我说可以short[] data=object[0]这么用,但是实际上不行,data数组没有值
  • 打赏
  • 举报
回复
设计你的服务方法时,其参数给出具体到实体的类型,而不是object。 如果你设计时含糊地不知道类型,程序也就像无头苍蝇一样。

110,536

社区成员

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

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

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