zoukankan      html  css  js  c++  java
  • python-Json模块

    1,Json模块介绍
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
    2,Json的格式
    2.1,对象:
    [plain] view plaincopy 
    {name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}  
    { 属性 : 值 , 属性 : 值 , 属性 : 值 }  
    2.2,数组:
    是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
    [plain] view plaincopy 
    [  
    {name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}, {name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"},  
    {name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}  
    ]  
    另,值可以是字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
    3,Json的导入导出
    这里的write/dump的含义是将Json对象输入到一个python_object中,如果python_object是文件,则dump到文件中;如果是对象,则dump到内存中。这是序列化。
    
    3.1,读取Json文件
    [python] view plaincopy 
    import simplejson as json  
    f = file('table.json')  
    source = f.read()  
    target = json.JSONDecoder().decode(source)  
    print target  
    [python] view plaincopy 
    import simplejson as json  
    jsonobject = json.load(file('table.json'))  
    print jsonobject  
    
    3.2,显示Json文件
    为了显示Json格式好看,原来的Json文件:
    
    [python] view plaincopy 
    [admin@r42h06016.xy2.aliyun.com]$python readJson.py  
    [{'Query': 'desc zt1;', 'Message': '{"DescibeTableWithPartSpec": "false",  "GetTableMetaString":"{\"tableName\":\"zt1\",\"owner\":\"1365937150772213\",\"createTime\":1346218114,\"lastModifiedTime\":0,\"columns\":[{\"name\":\"a\",\"type\":\"string\"},{\"name\":\"b\",\"type\":\"string\"}],\"partitionKeys\":[{\"name\":\"pt\",\"type\":\"string\"}]}"}', 'QueryID': '', 'Result': 'OK'}]  
    执行文件:
    [python] view plaincopy 
    import simplejson as json  
    jsonobject = json.load(file('table.json'))  
    print json.dumps(jsonobject,sort_keys=True,indent=4)  
    显示:
    [python] view plaincopy 
    [admin@r42h06016.xy2.aliyun.com]$python readJson.py  
    [  
        {  
            "Message": "{"DescibeTableWithPartSpec": "false",  "GetTableMetaString":"{\"tableName\":\"zt1\",\"owner\":\"1365937150772213\",\"createTime\":1346218114,\"lastModifiedTime\":0,\"columns\":[{\"name\":\"a\",\"type\":\"string\"},{\"name\":\"b\",\"type\":\"string\"}],\"partitionKeys\":[{\"name\":\"pt\",\"type\":\"string\"}]}"}",  
            "Query": "desc zt1;",  
            "QueryID": "",  
            "Result": "OK"  
        }  
    ]  
    
    3.3,json模块示例:
    [python] view plaincopy 
    import json  
    # Converting Python to JSON  
    json_object = json.write( python_object )  
    # Converting JSON to Python  
    python_object = json.read( json_object )  
    3.4,simplejson模块 示例:
    [python] view plaincopy 
    import simplejson  
    # Converting Python to JSON  
    json_object = simplejson.dumps( python_object )  
    # Converting JSON to Python  
    python_object = simplejson.loads( json_object )  
    其中的json_object也可以是文件名比如file(“tmp/table.json”)
    
    4,Json数据的解析
    假设对于data.json文件如下:
    
    [plain] view plaincopy 
    {'isSuccess': True, 'errorMsg': '', 'total': 1, 'data': [{'isOnline': True, 'idc': 'xe6x9dxadxe5xb7x9exe5xbexb7xe8x83x9cxe6x9cxbaxe6x88xbf', 'assetsNum': 'B50070100007003', 'responsibilityPerson': 'xe5xbcxa0xe4xb9x8bxe8xafx9a', 'deviceModel': 'PowerEdge 1950', 'serviceTag': '729HH2X', 'ip': '172.16.20.163', 'hostname': 'hzshterm1.alibaba.com', 'manageIp': '172.31.58.223', 'cabinet': 'H05', 'buyTime': '2009-06-29', 'useState': 'xe4xbdxbfxe7x94xa8xe4xb8xad', 'memoryInfo': {'amount': 4, 'size': 8192}, 'cpuInfo': {'coreNum': 8, 'l2CacheSize': 6144, 'amount': 2, 'model': 'Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz', 'masterFrequency': 1995}, 'cabinetPositionNum': '', 'outGuaranteeTime': '', 'logicSite': 'xe4xb8xadxe6x96x87xe7xabx99'}]}  
    首先导入该文件,建立Json对象,并查看类型,已经是dict类型了。
    [python] view plaincopy 
    #test.py  
    import simplejson as json  
    ddata = json.loads(file("data.json"))  
    print ddata  
    print type(ddata)#<type 'dict'>  
    其次,我们以读字典中key 为”data”对应的键值
    >>> ddata['data']    //查看字典的方法!
    [python] view plaincopy 
    >>>type(ddata['data'])  
    <type 'list'>  
    发现ddata[‘data’]是一个列表,列表就要用序号来查询
    >>> ddata['data'][0]         //查看列表的方法!
    [python] view plaincopy 
    >>> type(ddata['data'][0])  
    <type 'dict'>  
    
    ddata[‘data’]列表的0号元素是个字典。。
    好,那我们查查key为idc的键值是多少
    >>> ddata['data'][0]['idc']          //查看字典的方法!
    [python] view plaincopy 
    >>> ddata['data'][0]['idc']          //查看字典的方法!  
    'xe6x9dxadxe5xb7x9exe5xbexb7xe8x83x9cxe6x9cxbaxe6x88xbf'  
    >>> print ddata['data'][0]['id
  • 相关阅读:
    Go
    Go
    Go
    Go
    Go
    Go
    爬虫常用相关库
    Go
    python基础第7天(day19)
    python基础第五天(day17)元组,集合,字符串操作 字符编码:
  • 原文地址:https://www.cnblogs.com/fly-xiang-zhao/p/4058985.html
Copyright © 2011-2022 走看看