问题描述
这个是类似的json['LiveGame':{'TaskRoleSpaces':'选1','TaskRoles':'赛事1','ProxyUserID':'轮次1','UserID':'比赛时间1'},{'TaskRoleSpaces':'选2','TaskRoles':'赛事2','ProxyUserID':'轮次2','UserID':'比赛时间2'}],'Lottery':{'TaskRoleSpaces':'选1','TaskRoles':'赛事1','ProxyUserID':'轮次1','UserID':'比赛时间1'},{'TaskRoleSpaces':'选2','TaskRoles':'赛事2','ProxyUserID':'轮次2','UserID':'比赛时间2'}]
我想获取LiveGame这个方法里面的数据{'TaskRoleSpaces':'选1','TaskRoles':'赛事1','ProxyUserID':'轮次1','UserID':'比赛时间1'},{'TaskRoleSpaces':'选2','TaskRoles':'赛事2','ProxyUserID':'轮次2','UserID':'比赛时间2'}]
如何实现?最好的话,能实现获取摸个方法下的数据,然后在获取,数据里面的各个字段的数据。
解决方案
解决方案二:
首先,格式就有问题,猜测是开头的[后面少了{,然后通篇都是单引号,要先替换成双引号,好吧,后面还有各种bug,可以正确的格式如下{"LiveGame":[{"TaskRoleSpaces":"选1","TaskRoles":"赛事1","ProxyUserID":"轮次1","UserID":"比赛时间1"},{"TaskRoleSpaces":"选2","TaskRoles":"赛事2","ProxyUserID":"轮次2","UserID":"比赛时间2"}],"Lottery":[{"TaskRoleSpaces":"选1","TaskRoles":"赛事1","ProxyUserID":"轮次1","UserID":"比赛时间1"},{"TaskRoleSpaces":"选2","TaskRoles":"赛事2","ProxyUserID":"轮次2","UserID":"比赛时间2"}]}
对应的json类就是publicclassRootobject{publicLivegame[]LiveGame{get;set;}publicLottery[]Lottery{get;set;}}publicclassLivegame{publicstringTaskRoleSpaces{get;set;}publicstringTaskRoles{get;set;}publicstringProxyUserID{get;set;}publicstringUserID{get;set;}}publicclassLottery{publicstringTaskRoleSpaces{get;set;}publicstringTaskRoles{get;set;}publicstringProxyUserID{get;set;}publicstringUserID{get;set;}}
用Newtonsoft.Json反序列化后随便怎么操作了
解决方案三:
引用1楼starfd的回复:
首先,格式就有问题,猜测是开头的[后面少了{,然后通篇都是单引号,要先替换成双引号,好吧,后面还有各种bug,可以正确的格式如下{"LiveGame":[{"TaskRoleSpaces":"选1","TaskRoles":"赛事1","ProxyUserID":"轮次1","UserID":"比赛时间1"},{"TaskRoleSpaces":"选2","TaskRoles":"赛事2","ProxyUserID":"轮次2","UserID":"比赛时间2"}],"Lottery":[{"TaskRoleSpaces":"选1","TaskRoles":"赛事1","ProxyUserID":"轮次1","UserID":"比赛时间1"},{"TaskRoleSpaces":"选2","TaskRoles":"赛事2","ProxyUserID":"轮次2","UserID":"比赛时间2"}]}对应的json类就是publicclassRootobject{publicLivegame[]LiveGame{get;set;}publicLottery[]Lottery{get;set;}}publicclassLivegame{publicstringTaskRoleSpaces{get;set;}publicstringTaskRoles{get;set;}publicstringProxyUserID{get;set;}publicstringUserID{get;set;}}publicclassLottery{publicstringTaskRoleSpaces{get;set;}publicstringTaskRoles{get;set;}publicstringProxyUserID{get;set;}publicstringUserID{get;set;}}
用Newtonsoft.Json反序列化后随便怎么操作了
谢谢,这个主要是我在.netcs中写的,所以用的单引号,格式是我直接截取json里面的一段,错了,可能是不小心,具体的是直接调用的接口所有json不太可能错publicclassRootobject{publicLivegame[]LiveGame{get;set;}publicLottery[]Lottery{get;set;}}publicclassLivegame{publicstringTaskRoleSpaces{get;set;}publicstringTaskRoles{get;set;}publicstringProxyUserID{get;set;}publicstringUserID{get;set;}}publicclassLottery{publicstringTaskRoleSpaces{get;set;}publicstringTaskRoles{get;set;}publicstringProxyUserID{get;set;}publicstringUserID{get;set;}}//公共变量publicstringshuju;//获取数据方法publicvoidMain(){stringjson=@"{'LiveGame':[{'TaskRoleSpaces':'选1','TaskRoles':'赛事1','ProxyUserID':'轮次1','UserID':'比赛时间1'},{'TaskRoleSpaces':'选2','TaskRoles':'赛事2','ProxyUserID':'轮次2','UserID':'比赛时间2'}],'Lottery':[{'TaskRoleSpaces':'选1','TaskRoles':'赛事1','ProxyUserID':'轮次1','UserID':'比赛时间1'},{'TaskRoleSpaces':'选2','TaskRoles':'赛事2','ProxyUserID':'轮次2','UserID':'比赛时间2'}]}";List<Rootobject>jobInfoList=JsonConvert.DeserializeObject<List<Rootobject>>(json);foreach(RootobjectjobInfoinjobInfoList){shuju="";//shuju+=@"<trstyle='border-bottom:1pxsolid#CDCDCD;height:40px;margin:0px;padding:0px'>";//shuju+="<tdstyle='border:1pxsolid#CDCDCD;width:30px;margin:0px;padding:0px'>"+jobInfo.TaskRoleSpaces+"</td>";//shuju+="<tdstyle='border:1pxsolid#CDCDCD;width:30px;margin:0px;padding:0px'>"+jobInfo.TaskRoles+"</td>";//shuju+="<tdstyle='border:1pxsolid#CDCDCD;width:30px;margin:0px;padding:0px'>"+jobInfo.ProxyUserID+"</td>";//shuju+="<tdstyle='border:1pxsolid#CDCDCD;width:30px;margin:0px;padding:0px'>"+jobInfo.UserID+"</td>";//shuju+=@"</tr>";}}
但是到了这里,我就不会获取了,大神能说说着么获取么?我刚刚接触json,不是很懂
解决方案四:
内部都是一个个数组啊,对数组进行循环操作……publicLivegame[]LiveGame{get;set;}publicLottery[]Lottery{get;set;}
解决方案五:
引用3楼starfd的回复:
内部都是一个个数组啊,对数组进行循环操作……publicLivegame[]LiveGame{get;set;}publicLottery[]Lottery{get;set;}
不懂,给点详细代码吧,满急的,拜托了
解决方案六:
stringjson=@"{""LiveGame"":[{""TaskRoleSpaces"":""选1"",""TaskRoles"":""赛事1"",""ProxyUserID"":""轮次1"",""UserID"":""比赛时间1""},{""TaskRoleSpaces"":""选2"",""TaskRoles"":""赛事2"",""ProxyUserID"":""轮次2"",""UserID"":""比赛时间2""}],""Lottery"":[{""TaskRoleSpaces"":""选1"",""TaskRoles"":""赛事1"",""ProxyUserID"":""轮次1"",""UserID"":""比赛时间1""},{""TaskRoleSpaces"":""选2"",""TaskRoles"":""赛事2"",""ProxyUserID"":""轮次2"",""UserID"":""比赛时间2""}]}";varobj=JsonConvert.DeserializeObject<Rootobject>(json);foreach(vargameinobj.LiveGame){Console.WriteLine(game.TaskRoleSpaces);}foreach(varlotteryinobj.Lottery){Console.WriteLine(lottery.TaskRoleSpaces);}
然后你例子的LiveGame和Lottery类是一样的,如果实际真是一样的话,可以改成一个类
解决方案七:
最近再搞PHP发现Yii2框架的model提供了一个load()方法.我还没仔细看,但是可以确定的是数组的key要跟model类的属性名(变成字符串的比较是相同的)相同.其实可以实现一个model父类或者接口(没有写过关于这个的方法),先获取类的所有属性名跟json匹配循环赋值来仿照Yii2框架的形式,一旦不满足属性条件就直接抛异常.周五晚上试着写一下代码来实现.写好再发代码谢谢点名
解决方案八:
今天又看了你的问题的时候,发现你处理的没有问题.我认为你的获取方法应该从json里面的每一个类的Json格式转成对象,再放在最大的那个类中.从拿到的Json格式的数据遍历到最基本的类Json(LiveGame Lottery)实例化后,在都放在Rootobject中.这是我的想法.
解决方案九:
来学习一下
解决方案十:
来学习一下[