Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Python 加载、转储和读取json文件有什么不同?_Python_Json - Fatal编程技术网

Python 加载、转储和读取json文件有什么不同?

Python 加载、转储和读取json文件有什么不同?,python,json,Python,Json,我有一个简单的json文件“stackoverflow.json” { “firstname”:“stack”, “lastname”:“溢出” } 以下两个功能之间有什么不同: def read_json_file_1(): with open('stackoverflow.json') as fs: payload = ujson.loads(fs.read()) payload = ujson.dumps(payload) return pa

我有一个简单的json文件“stackoverflow.json” { “firstname”:“stack”, “lastname”:“溢出” }

以下两个功能之间有什么不同:

def read_json_file_1():
    with open('stackoverflow.json') as fs:
        payload = ujson.loads(fs.read())
        payload = ujson.dumps(payload)
    return payload

def read_json_file_2():
    with open ('stackoverflow.json') as fs:
        return payload = fs.read()
然后我使用'requests'模块发送post resquest,其中包含来自上述2个函数的有效负载,这两个函数都适用


谢谢。

函数获取一个json文件,并根据确切的json文件将其转换为字典或列表。 “dumps”采用python数据结构,并将其转换回json

因此,第一个函数加载并验证json,将其转换为python结构,然后在返回之前将其转换回json,而第二个函数只读取文件内容,不进行任何转换或验证


因此,只有在json有效的情况下,函数才是等效的-如果存在json错误,则两个函数的执行方式将非常不同。如果您知道该文件包含无错误的json,则两个文件应返回等效的输出,但是,如果该文件包含json中的错误,则第一个函数将失败,并显示相关的错误回溯等,第二个函数根本不会生成任何错误。第一个函数更容易出错,但效率较低(因为它转换json->python->json)。第二个函数效率更高,但错误友好程度更低(即,如果json被破坏,它不会失败).

如果这个答案有帮助,你能投票接受这个答案吗