Flask Restful: преобразование файла CSV в объект JSON - PullRequest
0 голосов
/ 10 октября 2018

Я читаю файл из внешнего интерфейса и преобразую его в JSON, состоит из uuid и списка объектов JSON:

class File(Resource):

def post(self):
    if 'file' not in request.files:
        return {"message": "No File in the request!"}, 400
    file = request.files['file']

    if file.filename == '':
        return {'message': "No File selected!"}, 400

    if file:
        filename = secure_filename(file.filename)

    #file_contents = file.read()
    print(file)
    converted_json = File.csv2json(file)
    new_request = {
            'uuid': str(uuid.uuid4()),
            'devices': converted_json
        }
    print(new_request)
    return new_request, 201

@classmethod
def csv_to_json(cls, data):
    df = pd.read_csv(data, header=None)
    df.columns = ['name', 'username', 'password', 'domain']
    print(df)
    df = df.to_json(orient='records')
    print(df)
    return df

Вывод имеет двойное кодирование: {"uuid": "1a09ad79-dc78-4759-9aa0-f1dda9c08dc4 "," details ":" [{\ "name \": \ "joe \", \ "username \": \ "admin \", \ "password \": \ "admin \", \ "domain \": \ "abc.xyz.com \"}] "}

Как получить вывод объекта JSON, например (с символом новой строки в конце каждого символа ','):

{
"uuid": "1a09ad79-dc78-4759-9aa0-f1dda9c08dc4",
"details": [
               {"name": "joe",
                "username": "admin",
                "password": "admin",
                "domain"" "abc.xyz.com"}
           ]
}

1 Ответ

0 голосов
/ 10 октября 2018

Не бери в голову!

Использование 'json.loads (df)' после того, как 'df = df.to_json (orient =' records ')' добились цели!

...