Как я могу преобразовать вложенный JSON-преобразованный массив данных в словарь без использования панд? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть json, который имеет следующий тип:

    {"key1":{"keyA":"val1","keyB":"val2"},"key2": 
    [{"keyC":"val3","keyD":"val4","key11": 
      [{"key21":"1","key22":"2"}],"key12": 
      [{"key23":"1","key24":"2"}] }]}

Сначала я преобразовал это в массив данных.Теперь я хочу преобразовать этот фрейм данных в словарь, но не могу его достичь.

Я использую код ниже, чтобы узнать тип конвертированного фрейма данных.

file_path='C:/Users/test/Desktop/usecase1/json.json'
spark=SparkSession.builder.appName("jsontohive").enableHiveSupport().getOrCreate()
dataframe = spark.read.json(file_path)
dic = dict()
for i in dataframe.rdd.collect():
    dic = i.asDict()
    for key in dic.keys():
        print key
        print dic.get(key)

ВыводЯ получаю в одной строке, как показано ниже:

key2
[Row(key11=[Row(key21=u'1', key22=u'2')], key12=[Row(key23=u'1', 
key24=u'2')], keyC=u'val3', keyD=u'val4')]
key1
Row(keyA=u'val1', keyB=u'val2')

Не удалось преобразовать это правильно.Дайте мне знать, если вы можете помочь.

Прежде чем вы предложите читать JSON непосредственно в Python в качестве словаря.Вот несколько подсказок: есть инструмент, на котором нам нужно запустить этот код, где чтение json с использованием json lib в Python не является вариантом, нам нужно читать это как dataframe или только как rdd.

1 Ответ

0 голосов
/ 12 апреля 2019

Вы можете сделать это, просто используя модуль json в python.

import json

file_path='C:/Users/test/Desktop/usecase1/json.json'
with open(file_path) as json_file:
    dictionary = json.load(json_file)

Это самый простой способ правильно преобразовать JSON в словарь Python.

...