将JSON字符串映射到PySpark中的struct

时间:2019-02-24 20:17:17

标签: python json apache-spark pyspark

我在字符串中有一个JSON,如下所示:

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

我想将其转换为:

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

我想在PySpark数据框中阅读此内容。如何将字符串列表转换为json结构?

1 个答案:

答案 0 :(得分:1)

(整个)数据不是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数据。至少不是您认为的那样。