包含pythonstrings转json的词条

  • 1、【Python】浅谈python中的json
  • 2、python3 对象 |字典|json|yaml|字符串 相互转化
  • 3、python 字符串转 json
  • 4、python字符串如何转json?
  • 5、python怎样将字符串转成json
  • 6、python怎么转化成json格式

一 前言  

   最近一直在做开发相关的工作–基于Django的web 平台,其中需要从model层传输数据到view 层做数据展示或者做业务逻辑处理。我们采用通用的Json格式–Json(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和程序解析。

二 认识Json

   2.1 Json 结构

   常见的Json格式为 “名称/值”对的集合,其中 值可以是对象,列表,字典,字符串等等。比如

backup_data = {“back_to_host”: “dbbk0”,

“ip_address”: “10.10.20.3”,

“host_name”: “rac4”,

“port”: 3306}

  2.2 使用Json

  Python的Json模块序列化与反序列化的过程分别是 编码和解码。这两个过程涉及到两组不同的函数

  编码 把一个Python对象编码转换成Json字符串,json.dumps(data)/json.dump(data,file_handler)

  解码 把Json格式字符串解码转换成Python对象,json.loads(data)/json.load(file_handler)

  在python中要使用Json模块做相关操作,必须先导入:

import Json

  2.3 主要函数

  编码函数主要有 json.dumps(data)/json.dump(data,file_handler)

   json.dumps()的参数是将python对象转换为字符串,如使用json.dumps序列化的对象json_dumps=json.dumps({‘a’:1, ‘b’:2}) ,json_dumps='{“b”: 2, “a”: 1}’

   json.dump 是将内置类型序列化为json对象后写入文件。

 解码函数主要由json.loads(data)/json.load(file_handler)  

    json.loads的参数是内存对象,把Json格式字符串解码转换成Python对象,json_loads=json.loads(d_json)  #{ b”: 2, “a”: 1},使用load重新反序列化为dict

    json.load()的参数针对文件句柄,比如本地有一个文件/tmp/test.json  json_load=json.load(open(‘/tmp/test.json’))

具体案例参考如下:

In [3]: data={“back_to_host”: “rac1”,

…: “ip_address”: “10.215.20.3”,

…: “host_name”: “rac3”,

…: “port”: 3306}

In [7]: json_str=json.dumps(data)

In [8]: print json_str

{“ip_address”: “10.215.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

In [9]: json_loads=json.load(json_str)

—————————————————————————

AttributeError Traceback (most recent call last)

ipython-input-9-180506f16431 in module()

—- 1 json_loads=json.load(json_str)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)

284

285 “”

注意 从上面的报错信息来看 json.loads 传参是字符串类型,并不是文件句柄,没有 read()属性。

In [10]: json_loads=json.loads(json_str)

In [11]: print json_loads

{u’back_to_host’: u’rac1′, u’ip_address’: u’10.215.20.3′, u’host_name’: u’rac3′, u’port’: 3306}

In [12]: type(json_loads)

Out[12]: dict

In [13]: type(json_str)

Out[13]: str

利用dump 将数据写入 dump.json

In [17]: with open(‘/tmp/dump.json’,’w’) as f:

…: json.dump(json_str,f)

…:

yangyiDBA:~ yangyi$ cat /tmp/dump.json

“{\”ip_address\”: \”10.10.20.3\”, \”back_to_host\”: \”rac1\”, \”host_name\”: \”rac3\”, \”port\”: 3306}”

yangyiDBA:~ yangyi$

利用json.load 将dump.sjon的数据读出来并赋值给 data 

In [18]: with open(‘/tmp/dump.json’,’r’) as f:

…: data=json.load(f)

…:

In [19]: print data

{“ip_address”: “10.10.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

三 小结

  本文算是一篇学习笔记,主要对比了json.loads/json.load  , json.dumps/ json.dump 的使用差异 ,方便以后更好的使用json 。

以上为本次分享内容,感谢观看。

在研究 k8s 的yaml 配置文件的时候,我总担心自己一不小心 会写错,所以我向往 使用将对象 序列化 yaml 的形式,

其实 python object 可以 直接 转 yaml ,甚至也可以 直接 转成yaml文件!!!

这里 会经常用到几个 函数 vars() ast.

我们先尝试用最笨的方法 实现 object到yaml 的转化

在python对象 convert to dict 的形式,使用 vars()函数

然后 dict convert to json 使用 json.dumps(dict)函数

然后 json converte to yaml 使用 ya= yaml.load(json.dumps(dict)) 然后

再 yaml.safe_dump(ya,default_flow_style=False)

至此我们看到 从 python Object — dict —- json — yaml 的转化

其中 obj dict json yaml 转 string ,只要 str()函数即可,或者 str(vars())结合

yaml 格式 写入到文件 ,需要注意的是, open()函数 的mode 一定要是 ‘w’ ,不能是’wb’, b代表是二进制写入

yaml 写入的是dict str,使用 ‘wb’ 会报错,[yaml TypeError: a bytes-like object is required, not ‘str’]

【出现该错误往往是通过open()函数打开文本文件时,使用了‘rb’属性,如:fileHandle=open(filename,’rb’),则此时是通过二进制方式打开文件的,所以在后面处理时如果使用了str()函数,就会出现该错误,该错误不会再python2中出现。

具体解决方法有以下两种:

第一种,在open()函数中使用‘r’属性,即文本方式读取,而不是‘rb’,以二进制文件方式读取,可以直接解决问题。

第二种,在open()函数中使用‘rb’,可以在使用之前进行转换,有以下实例,来自: 】

其实 python object 可以 直接 转 yaml ,甚至也可以 直接 转成yaml文件!!!

比如我已经定义了一个 Dog python class,他有 好几个属性 并已经赋值初始化了

另外生成 yaml 对象

生成yaml文件

结果是

反过来 yaml —- json — 持久化 json 文件 indent=1属性是为了让 json 不以单行展示,而是展开

注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是键值对

【# set object is not JSON serializable [duplicate]

打开 demo.json

yaml — dict

yaml — python object

json — dict

json.loads()

dict– json

json.jumps()

str — dict

newdict=dict(str)

json — python object

一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成dictionary,再转化成object,通过实践,源码如下:

yaml — python object

对yaml,也只能先转换成json —dictionary,再转化成object,通过实践,源码如下:

dict — -python object

python对象 默认都有一个 私有的属性 dict 取值 就是 object的 字典形式, 赋值就就可以给对象属性对应赋值

例如json 转 对象

对象 转 json

Python之dict(或对象)与json之间的互相转化

在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作。

dict字典转json数据

对象转json数据

json数据转成dict字典

json数据转成对象

json的load()与dump()方法的使用

dump()方法的使用

json本身就是字符串,是符合json格式的字符串。

所以,你说的,字符串转json,就是不正确的描述。

一般正常的用法是:

涉及到,在json字符串,来自字符变量或文件内容,和不同类型的变量,之间的转换。

变量转json:

json.dumps或json.dump

json转变量:

json.loads或json.load

详解:

【整理】Python中将(字典,列表等)变量格式化成(漂亮的,树形的,带缩进的,JSON方式的)字符串输出

【整理】什么是JSON+如何处理JSON字符串

(此处不给贴地址,请自己用google搜标题,即可找到帖子地址)

解决方法:

其他解决方法:

在存储 content 的时候就使用 OrderedDict 而非用默认的 dict。

2.如果要重新转化为 json 格式但是仍要保证其已有顺序需要在 json.loads() 中使用参数 object_pairs_hook。

import json

a = json.loads(‘{“a”:”b”}’)

a

{u’a’: u’b’}

如果datas是Python的原始数据,并且datas中没有非ascii码,可以使用如下语句转换为json格式:

import

json

json.dumps(datas)

当datas中含有中文等非ascii字符时,可以使用如下参数:

json.dumps(datas,

ensure_ascii=False)

如果想美化输出格式,可以使用indent参数:

json.dumps(datas,

indent=4)

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/126263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简单一点的头像简单一点
上一篇 2024-10-03 23:07
下一篇 2024-10-03 23:07

相关推荐

  • java的配置,java的配置环境怎么看

    本文目录一览: 1、学习java需要什么配置的笔记本电脑? 2、java环境变量配置 3、java环境变量设置怎么配置 4、java环境安装好了之后,需要进行什么配置。配置的变量或…

    编程 2024-11-26
  • 学Python R开发者的必备技能

    一、数据处理 Python和R语言都是数据分析和处理领域常用的语言。处理数据是数据分析流程中最重要的一步,所以熟练运用数据处理的技能是必不可少的。以下是一些相关技能: 1、熟练使用…

    编程 2024-11-02
  • Java工程师:如何将数组转换为List?

    在Java中,数组和集合(List)是非常常用的数据结构,但是在不同的场景下,我们需要在数组和集合之间来回切换。最常见的就是需要将数组转换为List,便于我们进行集合操作。在本篇文…

    编程 2024-11-25
  • 深入探究csstext-align

    一、text-align在不同元素上的应用 text-align可以用在多种元素上,包括段落、表格、块级元素等。 /* 文本水平居中 */ p { text-align: cent…

    编程 2024-11-03
  • Docker安装Kafka详解

    一、Docker安装Kafka 3.0 Docker作为一个快速构建、测试和部署应用程序的平台,能够轻松实现Kafka的安装与配置。总体来说,您需要下载并安装Docker,然后集成…

    编程 2024-11-29
  • 选择正确的变量php,变量选择是用来选择最好的

    本文目录一览: 1、php 变量解析 2、PHP入门基础教程 3、PHP怎样取取指定变量的值 4、如何在当前页面用php 获取js 变量的值 php 变量解析 第一个问题的确需要仔…

    编程 2024-10-29
  • Java工程师如何重命名文件

    重命名文件是Java工程师在日常工作中经常会遇到的操作。本文将从多个方面详细阐述Java工程师如何重命名文件,帮助读者轻松理解这个操作。 一、File类的使用 Java中,File…

    编程 2024-10-04
  • set-executionpolicy详解

    一、什么是set-executionpolicy set-executionpolicy命令是Windows PowerShell中用于设置脚本执行策略的命令。当Windows P…

    编程 2024-10-04
  • 深入剖析PHP strtolower函数

    一、语法结构 strtolower函数是PHP的一个内置函数,用来将字符串转化为小写。其语法结构如下: strtolower(string $str): string 其中的$st…

    编程 2024-10-03
  • 让Python页面更绚丽多彩的Color Radio

    Python 是一个非常强大的编程语言,可以在很多方面应用,包括网络应用、数据分析、人工智能等,其中网页开发也是 Python 的一大应用领域。然而在 Python 网页开发过程中…

    编程 2024-11-24

发表回复

登录后才能评论