我有一个JSON对象,其中我有一些带键的数组:
{
"body":{
"menus":{
"":[
{
"name":"home",
"label":"Home",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_global_search",
"label":"Search",
"headerLabel":"",
"icon":"",
"url":""
}
],
"Favorites":[
{
"name":"core_mini_messages",
"label":"Messages",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_mini_notification",
"label":"Notifications",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_mini_friend_request",
"label":"Friend Requests",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_user",
"label":"Members",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_album",
"label":"Albums",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_video",
"label":"Videos",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_blog",
"label":"Blogs",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_classified",
"label":"Classifieds",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_group",
"label":"Groups",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_event",
"label":"Events",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"core_main_music",
"label":"Music",
"headerLabel":"",
"icon":"",
"url":""
}
],
"Account Settings":[
{
"name":"user_settings",
"label":"Settings",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"contact_us",
"label":"Contact Us",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"privacy_policy",
"label":"Privacy Policy",
"headerLabel":"",
"icon":"",
"url":""
},
{
"name":"terms_of_service",
"label":"Terms Of Service",
"headerLabel":"",
"icon":"",
"url":""
}
],
"Help & Settings":[
{
"name":"signout",
"label":"Sign Out",
"headerLabel":"",
"icon":"",
"url":""
}
]
},
"languages":{
"default":"en",
"languages":{
"en":"English"
}
}
}
}
我希望按照它们来自服务器的顺序迭代元素,但是键会自动按字母顺序更改它们的顺序。
有什么想法吗?
答案 0 :(得分:0)
我对此问题的解决方案是发送另一个对象,其中key =>值关联,数字作为键,菜单项作为值,例如
{1:"", 2:"Favorites", 3:"Account Settings", 4:"Help & Settings"}
然后我将遍历此对象并使用它以正确的顺序从原始对象中检索菜单。
答案 1 :(得分:0)
查看以前的答案,似乎有两种方法可以解决问题:
重组数据,将菜单更改为:
ValidatorOptions.PropertyNameResolver = (type, member) => {
if(member != null) {
return member.Name + "Foo";
}
return null;
};
更改您使用HashMap的JSONObject.java文件,但LinkedHashMap应保留该顺序。这只适用于使用JSONObject.java的系统。
{
"menues": [
{"": ... },
{"Favorites": ... },
...]}
我从那里得到的两个解决方案:Keep the order of the JSON keys during JSON conversion to CSV以获得更好的解释。