繁体   English   中英

如何根据我的要求对json进行排序

[英]How to sort json according to my requirement

我有一个列表。我正在将此列表转换为json字符串对象并将其发送给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)如果我的comapny_name包含Production(RFGGDDF-Production),则应优先考虑

2)如果我的company_name包含Development(MindSpace-Development),则给予第二优先级。

3)如果我的company_name包含演示(ABC-演示),请赋予第三优先级

4)我的公司名称包含Test(IBM1-Test)的ID赋予第四优先级:

我想要这样的输出:

[{"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"}]

我会在转换为json之前尝试对environmentnamesList进行排序。 该列表内的条目应具有可比性。 即实现可比接口

编辑1:

 Gson gson = new Gson();
 // TODO: sort environmentnamesList here
 String jsonString = gson.toJson(environmentnamesList);
 return jsonString;

public class EnvironmentItem 
        implements Comparable<EnvironmentItem> {
    public int compareTo(EnvironmentItem item) {
        // TODO compare this & item 
    }
}

我同意@ virtual-agent-07,我应该转换为JSON 之前对环境进行排序。
有很多方法可以做到这一点,我建议使用Google的Guava库。
例:

List<Environment> environments = //...
List<String> envTypes = Arrays.asList("Production", "Development", "Demo", "Test");
Ordering<Environment> ordering = Ordering.natural().onResultOf(c -> Iterables.indexOf(envTypes, envType -> c.getCompanyName().contains(envType)));
Collections.sort(environments, ordering);

尝试这个...

<script>
  angular.module('myapp', [])
  .controller('testCtrl', ['$scope', function($scope){

    var compareData = ["FGR - Production", "RFGGDDF - Production", "ECO1 - Development", "MindSpace - Development", "HCL - Demo", "ABC - Demo", "CDF - Test", "IBM1 - Test"];

   var 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.sort(function(objA, objB){
      return compareData.indexOf(objA.company_name) - compareData.indexOf(objB.company_name);
    });
    console.log(json);
  }]);

</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM