首页 > 编程知识 正文

修改json对象的值,python 字符串转json

时间:2023-05-04 08:56:07 阅读:149906 作者:3826

全部展开

Json简介: Json,全名为JavaScript Object Notation,是3231313愚人节236313431303231363533 e 4b 893 e 5b 19e 313333363393564轻量级数据交换格式Json使用最广泛的是AJAX中web服务器和客户端通信的数据格式。 因为现在也经常用于http请求中,所以学习各种关于json的知识是很自然的事情。 Python官方网站: https://docs.python.org/2/library/JSON.html? highlight=json#module-json

使用Json API :在2.6版之前,必须下载并安装软件包才能使用python。 与在当前RF中使用SeleniumLibrary类似。 然而,在2.6中,官方文档(docs.python.org/2.6/whats new/2.6.html )显示,“multiprocessing和json等重要的新软件包是标准生产线与python 3一起'在那里安装python2.6或更高版本的童鞋,就可以直接在需要的地方在import json上使用,而不需要下载json包。 在安装目录下的Lib下,看看这两个包。 (单击仔细阅读这些源代码会收获更多。 ) )请参阅以下文章。

Python2.6及更高版本支持Json编码和解码,python的大多数内置类型都支持与Json的转换。 最简单的例子如下。

importjsondata={ ' spam ' : ' foo ',' parrot ' :42 } in _ JSON=JSON.dumps (data ) # encodethedatain _ JSON

Encode过程是将python对象转换为json对象的过程,两个常用的函数是dumps和dump函数。 这两个函数的唯一区别在于dump将python对象转换为json对象,生成fp的文件流,dumps生成字符串。

其他参数的使用是相同的。 以下是学习的一部分。

dic1={'type':'dic1 ',' username':'loleina ',' age':16}

JSON_DIC1=JSON.dumps(DIC1 ) ) ) ) )。

print json_dic1

jon_dic2=JSON.dumps(diC1,sort_keys=True,indent=4,separators=(',',' : ' ),encoding='gbk )

print json_dic2

执行结果如下。

如果将实例的key'username '的value替换为中文“测试”,则第一次无参数转换会出错,但第二次带参数时可以正常工作。

实际上,这是一个了解函数参数的过程,并给出了一些常用的参数。

Skipkeys :默认值为False,如果dict的keys中的数据不是python的基本类型(str、unicode、int、long、float、bool、None ),则为TypeError 如果此时设置为True,则会跳过此类key

ensure_ascii :默认值为True,如果dict中包含非ascii字符,则会生成类似uXXXX的显示数据,如果设置为False,则会正常显示

indent :必须是非负整数。 如果为0或空,则在一行中显示数据。 否则将换行,前面的空白将显示indent的数量。 这样打印的json数据也称为pretty-printed json

separators (分隔符实际上是一组(item_separator,dict_separator ),默认值为)、(,)和() : )。 这表示dictionary中的KEYs之间由“,”分隔,key和值之间由“:”分隔。

编码:缺省为UTF-8,用于设置json数据的编码。

sort _ keys :根据keys的值对数据进行排序。

Decode过程是将json对象转换为python对象的过程,两个常用的函数是loads和load函数。 区别与dump和dumps相同。

="center">

if __name__ == '__main__':

# 将python对象test转换json对象

test = [{"username":"测试","age":16},(2,3),1]

print type(test)

python_to_json = json.dumps(test,ensure_ascii=False)

print python_to_json

print type(python_to_json)

# 将json对象转换成python对象

json_to_python = json.loads(python_to_json)

print json_to_python

print type(json_to_python)

运行结果如下:

从上面2个例子的测试结果可以看到,python的一些基本类型通过encode之后,tuple类型就转成了list类型了,再将其转回为python对象时,list类型也并没有转回成tuple类型,而且编码格式也发生了变化,变成了Unicode编码。具体转化时,类型变化规则如下所示:

Python-->Json

Json-->Python

Json处理中文问题:

关于python字符串的处理问题,如果深入的研究下去,我觉得可以写2篇文章了(实际上自己还没整很明白),在这里主要还是总结下使用python2.7.11处理json数据的问题。前期做接口测试,处理最多的事情就是,把数据组装成各种协议的报文,然后发送出去。然后对返回的报文进行解析,后面就遇到将数据封装在json内嵌入在http的body内发送到web服务器,然后服务器处理完后,返回json数据结果的问题。在这里面就需要考虑json里有中文数据,怎么进行组装和怎么进行解析,以下是基础学习的一点总结:

第一:Python 2.7.11的默认编码格式是ascii编码,而python3的已经是unicode,在学习编解码的时,有出现乱码的问题,也有出现list或者dictionary或者tuple类型内的中文显示为unicode的问题。出现乱码的时候,应该先看下当前字符编码格式是什么,再看下当前文件编码格式是什么,或者没有设置文件格式时,查看下IDE的默认编码格式是什么。最推崇的方式当然是每次编码,都对文件编码格式进行指定,如在文件前 设置# coding= utf-8。

第二:字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码

第三:将json数据转换成python数据后,一般会得到一个dict类型的变量,此时内部的数据都是unicode编码,所以中文的显示看着很痛苦,但是对于dict得到每个key的value后,中文就能正常显示了,如下所示:

# coding= utf-8import json

import sysif __name__ == '__main__':

# 将python对象test转换json对象

test = {"username":"测试","age":16}

print type(test)

python_to_json = json.dumps(test,ensure_ascii=False)

print python_to_json

print type(python_to_json)

# 将json对象转换成python对象

json_to_python = json.loads(python_to_json)

print type(json_to_python)

print json_to_python['username']

运行结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。