执行python脚本并传入json数据格式参数方式

执行python脚本并传入json数据格式参数

最近在写一个python的数据统计分析脚本,需要根据json的数据格式参数去进行业务逻辑处理,出了一些情况拿出来一起分享讨论。一下代码纯属示例。

        

执行python脚本并传入json数据格式参数方式_第1张图片

脚本类容很简单,接收一下参数,并使用json包进行一个加载解析。

执行脚本,传入一个json对象数组:

脚本接受到的内容:

json加载解析出错:

执行python脚本并传入json数据格式参数方式_第2张图片

可以看到python脚本接收到参数的时候会将双引号剔除,然后该传入参数已经不符合json数据格式,导致转换失败。

解决办法,最外层使用单引号包裹:

可以看到参数成功传入并且成功被解析。

注意:此方法只能在Linux操作系统上成功,在Windows上测试依然失败,不知道原因,有了解的或者有更好的方法的欢迎评论。

Windows上测试结果:

执行python脚本并传入json数据格式参数方式_第3张图片

python解析JSON数据

JSON(JavaScript Object Natation)是一种轻量级的数据交换格式,其基于ECMAScript的一个子集。Python中提供了json模块来对JSON数据进行编码和解码。

json模块包含以下两个函数

  • json.dumps():对数据进行编码
  • jsonloads():对数据进行解码

示例

import json
data1 = {
    'id': '001',
    'name': '李华',
    'date': '20220115'
}
json_str = json.dumps(data1)
print("Python 原始数据:", data1, type(data1))
print("Python 原始数据:", repr(data1), type(repr(data1)))
print("JSON 对象:", json_str, type(json_str))

程序运行结果:

执行python脚本并传入json数据格式参数方式_第4张图片

关于repr()的解释,一种可以参考是说法是: 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。

data2 = json.loads(json_str)
print("data2['name']:", data2["name"])
print("data2['id']:", data2["id"])

程序运行结果:

如果是处理json文件,则需要使用**json.dump()json.load()**来编码和解码JSON数据,代码如下:

# 写入数据
with open('data.json', 'w') as f:
    json.dump(data1, f)
# 读取数据
with open('data.json', 'r') as f:
    data = json.load(f)
    print(data)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(执行python脚本并传入json数据格式参数方式)