zoukankan      html  css  js  c++  java
  • python之json处理

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

    以上是网上对json的解释,其实只要记住是一种轻量的数据交换格式就可以了,确实方便,可以把数据写入文件中,也可将数据当做字符串使用,但需要注意的是:

    1.字符串输入json时,对元素需要使用双引号,单引号容易出错
    2.数据写入文件时,需要注意圆括号,也叫小括号,使用json.dump()默认会将有序排列转化为列表存入json文件,所以如果你的数据中有元组的话需要注意这一点
    3. json 字符串内部的字典、列表中的元素,如果是字符串的话,必须用双引号

    当然,最重要的还是需要先导入json模块:

    import json

    字符串解析:

    json.dumps()    #编码:把一个Python对象编码转换成Json字符串
    json.loads()        #解码:把Json格式字符串解码转换成Python对象 

    栗子:

    add_contect_str=‘{"backend": "www.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 3000}}’
    add_contect=json.loads(add_contect_str)
     search_info=add_contect['backend']
     weight=add_contect['record']['weight']
     server=add_contect['record']['server']
     maxconn=add_contect['record']['maxconn']

    文件解析:

    文件内容:

    {
     "汽车": {
      "BMW X3": {
       "price": 499999,
       "stock": 399,
       "belong": "汽车"
      },
      "PASST": {
       "price": 299999,
       "stock": 297,
       "belong": "汽车"
      },
      "Tesla Model S": {
       "price": 799999,
       "stock": 3000,
       "belong": "汽车"
      },
      "Porsche 911": {
       "price": 2999999,
       "stock": 594,
       "belong": "汽车"
      }
     },
     "手机": {
      "锤子2(这特么真是手机)": {
       "price": 998,
       "stock": 2994,
       "belong": "手机"
      },
      "华为Mate": {
       "price": 2999,
       "stock": 5996,
       "belong": "手机"
      },
      "Iphone": {
       "price": 5888,
       "stock": 2998,
       "belong": "手机"
      },
      "XiaoMi 4": {
       "price": 1999,
       "stock": 5396,
       "belong": "手机"
      }
     },
     "服装": {
      "小白鞋": {
       "price": 900,
       "stock": 5964,
       "belong": "服装"
      },
      "T恤": {
       "price": 300,
       "stock": 892,
       "belong": "服装"
      },
      "驴牌腰带": {
       "price": 9999,
       "stock": 2999,
       "belong": "服装"
      },
      "Nudie牛仔裤": {
       "price": 699,
       "stock": 3978,
       "belong": "服装"
      }
     },
     "电脑": {
      "Mac Air": {
       "price": 6999,
       "stock": 6002,
       "belong": "电脑"
      },
      "Mac pro": {
       "price": 9999,
       "stock": 3995,
       "belong": "电脑"
      },
      "IBM X240": {
       "price": 6999,
       "stock": 3003,
       "belong": "电脑"
      },
      "Surface Book": {
       "price": 8999,
       "stock": 3020,
       "belong": "电脑"
      }
     },
     "家电": {
      "洗衣机": {
       "price": 999,
       "stock": 597,
       "belong": "家电"
      },
      "彩电": {
       "price": 5000,
       "stock": 398,
       "belong": "家电"
      },
      "微波炉": {
       "price": 800,
       "stock": 2995,
       "belong": "家电"
      },
      "冰箱": {
       "price": 3000,
       "stock": 300,
       "belong": "家电"
      },
      "热水器": {
       "price": 600,
       "stock": 900,
       "belong": "家电"
      }
     }
    }

    解析:

    user_info=json.load(open('user_info','r'))        #读数据
    json.dump(goods,open('goods_info','w'),ensure_ascii=False,indent=1)    #写入数据

    其中,ensure_ascii=False表示不转编码,如果数据中有中文,没有ensure_ascii参数时,会转为乱码。indent为缩进,让数据看起来更有序,优雅的装逼法则。

    排序:sort_keys=True,排序使数据看起来更有序,虽然字典的是无序的,然并卵。。。

    import json
    data1 = {'b':789,'c':456,'a':123}
    data2 = {'a':123,'b':789,'c':456}
    d1 = json.dumps(data1,sort_keys=True)
    d2 = json.dumps(data2)
    d3 = json.dumps(data2,sort_keys=True)
    print(d1)
    print(d2)
    print(d3)
    print(d1==d2)

    结果:

    {"a": 123, "b": 789, "c": 456}
    {"c": 456, "b": 789, "a": 123}
    {"a": 123, "b": 789, "c": 456}
    False
    [Finished in 0.1s]
  • 相关阅读:
    jsp与spring mvc后台controller间参数传递处理之总结
    又一个无效的列类型错误Error setting null for parameter #7 with JdbcType NULL . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLExcept
    SSM文件上传要点总结
    关于SSM中mybatis向oracle添加语句采用序列自增的问题
    oracle和mysql的一些区别
    mapper.xml实现oracle的分页语句
    2.数组的解构赋值
    3.Vue 实例
    2.Vue.js 是什么
    1. vue 的安装
  • 原文地址:https://www.cnblogs.com/ccorz/p/5522514.html
Copyright © 2011-2022 走看看