如何解决Flutter 将 json 数据过滤为唯一数据
"bookings":[
{
"id":"600bf6d4057c5a06d373557d","orderId":"600bf6d4057c5a06d373557c","carId":"600bf505057c5a06d3735579","car":{
"id":"600bf505057c5a06d3735579","name":"car 1","description":"yhis car","numberOfSeats":1,"position":[
-1.051178,37.0951137
],"pricePerDay":1.0,"pickupLocation":{
"locationName":"Thika","position":[
-1.051178,37.0951137
],"radius":0.0
},"dropoffLocation":null,"rating":0.0,"category":"Casual","numberPlate":"kbu","ratingsCount":0,"verified":true,"subCategory":"Sedan/Coupe","tag":null,"available":true,"type":null,"bookings":null,"additionalFeatures":[
{
"name":"this","price":0.0
},{
"name":"this","price":0.0
}
],"ownerId":"600bf22e057c5a06d3735571","carOwner":null,"locationName":"Thika","approvedBy":"admin@mgari.com","approvedOn":"2021-01-23T10:12:48.799+00:00","timestamp":null
},"userId":"600bf2c3057c5a06d3735573","date":"2021-01-24T00:00:00.000+00:00","timestamp":"2021-01-23T10:13:40.561+00:00"
},{
"id":"600bf6d4057c5a06d373557e","date":"2021-01-25T00:00:00.000+00:00","timestamp":"2021-01-23T10:13:40.564+00:00"
},{
"id":"600bf6d4057c5a06d373557f","date":"2021-01-26T00:00:00.000+00:00","timestamp":"2021-01-23T10:13:40.565+00:00"
},{
"id":"600bf6d4057c5a06d3735580","carId":"600bf61c057c5a06d373557b","car":{
"id":"600bf61c057c5a06d373557b","name":"csr 2","description":"this","position":[
-1.2163932,36.8949246
],"pickupLocation":{
"locationName":"Thika Road","position":[
-1.2163932,36.8949246
],"category":"Business","subCategory":"Tours","additionalFeatures":[
{
"name":"heey","locationName":"Thika Road","approvedOn":"2021-01-23T10:12:22.058+00:00","timestamp":"2021-01-23T10:13:40.566+00:00"
},{
"id":"600bf6d4057c5a06d3735581","timestamp":"2021-01-23T10:13:40.567+00:00"
}
],
Helo 遇到了一个小问题,这让我很头疼。我有如上所示的 json。但如果你仔细观察,前 3 辆车是重复的,最后 2 辆车也是一样的 我想有一种方法,我不会有重复,这样我就会有一个列表,只有两辆车是独一无二的。我希望在我的应用程序上显示的数据长度为两辆车
解决方法
我将假设您针对 Order
类序列化 JSON(因此您实际上通过序列化您提供的 JSON 获得了一个结果列表)并且该类具有一个 Car
对象。两者都有 id
属性。您可以使用 id
类的 Car
属性并使其成为对象的唯一标识符,方法是自己覆盖 == 运算符或使用 equitable(发布包) .然后,您可以迭代 Bookings JSON 列表中的订单列表,并填充一个集合,利用您覆盖 == 运算符的事实来确保没有重复项。
获取您的列表并使用 where 进行过滤
final existing = Set<String>();
bookings.where((person) => existing.add(person.car.id))
.toList();
print('unique $unique');
// unique [Instance of 'Bookings',Instance of 'Bookings']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。