Как конвертировать пользователей с сайта «A» в сайт «B» в WordPress MultiSite

Я предполагаю, что ваш JSON-файл будет декодироваться в список словарей. Сначала нам нужна функция, которая сгладит объекты JSON:

def flattenjson( b, delim ):
    val = {}
    for i in b.keys():
        if isinstance( b[i], dict ):
            get = flattenjson( b[i], delim )
            for j in get.keys():
                val[ i + delim + j ] = get[j]
        else:
            val[i] = b[i]

    return val

Результат выполнения этого фрагмента на вашем объекте JSON:

flattenjson( {
    "pk": 22, 
    "model": "auth.permission", 
    "fields": {
      "codename": "add_message", 
      "name": "Can add message", 
      "content_type": 8
    }
  }, "__" )

is

{
    "pk": 22, 
    "model": "auth.permission', 
    "fields__codename": "add_message", 
    "fields__name": "Can add message", 
    "fields__content_type": 8
}

После применения этой функции к каждому dict во входном массиве объектов JSON:

input = map( lambda x: flattenjson( x, "__" ), input )

и поиске соответствующих имен столбцов:

columns = [ x for row in input for x in row.keys() ]
columns = list( set( columns ) )

нетрудно запустите это через модуль csv:

with open( fname, 'wb' ) as out_file:
    csv_w = csv.writer( out_file )
    csv_w.writerow( columns )

    for i_r in input:
        csv_w.writerow( map( lambda x: i_r.get( x, "" ), columns ) )

Надеюсь, это поможет!

-3
задан teja kambam 29 March 2019 в 11:10
поделиться