python详解json模块

系统 415 0

  我们在做工作中经常会使用到json模块,今天就简单介绍下json模块

 

什么是json

JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它通过对象和数组的组合米表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。json模块在python中可以作为数据解析json

 

对象和数组

在JavaScript 语言中,一切都是对象。任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等,但是对象和数组是比较特殊且常用的两种类型

对象 :它在JavaScript中是使用花括号{ }包裹起来的内容,数据结构为{ keyl : valuel,key2:value2}的键值对结构。在面向对象的语言中,key为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

数组 :数组在JavaScript中是方括号[]包裹起来的内容,数据结构为[ ”java ” ,” javascript ”,"vb " ]的索引结构。在JavaScript中, 数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引用得多。同样,值的类型可以是任意类型。

 

JSON对象格式

会发现和我们的字典格式是不是特别的一样

            
              
                # 格式为{"name":"value"}
              
              
[{
" name " : " AnJing " , " age " : " 26 " }]

 

JSON简单使用

loads()方法

 使用方法loads()将 json文字转化成json对象

            
              #
            
            
               coding:utf-8
            
            
              import
            
            
               json
str 
            
            = 
            
              '''
            
            
              
    [{
    "name":"AnJing",
    "age":"26"
}]

            
            
              '''
            
            
              
data 
            
            =
            
               json.loads(str)

            
            
              print
            
            
              (data)

            
            
              print
            
            
              (type(data))

            
            
              print
            
            (data[0][
            
              '
            
            
              name
            
            
              '
            
            ])  
            
              #
            
            
               通过下标进行选择
            
            
              print
            
            (data[0].get(
            
              '
            
            
              name
            
            
              '
            
            
              ))

代码结果:
[{
            
            
              '
            
            
              name
            
            
              '
            
            : 
            
              '
            
            
              AnJing
            
            
              '
            
            , 
            
              '
            
            
              age
            
            
              '
            
            : 
            
              '
            
            
              26
            
            
              '
            
            
              }]

            
            <
            
              class
            
            
              '
            
            
              list
            
            
              '
            
            >
            
              
AnJing
AnJing
            
          

注意:在使用loads的时候json字符串必须要用双引号表示,否则会报错

(json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 12)

dumps()方法

使用dumps()方法将json转换成字符串

            
              #
            
            
               coding:utf-8
            
            
              import
            
            
               json
str 
            
            =
            
               [{
    
            
            
              "
            
            
              name
            
            
              "
            
            :
            
              "
            
            
              AnJing
            
            
              "
            
            
              ,
    
            
            
              "
            
            
              age
            
            
              "
            
            :
            
              "
            
            
              26
            
            
              "
            
            
              
}]

            
            
              print
            
            
              (type(str))
data 
            
            =
            
               json.dumps(str)

            
            
              print
            
            
              (type(data))

            
            
              print
            
            
              (data)

代码结果:

            
            <
            
              class
            
            
              '
            
            
              list
            
            
              '
            
            >
<
            
              class
            
            
              '
            
            
              str
            
            
              '
            
            >
            
              
[{
            
            
              "
            
            
              name
            
            
              "
            
            : 
            
              "
            
            
              AnJing
            
            
              "
            
            , 
            
              "
            
            
              age
            
            
              "
            
            : 
            
              "
            
            
              26
            
            
              "
            
            }]
          

另外如果想要保存的文字好看点,我们可以增加一个参数indent,代表缩进字符个数,已经可以写入中文的时候不会乱码,加入ensure_ascii=False

            
              #
            
            
               coding:utf-8
            
            
              import
            
            
               json
str 
            
            =
            
               [{
    
            
            
              "
            
            
              name
            
            
              "
            
            :
            
              "
            
            
              安静
            
            
              "
            
            
              ,
    
            
            
              "
            
            
              age
            
            
              "
            
            :
            
              "
            
            
              26
            
            
              "
            
            
              ,
    
            
            
              "
            
            
              性别
            
            
              "
            
            :
            
              "
            
            
            
              "
            
            
              
}]

            
            
              #
            
            
               indent 表示缩进
            
            
              
#
            
            
               ensure_ascii=False 表示写入中文
            
            
with open(
            
              '
            
            
              123.json
            
            
              '
            
            ,
            
              '
            
            
              w
            
            
              '
            
            ,encoding=
            
              '
            
            
              utf-8
            
            
              '
            
            
              )as f:
    f.write(json.dumps(str,indent
            
            =2,ensure_ascii=
            
              False))


代码结果:
[
  {
    
            
            
              "
            
            
              name
            
            
              "
            
            : 
            
              "
            
            
              安静
            
            
              "
            
            
              ,
    
            
            
              "
            
            
              age
            
            
              "
            
            : 
            
              "
            
            
              26
            
            
              "
            
            
              ,
    
            
            
              "
            
            
              性别
            
            
              "
            
            : 
            
              "
            
            
            
              "
            
            
              
  }
]
            
          

load()方法

将文件内容转换成json数据

            
              #
            
            
               导入json模块
            
            
              import
            
            
               json
str 
            
            =
            
               [{
    
            
            
              "
            
            
              name
            
            
              "
            
            :
            
              "
            
            
              AnJing
            
            
              "
            
            
              ,
    
            
            
              "
            
            
              age
            
            
              "
            
            :
            
              "
            
            
              26
            
            
              "
            
            
              
}]

            
            
              #
            
            
               通过dumps写入文件中
            
            
with open(
            
              '
            
            
              123.json
            
            
              '
            
            ,
            
              '
            
            
              w
            
            
              '
            
            
              )as f:
    f.write(json.dumps(str))

            
            
              #
            
            
               通过load将数据转换成json
            
            
data = json.load(open(
            
              '
            
            
              123.json
            
            
              '
            
            ,
            
              '
            
            
              r
            
            
              '
            
            
              ))

            
            
              print
            
            
              (data)

代码结果:
[{
            
            
              '
            
            
              name
            
            
              '
            
            : 
            
              '
            
            
              AnJing
            
            
              '
            
            , 
            
              '
            
            
              age
            
            
              '
            
            : 
            
              '
            
            
              26
            
            
              '
            
            }]
          

dump()方法

将json数据写入到文件中

            
              #
            
            
               coding:utf-8
            
            
              import
            
            
               json
str 
            
            =
            
               [{
    
            
            
              "
            
            
              name
            
            
              "
            
            :
            
              "
            
            
              AnJing
            
            
              "
            
            
              ,
    
            
            
              "
            
            
              age
            
            
              "
            
            :
            
              "
            
            
              26
            
            
              "
            
            
              
}]

            
            
              #
            
            
               通过dump写入到json中
            
            
json.dump(str,open(
            
              '
            
            
              123.json
            
            
              '
            
            ,
            
              '
            
            
              w
            
            
              '
            
            
              ))

            
            
              #
            
            
               通过load查看是否写入
            
            
data = json.load(open(
            
              '
            
            
              123.json
            
            
              '
            
            ,
            
              '
            
            
              r
            
            
              '
            
            
              ))

            
            
              print
            
            
              (data)


代码结果:
[{
            
            
              '
            
            
              name
            
            
              '
            
            : 
            
              '
            
            
              AnJing
            
            
              '
            
            , 
            
              '
            
            
              age
            
            
              '
            
            : 
            
              '
            
            
              26
            
            
              '
            
            }]
          

 

 

简单的写了写json模块的使用方法,以及json的简单介绍,欢迎继续补充没有涉及到的知识。

 

感觉写的对您有帮助的,点个关注不迷路~~~~


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论