【问题标题】:How to create this JSON array with python?如何用 python 创建这个 JSON 数组?
【发布时间】:2019-09-18 06:49:47
【问题描述】:

我需要像这样创建一个数组,

{
 "driver_details":[
       {
        "dr_id": 1,
        "v_id": 2,
        "v_type":"car",
        "condition":"ok"
       },
       {
        "dr_id": 2,
        "v_id": 3,
        "v_type":"cab",
        "condition":"ok"
       },
 ]
}

我尝试使用此方法返回 dr_idv_idconditiontype 值作为列表,

但是从中提取值很困难,并且无法获得dr_idv_id等特定数据。

def get(self, owId):

        return_data = []

        for driver in driver_schema.dump(DriverModel().get_driversby_ownerId(owId)):

            for vehicle in vehicle_schema.dump(VehicleModel().vehicle_detailby_driver(driver['dr_id'])):
                return_data.append(driver['dr_id'])
                return_data.append(vehicle['vehicle_type'])
                return_data.append(vehicle['condition'])

        return return_data

所以我尝试了json.dump() 方法,但它返回以下值

"[1.0, \"car\", false, 13.0, false, 2.0, \"bus\", false, 50.0, false]"

我也尝试在循环中使用字典,如下所示

def get(self, owId):

        return_data = {}

        for driver in driver_schema.dump(DriverModel().get_driversby_ownerId(owId)):

            for vehicle in vehicle_schema.dump(VehicleModel().vehicle_detailby_driver(driver['dr_id'])):
                return_data.update({'driver':driver['dr_id'], 'vehicle':vehicle['vehicle_type'], 'v_type':vehicle['vehicle_type']})

        return return_data

这样,它只包含循环中的最后一个值。

那么我怎样才能达到我的预期效果呢?

提前致谢。

【问题讨论】:

    标签: python json list dictionary


    【解决方案1】:

    您只能看到最后一个值,因为您一次又一次地修改同一个字典(更新)。相反,您可以将这些字典值添加到列表中。

    def get(self, owId):
    
            return_data = []
    
            for driver in driver_schema.dump(DriverModel().get_driversby_ownerId(owId)):
    
                for vehicle in vehicle_schema.dump(VehicleModel().vehicle_detailby_driver(driver['dr_id'])):
                    return_data.append({'driver':driver['dr_id'], 'vehicle':vehicle['vehicle_type'], 'v_type':vehicle['vehicle_type']})
    
            return return_data
    

    之后,您将能够使用 json.dumps() 创建一个 json。

    【讨论】:

    • json.dumps()json.load() ?
    • 是的,它的 json.dumps() 。
    【解决方案2】:

    准备所有驱动程序的列表,然后将其与driver_details 键映射并返回该字典。

    def get(self, owId):
    
        driver_details = []
    
        for driver in driver_schema.dump(DriverModel().get_driversby_ownerId(owId)):
    
            for vehicle in vehicle_schema.dump(VehicleModel().vehicle_detailby_driver(driver['dr_id'])):
                driver_details.append({
                     'driver': driver['dr_id'], 
                     'vehicle': vehicle['vehicle_type'], 
                     'v_type': vehicle['vehicle_type']
                })
    
        return {'driver_details': driver_details}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 2019-05-26
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      相关资源
      最近更新 更多