在Python中,如何在Json对象前面加上“Users”:?

2024-10-01 00:27:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在Json对象前面加上“Users”:“但是我不知道如何处理”:”。我得到的最接近的结果是把冒号放在引号内,然后再多出一个逗号。有什么想法吗?所以问题是冒号放在引号中,它加了一个逗号,这是api端点不接受的

这是它应该是什么样子

**["users"  :** [{
    "email": "hallbeth@placeholder.email",
    "dataFields": {
        "favoriteTomatoe": "Green Zebra",
        "daysSinceLastOrder": "137",
        "city": "Lake Michaelberg",
        "firstName": "Richard",
        "zip": "58570",
        "lastName": "Tyler",
        "age": "50",
        "state": "UT",
        "totalTomatoOrders": "23",
        "streetAddress": "925 Holland Burgs Suite 652",
        "phoneNumber": "+67(4)7940410189",
        "gender": "male",
        "customMessageOne": "Esse magnam voluptatibus id ex ipsam assumenda excepturi tenetur."
    }
}]

下面是输出结果

**["users  :",** [{
    "email": "hallbeth@placeholder.email",
    "dataFields": {
        "favoriteTomatoe": "Green Zebra",
        "daysSinceLastOrder": "137",
        "city": "Lake Michaelberg",
        "firstName": "Richard",
        "zip": "58570",
        "lastName": "Tyler",
        "age": "50",
        "state": "UT",
        "totalTomatoOrders": "23",
        "streetAddress": "925 Holland Burgs Suite 652",
        "phoneNumber": "+67(4)7940410189",
        "gender": "male",
        "customMessageOne": "Esse magnam voluptatibus id ex ipsam assumenda excepturi tenetur."
    }
}]

这是我的密码

 import requests
import json
import csv
import pdb

limit = 2
curVal = 0
user_list = []
user_list_2 = [
  ("users" + '  ' +  ':')]

with open('john.csv', 'r') as csv_file:
    csv_file = csv.reader(csv_file)

    next(csv_file)

    for line in csv_file :
        user_list.append(



            [{

            "email" : line[2],
            "dataFields" : {
                "firstName": line[0],
                "lastName" : line[1],
                "favoriteTomatoe" : line[3],
                "totalTomatoOrders" : line[4],
                "daysSinceLastOrder" : line[5],
                "zip" : line[6],
                "phoneNumber" : line[7],
                "age" : line[8],
                "streetAddress" : line[9],
                "city" : line[10],
                "state" : line[11],
                "customMessageOne" : line[12],
                "gender" : line[13]
                                }
            }])



    if curVal == limit:
        body = json.dumps(user_list_2 + user_list)
        print(body)
        headers = {
            "Content-Type": "application/json",
            "Accept": "application/json"}
        res = requests.request("POST", 
            "https://api.iterable.com/api/users/bulkUpdate?apiKey="key", 
            headers=headers, data=body)

        curVal = 0
        user_list = []

        print(res.url + "\n\n" + str(res.status_code) + res.text) 

    else:

       curVal = curVal + 1

Tags: csvimportapijsonemaillineresusers
1条回答
网友
1楼 · 发布于 2024-10-01 00:27:10

似乎你的代码中有很多误解

首先,将每个用户添加到user_list中,作为包含一个用户字典的单个项列表。您只需跳过单个项目列表级别,然后简单地附加字典:

user_list.append({
    "email" : line[2],
    "dataFields" : {
        "firstName": line[0],
        "lastName" : line[1],
        "favoriteTomatoe" : line[3],
        "totalTomatoOrders" : line[4],
        "daysSinceLastOrder" : line[5],
        "zip" : line[6],
        "phoneNumber" : line[7],
        "age" : line[8],
        "streetAddress" : line[9],
        "city" : line[10],
        "state" : line[11],
        "customMessageOne" : line[12],
        "gender" : line[13]
    }
})

然后可以考虑Python和JSON类型之间的某种映射:

  • Python list=JSON数组
  • Python dict=JSON对象

因此,可以将user_list解释为一个JSON数组,如果希望将它指定为JSON对象的Users属性,只需将user_list指定为Python dict的Users键的值。然后传递Python dict 对于json.dumps函数,应返回所需的JSON数据:

body = json.dumps({'Users': user_list})

相关问题 更多 >