Python处理JSON数据

Posted NBITer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python处理JSON数据相关的知识,希望对你有一定的参考价值。

Python和JSON

javascript Object Notation (JSON) 是一种轻量级的数据交换格式,通常用于Web应用程序之间的数据交换。JSON的设计使得它非常易于人和机器阅读和编写。JSON数据格式与Python数据结构非常相似,因此Python中提供了一个json模块,用于编码和解码JSON数据。

编码JSON

在Python中,我们可以使用json.dumps()方法将Python对象编码为JSON格式的字符串。例如,将一个字典对象编码为JSON格式:

import json

# 字典对象
person = 
    "name": "John Doe",
    "age": 30,
    "city": "New York"


# 将字典编码为JSON字符串
person_json = json.dumps(person)

print(person_json)

输出:

"name": "John Doe", "age": 30, "city": "New York"

在上面的例子中,我们首先导入json模块,然后定义一个字典对象person,其中包含三个键值对。我们然后使用json.dumps()方法将person字典对象编码为JSON格式的字符串,该字符串被存储在变量person_json中。最后,我们使用print()语句将person_json打印到控制台。

除了字典,我们还可以将其他Python数据类型编码为JSON格式。例如,我们可以将一个列表编码为JSON格式:

import json

# 列表对象
fruits = ["apple", "banana", "cherry"]

# 将列表编码为JSON字符串
fruits_json = json.dumps(fruits)

print(fruits_json)

输出:

["apple", "banana", "cherry"]

可以看到,编码后的JSON字符串与原始列表非常相似,但它们使用了双引号而不是单引号,并且所有的字符串都被包含在方括号中。

解码JSON

我们可以使用json.loads()方法将JSON格式的字符串解码为Python对象。例如,将一个JSON字符串解码为字典对象:

import json

# JSON字符串
person_json = '"name": "John Doe", "age": 30, "city": "New York"'

# 将JSON字符串解码为字典
person = json.loads(person_json)

print(person)

输出:

'name': 'John Doe', 'age': 30, 'city': 'New York'

在上面的示例中,我们首先定义一个JSON字符串person_json,该字符串包含一个名为“John Doe”的人的名称、年龄和城市。我们然后使用json.loads()方法将person_json解码为Python字典对象,该字典对象被存储在变量person中。最后,我们使用print()语句将person字典对象打印到控制台。

除了字典,我们还可以将其他JSON格式的数据解码为Python数据类型。例如,我们可以将一个JSON格式的字符串解码为列表:

import json

# JSON格式的字符串
fruits_json = '["apple", "banana", "cherry"]'

# 将JSON字符串解码为列表
fruits = json.loads(fruits_json)

print(fruits)

输出:

['apple', 'banana', 'cherry']

处理文件

我们也可以使用json.dump()和json.load()方法来处理JSON格式的文件。例如,将一个字典对象写入JSON文件:

import json

person = 
    "name": "John Doe",
    "age": 30,
    "city": "New York"


# 将字典写入JSON文件
with open('person.json', 'w') as f:
    json.dump(person, f)

# 将JSON文件读取为字典
with open('person.json', 'r') as f:
    person = json.load(f)

print(person)

输出:

'name': 'John Doe', 'age': 30, 'city': 'New York'

在上面的示例中,我们首先定义一个名为person的字典对象,然后使用json.dump()方法将该字典写入名为“person.json”的JSON文件中。我们使用with语句来打开文件并写入数据,以确保文件被正确关闭。然后,我们使用json.load()方法将“person.json”文件读取为Python字典对象,并将其存储在变量person中。最后,我们使用print()语句将person字典对象打印到控制台。

处理复杂数据

如果我们需要处理更复杂的JSON数据,例如嵌套的字典和列表,我们可以使用一些技巧来处理它们。例如,我们可以使用json.dumps()方法的indent参数来设置输出格式:

import json

# 复杂的JSON数据
data = 
    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "hobbies": ["reading", "music"],
    "family": 
        "spouse": "Jane Doe",
        "children": [
            "name": "Alice", "age": 5,
            "name": "Bob", "age": 3
        ]
    


# 将复杂的JSON数据格式化输出
data_json = json.dumps(data, indent=4)

print(data_json)

输出:


    "name": "John Doe",
    "age": 30,
    "city": "New York",
    "hobbies": [
        "reading",
        "music"
    ],
    "family": 
        "spouse": "Jane Doe",
        "children": [
            
                "name": "Alice",
                "age": 5
            ,
            
                "name": "Bob",
                "age": 3
            
        ]
    


可以看到,输出的JSON字符串使用了缩进和换行符,使得它更易于阅读和理解。

JSON是一种非常方便的数据交换格式,Python的json模块使得编码和解码JSON变得非常简单。在处理Web应用程序和API时,JSON是一种非常常见的数据格式。Python的json模块使得与JSON数据进行交互变得非常容易,无论是从字符串中解析JSON数据,还是将Python对象编码为JSON格式。

python中处理json数据,谢谢!!

感谢各位可以帮忙!我需要用python语言读取一个json文件并进行分析json文件:https://pan.baidu.com/s/1rQBE8wDmUrbza5yiOtBxiQ格式如图所示,每一个region下有多个arm,每个arm对应一个街道,我想分析出每个街道下面的数据之和。 比如第一个处理完以后显示: streetName: GEORGE STtotal=74另外,因为不同arm里的街道名字有一样的,我希望可以合并一样的街道名称,比如第一个和第二个arm都是GEORGE ST,最后GEORGE ST的total就等于两个arm的相加之和。最后请输出前5个最多的street名称谢谢各位大神!!不胜感激!!

参考技术A 亲测 楼上的答案完全正确
小建议:排序那里不用转成列表,字典可以直接排序:
print sorted(result.items(), key=lambda x:x[1],reverse=True)[:5]追问

您好,谢谢您的建议
但是我想问一下,为什么输出的结果里最多的只有51呢?

追答

因为有200多个街道的名称是空的

参考技术B python哪个版本呢?追问

python3,谢谢您

追答import json

def dict2list(dic:dict):
    ''' 将字典转化为列表 '''
    keys = dic.keys()
    vals = dic.values()
    lst = [(key, val) for key, val in zip(keys, vals)]
    return lst

with open('32338.json', 'r') as f:
    data = json.load(f)

result = 
for arms in data:
  if 'arms' in arms:
    for arm in arms['arms']:
      if 'streetName' in arm:
        if arm['streetName'] in result:
         result[arm['streetName']] += 1
        else:
         result[arm['streetName']] = 1
      # print(arm['streetName'])
t = sorted(dict2list(result), key=lambda x:x[1], reverse=True)[:5]
print(t)

追问

您好,很感谢您帮忙,但是请问这个输出结果是不是有些问题?因为第一个George st就有70+

谢谢!

本回答被提问者和网友采纳

以上是关于Python处理JSON数据的主要内容,如果未能解决你的问题,请参考以下文章

python中json处理

Python JSON数据处理

python处理json数据

Python处理JSON数据

Python 处理JSON数据

Python处理JSON数据