Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将json文件读入python?_Python_Json_Spark Dataframe - Fatal编程技术网

如何将json文件读入python?

如何将json文件读入python?,python,json,spark-dataframe,Python,Json,Spark Dataframe,我是JSON和Python新手,在此方面的任何帮助都将不胜感激 我读过关于json.loads的文章,但感到困惑 如何使用json.loads将文件读入Python 以下是我的JSON文件格式: { "header": { "platform":"atm" "version":"2.0" } "details":[ { "abc":"3" "def":"4"

我是JSON和Python新手,在此方面的任何帮助都将不胜感激

我读过关于json.loads的文章,但感到困惑

如何使用json.loads将文件读入Python

以下是我的JSON文件格式:

{
        "header": {
        "platform":"atm"
        "version":"2.0"
       }
        "details":[
       {
        "abc":"3"
        "def":"4"
       },
       {
        "abc":"5"
        "def":"6"
       },
       {
        "abc":"7"
        "def":"8"
       }    
      ]
    }

我的要求是详细阅读所有
“abc”
“def”
的值,并将其添加到如下
[(1,2)、(3,4)、(5,6)、(7,8)]
的新列表中。新列表将用于创建spark数据框。

打开文件,并获取文件句柄:

fh = open('thefile.json')

然后,将文件句柄传递到json.load():(不要使用loads-这是用于字符串的)

从这里,您可以轻松地处理表示json编码数据的python字典

new_list = [(detail['abc'], detail['def']) for detail in data['details']]

请注意,您的JSON格式也是错误的。您在许多地方都需要逗号分隔符,但这不是问题所在。

我正在尽可能地理解您的问题,但看起来格式不好

首先,您的json blob不是有效的json,它缺少很多逗号。这可能就是您正在寻找的:

{
    "header": {
        "platform": "atm",
        "version": "2.0"
    },
    "details": [
        {
            "abc": "3",
            "def": "4"
        },
        {
            "abc": "5",
            "def": "6"
        },
        {
            "abc": "7",
            "def": "8"
        }
    ]
}
现在假设您正试图用python解析它,那么您必须执行以下操作

import json

json_blob = '{"header": {"platform": "atm","version": "2.0"},"details": [{"abc": "3","def": "4"},{"abc": "5","def": "6"},{"abc": "7","def": "8"}]}'
json_obj = json.loads(json_blob)

final_list = []

for single in json_obj['details']:
    final_list.append((int(single['abc']), int(single['def'])))

print(final_list)

这将打印以下内容:[(3,4),(5,6),(7,8)]

您似乎忘记在问题中包含一个问题。您的问题是什么?您尝试了什么?如何在python中实现上述功能。我读过关于json.load的文章,但感到困惑:(正如FlipMcF所提到的,如果您从文件中读取,json.load()将像读取一样处理文件。python文档中提到了这一点。
import json

json_blob = '{"header": {"platform": "atm","version": "2.0"},"details": [{"abc": "3","def": "4"},{"abc": "5","def": "6"},{"abc": "7","def": "8"}]}'
json_obj = json.loads(json_blob)

final_list = []

for single in json_obj['details']:
    final_list.append((int(single['abc']), int(single['def'])))

print(final_list)