【问题标题】:Flutter filter json data to unique dataFlutter 过滤 json 数据为唯一数据
【发布时间】:2021-04-27 18:17:04
【问题描述】:
  "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",
        "carOwner":null,
        "ownerId":"600bf22e057c5a06d3735571",
        "date":"2021-01-24T00:00:00.000+00:00",
        "timestamp":"2021-01-23T10:13:40.561+00:00"
     },
     {
        "id":"600bf6d4057c5a06d373557e",
        "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",
        "carOwner":null,
        "ownerId":"600bf22e057c5a06d3735571",
        "date":"2021-01-25T00:00:00.000+00:00",
        "timestamp":"2021-01-23T10:13:40.564+00:00"
     },
     {
        "id":"600bf6d4057c5a06d373557f",
        "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",
        "carOwner":null,
        "ownerId":"600bf22e057c5a06d3735571",
        "date":"2021-01-26T00:00:00.000+00:00",
        "timestamp":"2021-01-23T10:13:40.565+00:00"
     },
     {
        "id":"600bf6d4057c5a06d3735580",
        "orderId":"600bf6d4057c5a06d373557c",
        "carId":"600bf61c057c5a06d373557b",
        "car":{
           "id":"600bf61c057c5a06d373557b",
           "name":"csr 2",
           "description":"this",
           "numberOfSeats":1,
           "position":[
              -1.2163932,
              36.8949246
           ],
           "pricePerDay":1.0,
           "pickupLocation":{
              "locationName":"Thika Road",
              "position":[
                 -1.2163932,
                 36.8949246
              ],
              "radius":0.0
           },
           "dropoffLocation":null,
           "rating":0.0,
           "category":"Business",
           "numberPlate":"kbu",
           "ratingsCount":0,
           "verified":true,
           "subCategory":"Tours",
           "tag":null,
           "available":true,
           "type":null,
           "bookings":null,
           "additionalFeatures":[
              {
                 "name":"heey",
                 "price":0.0
              }
           ],
           "ownerId":"600bf22e057c5a06d3735571",
           "carOwner":null,
           "locationName":"Thika Road",
           "approvedBy":"admin@mgari.com",
           "approvedOn":"2021-01-23T10:12:22.058+00:00",
           "timestamp":null
        },
        "userId":"600bf2c3057c5a06d3735573",
        "carOwner":null,
        "ownerId":"600bf22e057c5a06d3735571",
        "date":"2021-01-24T00:00:00.000+00:00",
        "timestamp":"2021-01-23T10:13:40.566+00:00"
     },
     {
        "id":"600bf6d4057c5a06d3735581",
        "orderId":"600bf6d4057c5a06d373557c",
        "carId":"600bf61c057c5a06d373557b",
        "car":{
           "id":"600bf61c057c5a06d373557b",
           "name":"csr 2",
           "description":"this",
           "numberOfSeats":1,
           "position":[
              -1.2163932,
              36.8949246
           ],
           "pricePerDay":1.0,
           "pickupLocation":{
              "locationName":"Thika Road",
              "position":[
                 -1.2163932,
                 36.8949246
              ],
              "radius":0.0
           },
           "dropoffLocation":null,
           "rating":0.0,
           "category":"Business",
           "numberPlate":"kbu",
           "ratingsCount":0,
           "verified":true,
           "subCategory":"Tours",
           "tag":null,
           "available":true,
           "type":null,
           "bookings":null,
           "additionalFeatures":[
              {
                 "name":"heey",
                 "price":0.0
              }
           ],
           "ownerId":"600bf22e057c5a06d3735571",
           "carOwner":null,
           "locationName":"Thika Road",
           "approvedBy":"admin@mgari.com",
           "approvedOn":"2021-01-23T10:12:22.058+00:00",
           "timestamp":null
        },
        "userId":"600bf2c3057c5a06d3735573",
        "carOwner":null,
        "ownerId":"600bf22e057c5a06d3735571",
        "date":"2021-01-25T00:00:00.000+00:00",
        "timestamp":"2021-01-23T10:13:40.567+00:00"
     }
  ],

Helo 遇到了一个小问题,这让我很头疼。我有如上所示的json。但如果你仔细观察,前 3 辆车是重复的,最后 2 辆车也是一样的 我想有一种方法,我不会有重复,这样我就会有一个只有两辆车是唯一的列表。我希望在我的应用上显示的数据长度为两辆车

【问题讨论】:

    标签: flutter dart duplicates unique


    【解决方案1】:

    获取您的列表并使用 where 进行过滤

                  final existing = Set<String>();
    
    
     bookings.where((person) => existing.add(person.car.id))
            .toList();
    
    print('unique $unique');
    // unique [Instance of 'Bookings', Instance of 'Bookings']
    

    【讨论】:

      【解决方案2】:

      我将假设您针对 Order 类序列化 JSON(因此您实际上有一个序列化您提供的 JSON 的结果列表)并且该类有一个 Car 对象。两者都有一个id 属性。您可以使用Car 类的id 属性并使其成为对象的唯一标识符,方法是自己重写== 运算符或使用equitable(一个pub 包)。然后,您可以从 Bookings JSON 列表中迭代订单列表并填充一个集合,利用您覆盖 == 运算符这一事实确保没有重复。

      【讨论】:

        猜你喜欢
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-02
        • 1970-01-01
        • 1970-01-01
        • 2017-07-07
        • 1970-01-01
        相关资源
        最近更新 更多