初步了解json文件

来自wetab 的AI pro:

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,但是它使用了类似于编程语言(特别是JavaScript)的习惯。因此,这种格式非常流行在网络应用中用于数据交互。

JSON是由多种类型的值组成:

  1. 对象(Object):对象在JSON中表示为一系列键值对(“key”: value),被大括号 {} 包围。每个键(key)是一个字符串,每个值(value)可以是字符串、数字、数组、真/假值或者另一个对象。
  2. 数组(Array):数组是一系列值(value),被方括号 [] 包围,值之间用逗号分隔。
  3. 值(Value):值可以是字符串、数字、对象、数组、布尔值(true/false)或者 null。

示例 JSON 数据

{
    "person": {
        "name": "John Doe",
        "age": 30,
        "isStudent": false,
        "skills": ["Python", "JavaScript"],
        "address": {
            "street": "123 Elm St",
            "city": "Somewhere"
        }
    }
}

在这个示例中:

  • “person” 是一个对象,包含了五个键值对:nameageisStudentskills, 和 address
  • “skills” 是一个数组,包含了两个字符串值。
  • “address” 是一个嵌套对象,包含了 street 和 city 两个键。

如何使用 Python 处理 JSON

Python 支持 JSON 通过 json 库,允许你解析 JSON 字符串及文件,并可以将内部数据结构变回 JSON 格式。

以下是基于上述 JSON 示例的处理代码:

import json

# JSON 字符串
json_string = '''
{
    "person": {
        "name": "John Doe",
        "age": 30,
        "isStudent": false,
        "skills": ["Python", "JavaScript"],
        "address": {
            "street": "123 Elm St",
            "city": "Somewhere"
        }
    }
}
'''

# 将 JSON 字符串转换为 Python 字典
data = json.loads(json_string)

# 访问数据
name = data['person']['name']
age = data['person']['age']
skills = data['person']['skills']
city = data['person']['address']['city']

print(f"Name: {name}, Age: {age}, City: {city}")
print("Skills:", skills)

# 添加一个新的技能
data['person']['skills'].append("R")

# 将 Python 字典转换回 JSON 字符串
updated_json = json.dumps(data, indent=4)
print("Updated JSON:")
print(updated_json)

这个代码段展示了如何从一个 JSON 字符串读取数据,怎样访问和修改数据,以及如何将修改后的数据写回到 JSON 格式。dumps()方法:将Python对象序列化为JSON字符串。

进一步的,将上面的json_string保存为一个json文件并从文件读取内容,然后将['person']['name']的值改为"Tom",再次保存json文件:

import json

# JSON 字符串
json_string = '''
{
    "person": {
        "name": "John Doe",
        "age": 30,
        "isStudent": false,
        "skills": ["Python", "JavaScript"],
        "address": {
            "street": "123 Elm St",
            "city": "Somewhere"
        }
    }
}
'''

# 将字符串保存到 JSON 文件
with open('data.json', 'w') as file:
    file.write(json_string)

# 从文件读取 JSON 数据
with open('data.json', 'r') as file:
    data = json.load(file)

# 修改name的值
data['person']['name'] = "Tom"

# 将更新后的数据保存回 JSON 文件
with open('data.json', 'w') as file:
    json.dump(data, file, indent=4)

# 打印输出以验证更改
print(json.dumps(data, indent=4))
  • indent=4 表示每一层数据前将插入四个空格作为缩进。这使得生成的 JSON 数据结构清晰,方便人类阅读和调试。如果不设这个参数,上述数据的打印结果是:{"person": {"name": "Tom", "age": 30, "isStudent": false, "skills": ["Python", "JavaScript"], "address": {"street": "123 Elm St", "city": "Somewhere"}}}。设定缩进后:
  • {
        "person": {
            "name": "Tom",
            "age": 30,
            "isStudent": false,
            "skills": [
                "Python",
                "JavaScript"
            ],
            "address": {
                "street": "123 Elm St",
                "city": "Somewhere"
            }
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/611257.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux vscode push报错fatal: Authentication failed

注意啊,Git基于密码的身份验证已经被删除了,所以这个报错发生时无论密码正确与否,以及参考比较旧的改bug教程,都没法提交。进入提示的网址,生成个人访问令牌就好了

200-500人规模工厂网络方案(中小企业网络)

一、方案概述 工厂一般有单独的弱电房,类似这种 里面采用的方案如下: 主要考虑有线、无线、财务、办公、访客等业务,便于维护管理和后续扩容 还需要 Wi-Fi覆盖零死角高速率,工作不卡顿 同时考虑AV反病毒、IPS入侵防御、用户准…

【MySQL数据库开发设计规范】之命名规范

欢迎点开这篇文章,自我介绍一下哈,本人姑苏老陈 ,是一名JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中,该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章,定期更新,欢迎关注&…

python自动化生成ppt

使用Python和python-pptx创建PPT 在这篇博客中,我们将探讨如何使用Python库python-pptx来创建一个简单的PowerPoint演示文稿(PPT)。这个库允许我们以编程方式创建幻灯片、添加文本、图片、表格和自定义形状。 安装python-pptx 首先&#x…

智能助手上线,大模型提供云服务专属顾问

业务背景 在使用云服务的时候,当您遇到复杂问题,如配置、关联或计费方式不明确时,可能需要向客服提交工单进行技术沟通。在漫长的工作过程中,耗费了宝贵的时间和精力。 2024 年 4 月,百度智能云正式推出了融合文心大…

单调栈:(C++)

在题目的要求中,存在先进后出(即在前面的数据需要遍历到后面的某一数据时才能确定计算值)单调栈在一部分解题场景中避免了暴力解法的高时间复杂度问题,但是在做题过程中视情况而定,有些题目的最优解不一定使用单调栈&a…

【原创】springboot+mysql物资库存管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

利用AI提高内容生产效率的五个方案

目录 如何利用AI提高内容生产效率? ​编辑方向一:自动化内容生成 方向二:内容分发与推广 方向三:内容分析与优化 方向四:图像和音频处理 方向五:自动编辑和校对 如何利用AI提高内容生产效率? 简介&#xff1a…

车载电子电器架构 —— 应用软件开发(上)

车载电子电器架构 —— 应用软件开发(上) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

CellChat包文献介绍

Inference and analysis of cell-cell communication using CellChat - PubMed (nih.gov) 目录 在线数据 摘要 基础介绍 分析结果 1,概述 2,识别预测通路 3,连续的信号转导 4,预测空间共定位细胞群之间的关键信号转导事件…

企业活动想联系媒体报道宣传如何联系媒体?

在企业的宣传推广工作中,我曾经历过一段费事费力、效率极低的时期。那时,每当公司有重要活动或新项目需要媒体报道时,我便要一家家地联系媒体,发送邮件、打电话,甚至亲自登门拜访,只为求得一篇报道。然而,这样的过程充满了不确定性和挑战,时常让我感到焦虑和压力山大。 记得有一…

vue3专栏项目 -- 项目介绍以及准备工作

这是vue3TS的项目,是一个类似知乎的网站,可以展示专栏和文章的详情,可以登录、注册用户,可以创建、删除、修改文章,可以上传图片等等。 这个项目全部采用Composition API 编写,并且使用了TypeScript&#…

亚马逊产品排名提升全攻略:自养号测评干货

之前我们一同探讨了亚马逊产品排名的多种类型,现在让我们回到正题,探讨一下如何才能有效地提升产品排名,从而吸引并抓住平台的流量,最终将其转化为可观的销量。 首先,卖家必须明晰亚马逊的排名机制,它主要基…

网页版Figma汉化

最近学习Figma,简单介绍一下网页版Figma的汉化方法 1.打开网址:Figma软件汉化-Figma中文版下载-Figma中文社区 2.下载汉化插件离线包 解压汉化包 3.点开谷歌的管理扩展程序 4.点击加载已解压的扩展程序,选择刚刚解压的包 这样就安装好了汉化…

从0到1开发一个vue3+ts项目(一)

1. 环境配置 1.1 安装node 使用官方安装程序 前往 Node.js 官网:访问 Node.js 官网,下载适合你操作系统的安装程序。运行安装程序:下载完成后,双击安装程序并按照提示进行安装。验证安装:安装完成后,在终…

顺序表经典算法OJ题-- 力扣27,88

题1: 移除元素 题2: 合并两个有序数组 一:题目链接:. - 力扣(LetCode) 思路:(双指针法) 创建两个变量src,dst 1)若src指向的值为val&#xf…

Qt复习第二天

1、菜单栏工具栏状态栏 #include "mainwindow.h" #include "ui_mainwindow.h" #pragma execution_character_set("utf-8"); MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);//菜…

粤嵌—2024/4/26—跳跃游戏 ||

代码实现&#xff1a; 方法一&#xff1a;回溯 历史答案剪枝优化——超时 int *dis;void dfs(int k, int startindex, int *nums, int numsSize) {if (dis[startindex] < k) {return;}dis[startindex] k;for (int i 0; i < nums[startindex]; i) {if (startindex i &…

嫁接打印的技术要点

所谓嫁接打印&#xff0c;是一种增减材混合制造的方式。它将已成形的模具零件当作基座&#xff0c;在此基础上“生长”出打印的零件。其中基座通常采用传统加工方式制造&#xff0c;而打印部分则使用专用的金属粉末&#xff0c;通过 3D 打印技术成型。 嫁接打印之所以备受欢迎&…

4.nginx.pid打开失败以及失效的解决方案

一. nginx.pid打开失败以及失效的解决方案 1.错误图片&#xff1a; 2.解决方法 步骤1&#xff1a;进入这个目录 /var/run/nginx,提示没有文件或目录&#xff0c;则使用mkdir创建这个目录。 步骤2&#xff1a;然后 ./nginx -s reload 运行,是一个无效的PID 步骤3&#xff1a;使…
最新文章