[问题] json的顺序问题

楼主: fightword (呼啦啦~)   2015-04-29 16:53:21
补充3:
似乎有人有同样问题
google "OrderedDictionary ios"
有兴趣的人也可以看看囉
补充2
找了一个晚上 似乎不改资料面应该是无解了
找google还满多人有同样的问题
但最终都是妥协改资料面为array
http://ppt.cc/8NHV
其实同样的问题
就算不是json 若是从plist读进来
NSDictionary的allkeys也是不会按顺序
目前先朝利用人脉去改server端的回传格式好了(哭
补充:
如果资料如下
{
"Level": "3",
"Name": "testLogger",
"IPADDRESS": "testMachiene",
"Message": "hiiiiiiiiii",
"TimeStamp": "test12345678"
}
转成NSDictionary时有可能会变成如下(顺序不同):
{
"Name": "testLogger",
"TimeStamp": "hiiiiiiiiii",
"Message": "test12345678",
"Level": 3,
"IPADDRESS": "testMachiene"
}
我明白json有定义若为一群object
本来就没有确保顺序
有方法可以确保顺序吗?
========================
请问一下
在ios作解析json的资料时
若资料是很多object而不是用array包起来
"有方法"在转成NSDictionary时,
NSDictionary里的顺序跟json的资料里的顺序一样吗?
效能差一点没关系
谢谢
作者: neotek   2015-04-29 16:57:00
怎么看不太懂你是用NSJSONSerilizer把string转json?
作者: yr (Sooner Born Sooner Bred)   2015-04-29 17:14:00
NSDictionary 算是 hash table ,没什么顺序不顺序的不在意效能你可以改用 NSArray 来存
作者: darktt (小朱)   2015-04-29 19:00:00
问题是Dictionary的顺序有差别吗?用key就可以控制顺序啊不然就将key按顺序装进array,之后用for in取值就好了
作者: hearther (hearther)   2015-04-29 21:47:00
http://ppt.cc/QDVS 很久以前的文了,不过记得当时是wor
作者: yuanruo (罪を憎んで人を憎まず)   2015-04-29 22:10:00
都存到Dictionary里了 顺不顺序根本没差吧你是用key去取值又不是用循环去取Dictionary里的值
作者: howdiun (Howdiun)   2015-04-30 09:09:00
JSON改成[{XX:XX},{XX:XX}]的格式或是加入order的参数
作者: neotek   2015-04-30 09:58:00
allkeys本来就不会有顺序呀~~请参考文件http://goo.gl/vvrrWdThe order of the elements in the array is not defined.
作者: nobody1 (无事家中坐)   2015-04-30 10:38:00
多一个字段"sort" 再自已去排
作者: yr (Sooner Born Sooner Bred)   2015-04-30 13:24:00
这就是典型的用错资料结构又不知道,然后又想从这个用错的资料结构去输出成自己想要的输出。要不你自己想办法排序,要不换资料结构,自己挑一个。
作者: neotek   2015-04-30 14:13:00
原始资料应该是String拿下来之后再转JSON吧用regex把key筛出来,存进array,dictionary顺序不管他之后要取value,用for in把key找出来,再去dict取不过最简单还是加一个order字段吧~~提供一点想法 http://goo.gl/zm5cmu测试用的json:http://goo.gl/89EvFh我假设你回来的资料都是用array包起来的object全部都是dictionary应该也可以, 关键是取每个object出来我是用"},"当作分隔,你的资料长怎样我就不知道了所以要确保每笔object可以正确分开来,接下来就没啥问题了我不太会写regex,所以不会把每笔object的key group起来o_o剩下就交给版上神人惹
作者: Blueshiva (龙野南云)   2015-04-30 15:24:00
sever不给你order,自己建就好啦...反正抓回来的就是字串,自己把所有的key抓出来,然后再把字串丢去转成Dic最后再自己加个order的key到这个dic去
作者: Esvent (Esvent)   2015-05-01 13:06:00
parse的时候顺便把顺序记起来就可以了吧?
作者: Blueshiva (龙野南云)   2015-05-01 17:21:00
问题是现在绝大多数人都是用lib解json,大概都忘记这东西可以自己做...

Links booklink

Contact Us: admin [ a t ] ucptt.com