[英]Sort JSON String object according to my requirement
我有一个清单。 我正在将此列表转换为JSON
String
对象,并将其发送到UI。
Gson gson = new Gson();
String jsonString = gson.toJson(environmentnamesList);
return jsonString;
这是我的JSON
对象。
[{"id":3272,"company_name":"HCL - Demo"},{"id":3255,"company_name":"IBM1 - Test"},{"id"
:3257,"company_name":"ECO1 - Development"},{"id":3253,"company_name":"MindSpace - Development"
},{"id":3256,"company_name":"ABC - Demo"},{"id":3258,"company_name":"CDF - Test"},
{"id":3205,"company_name":"FGR - Production"},{"id":3208,"company_name":"RFGGDDF - Production"
}]
现在,我要按照以下条件对这个JSON
对象进行排序:
company_name
包含Production(RFGGDDF - Production)
优先考虑 company_name
包含Development(MindSpace - Development)
给予第二优先级 company_name
包含Demo (ABC - Demo)
赋予第3优先级 company_name
包含Test(IBM1 - Test)
赋予第四优先级 我希望输出看起来像这样:
[{"id":3205,"company_name":"FGR - Production"},{"id":3208,"company_name":"RFGGDDF - Production"},
{"id":3257,"company_name":"ECO1 - Development"},{"id":3253,"company_name":"MindSpace - Development"},
{"id":3272,"company_name":"HCL - Demo"},{"id":3256,"company_name":"ABC - Demo"}
,{"id":3258,"company_name":"CDF - Test"},{"id":3255,"company_name":"IBM1 - Test"}]...
我这样尝试过:
List<String> envTypes = Arrays.asList("Production", "Development", "Demo", "Test");
Ordering<Environment> ordering = Ordering.natural().onResultOf(----i don't know what arg i have to pass----);
Collections.sort(environmentnamesList, ordering);
我建议在列表级别而不是json级别进行排序。
像下面这样。 我假设您有一个名为environmentnamesList的Java List
,其中包含类型MyObject的元素。 您可以按以下方式对列表进行排序:-
Collections.sort(environmentnamesList, new CustomComparator());
String jsonString = gson.toJson(environmentnamesList);
您可以使用如下所示的CustomComparator:
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
String[] env =new String[]{"Demo","Test","Developement","Production"};
int env1=-1,env2=-1;
for(int i =0; i < env.length; i++)
{
if(env1<0 && o1.getCompanyName().contains(env[i]))
{
env1=i;
}
if(env2<0 && o2.getCompanyName().contains(env[i]))
{
env2=i;
}
}
return (env1 < env2) ? 1 :(env1 == env2)? 0: -1;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.