Python中的json转字符串

Python中的json转字符串

在Python中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言并经过扩展,以键值对的方式表示数据,易于人和机器的读写。而 Python 的 json 模块则可以非常简便地转化 JSON 数据和 Python 中的数据类型。

JSON 的数据格式如下:

{
  "name": "Tom",
  "age": 20,
  "score": {
    "Chinese": 90,
    "Math": 80
  },
  "hobby": [
    "reading",
    "running"
  ]
}

在Python中,我们可以使用json模块将JSON格式的数据转换成Python中的数据类型,反之亦然。下面我们通过实例代码来解释如何在Python中进行json转字符串的操作。

JSON转字符串

在Python中,可以使用json.dumps()方法将Python数据类型转换为JSON字符串。例如,如果我们有如下字典类型的数据:

import json

data = {
  "name": "Tom",
  "age": 20,
  "score": {
    "Chinese": 90,
    "Math": 80
  },
  "hobby": [
    "reading",
    "running"
  ]
}

json_str = json.dumps(data)
print(json_str)

运行以上代码,输出结果如下:

{"name": "Tom", "age": 20, "score": {"Chinese": 90, "Math": 80}, "hobby": ["reading", "running"]}

通过 dumps() 方法我们可以将数据类型转换成 JSON 格式的字符串,结果中由于我们使用了 dumps 方法,所以自动将 key 由“字符串”转换成了“双引号字符串”。 除了默认的dumps()方式外,dumps()还有其他一些方法和参数:

import json

data = {
  "name": "Tom",
  "age": 20,
  "score": {
    "Chinese": 90,
    "Math": 80
  },
  "hobby": [
    "reading",
    "running"
  ]
}

# indent参数用于格式化显示
json_str1 = json.dumps(data, indent=4)
print(json_str1)

# separators参数用于去除逗号之间的空格
json_str2 = json.dumps(data, separators=(",", ":"))
print(json_str2)

# sort_keys参数用于按照key值进行排序
json_str3 = json.dumps(data, sort_keys=True)
print(json_str3)

输出结果如下:

{
    "name": "Tom",
    "age": 20,
    "score": {
        "Chinese": 90,
        "Math": 80
    },
    "hobby": [
        "reading",
        "running"
    ]
}
{"name":"Tom","age":20,"score":{"Chinese":90,"Math":80},"hobby":["reading","running"]}
{"age": 20, "hobby": ["reading", "running"], "name": "Tom", "score": {"Chinese": 90, "Math": 80}}

如上所示,indent参数用于让json的字符串具有可读性(并且它是有用的),通过该参数加上正整数,表示再生成的字符串中key-value对的个数折行;而separators参数用于去除json生成的字符串的空格,将逗号和冒号之间的空格移除。sort_keys参数用于按照key值进行排序。这些参数也可以组合使用,比如:

import json

data = {
  "name": "Tom",
  "age": 20,
  "score": {
    "Chinese": 90,
    "Math": 80
  },
  "hobby": [
    "reading",
    "running"
  ]
}

json_str = json.dumps(data, indent=4, separators=(",", ": "), sort_keys=True)
print(json_str)

输出结果:

{
    "age": 20,
    "hobby": [
        "reading",
        "running"
    ],
    "name": "Tom",
    "score": {
        "Chinese": 90,
        "Math": 80
    }
}

字符串转JSON

除了将Python数据类型转为JSON字符串,还可以将JSON字符串转化为Python数据类型。这里介绍两个方法:json.loads()json.load()

json.loads()方法用于加载已经存储在字符串中的JSON数据,返回Python对象。例如,如果有如下JSON格式的字符串:

{
  "name": "Tom",
  "age": 20,
  "score": {
    "Chinese": 90,
    "Math": 80
  },
  "hobby": [
    "reading",
    "running"
  ]
}

我们可以使用json.loads()方法将其转换为Python数据类型:

import json

json_str = '{"name": "Tom", "age": 20, "score": {"Chinese": 90, "Math": 80}, "hobby": ["reading", "running"]}'

data = json.loads(json_str)
print(data)

运行结果:

{'name': 'Tom', 'age': 20, 'score': {'Chinese': 90, 'Math': 80}, 'hobby': ['reading', 'running']}

json.load()方法用于从文件中读取JSON数据,返回Python对象。例如,如果有如下JSON格式的文件:

{
  "name": "Tom",
  "age": 20,
  "score": {
    "Chinese": 90,
    "Math": 80
  },
  "hobby": [
    "reading",
    "running"
  ]
}

我们可以使用json.load()方法将其转换为Python数据类型:

import json

with open("data.json", "r") as f:
    data = json.load(f)
    print(data)

以上代码将文件”data.json”中的数据读取并转化为Python数据类型,输出结果与前面的示例相同。

结论

总之,在Python中进行JSON和字符串之间的转换非常简单,通过 json.dumps(), json.loads()json.load() 方法,我们可以轻松地完成这个过程。此外,dumps()还有其他用途,比如可以将JSON数据写入文件,这里我们就不一一赘述。希望这篇文章能够帮助到初学者,使他们更加熟悉python处理json格式数据的方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程