gpt4 book ai didi

java - 根据我的要求对 JSON String 对象进行排序

转载 作者:行者123 更新时间:2023-12-02 04:09:23 24 4
gpt4 key购买 nike

我有一个 list 。我将此列表转换为 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 对象进行排序:

  1. 如果company_name包含Production(RFGGDDF - Production),则优先考虑
  2. 如果 company_name 包含 Development(MindSpace - Development) 则给予第二优先级
  3. 如果company_name包含演示(ABC - 演示)则给予第三优先级
  4. Id 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;
}
}

关于java - 根据我的要求对 JSON String 对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33932125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com