Сопоставить строку JSON со структурой в PySpark - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть JSON в строке следующим образом:

'''{"col1":"value1", "col2":"[{'col3':'val3'},{'col3':'val4'}]"}'''

Я хочу преобразовать его как:

{"col1":"value1",
 "col2":[ {'col3':'val3'}, {'col3':'val4'}]}

И я хочу прочитать это в кадре данных PySpark.Как преобразовать список внутри строки в структуру JSON?

1 Ответ

0 голосов
/ 24 февраля 2019

(Целые) данные не являются JSON-строкой.А именно потому, что ' символы не допускаются в структурах JSON.Лучшим вариантом было бы вернуться туда, где это было сгенерировано, и исправить искаженные данные, прежде чем идти дальше.

После того, как вы исправили неверные данные, вы можете сделать:

import json
result = json.loads('''{"col1":"value1", "col2":[{"col3":"val3"},{"col3":"val4"}]}''')

ЕслиВы не можете изменить способ передачи данных.Одним из решений было бы заменить строки плохими символами (но это могло бы вызвать все проблемы на этом пути) :

import json
result = json.loads('''{"col1":"value1", "col2":"[{'col3':'val3'},{'col3':'val4'}]"}''')
result['col2'] = json.loads(result['col2'].replace("'", '"'))

В любом случае, я бы вернулся и повторноработать так, как вы получаете данные для наиболее надежных результатов.Но это не JSON-данные, как сейчас.По крайней мере, не в том смысле, в каком вы думаете.

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