json知识整理

1、json字符串转为字典

json.load / json.loads

两个方法功能类似,可选参数也相同,最大的区别在于,json.load方法接受的输入,即第一个参数,是包含json数据的文件对象,如open方法的返回对象,

json.loads接受的输入是json字符串,而非文件对象。从输入类型的区别也可以看出两者的使用场合。

可选参数包括是否需要转换整型、浮点型等数值的参数,还有一些复杂的功能。


2、字典转换为json

json.dump / json.dumps

对应于load和loads,dump的第一个参数是对象字典,第二个参数是文件对象,可以直接将转换后的json数据写入文件,dumps的第一个参数是对象字典,其余都是可选参数。dump和dumps的可选参数相同,这些参数都相当实用,现将用到的参数记录如下:

ensure_ascii 默认为True,保证转换后的json字符串中全部是ascii字符,非ascii字符都会被转义。如果数据中存在中文或其他非ascii字符,最好将ensure_ascii设置为False,保证输出结果正常。

indent 缩进,默认为None,没有缩进,设置为正整数时,输出的格式将按照indent指定的半角空格数缩进,相当实用。

separators 设置分隔符,默认的分隔符是(',', ': '),如果需要自定义json中的分隔符,例如调整冒号前后的空格数,可以按照(item_separator, key_separator)的形式设置。

sort_keys 默认为False,设为True时,输出结果将按照字典中的key排序。

>>> import json
>>> a = {}
>>> a['1'] = 2
>>> a['ad'] = 'ertwer'
>>> a['02'] = 'oierte'
>>> a[2] = [1, 'a']
>>> a['non_ascii'] = "青团 》 熊猫 ?"
>>> a['ss'] = a.copy()
>>> print(json.dumps(a))  # 默认参数输出,无缩进,中文字符都被转义
{"2": [1, "a"], "02": "oierte", "ss": {"ad": "ertwer", "2": [1, "a"], "02": "oierte", "1": 2, "non_ascii": "\u9752\u56e2 \u300b \u718a\u732b \uff1f"}, "1": 2, "ad": "ertwer", "non_ascii": "\u9752\u56e2 \u300b \u718a\u732b \uff1f"}
>>> 
>>> print(json.dumps(a, ensure_ascii=False, indent=4))  # 四空格缩进,中文字符全部正常
{
    "2": [
        1,
        "a"
    ],
    "02": "oierte",
    "ss": {
        "ad": "ertwer",
        "2": [
            1,
            "a"
        ],
        "02": "oierte",
        "1": 2,
        "non_ascii": "青团 》 熊猫 ?"
    },
    "1": 2,
    "ad": "ertwer",
    "non_ascii": "青团 》 熊猫 ?"
}
>>>


参考资料:http://www.cnblogs.com/harelion/p/5245762.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android知识整理包括但不限于以下内容: 1. Android基础知识: - Android系统架构和组件:包括应用层、应用框架层、系统运行库层和Linux内核层。 - Android应用的生命周期:包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)的生命周期。 - Android应用的资源管理:包括布局文件、字符串资源、图像资源等的使用和管理。 - Android应用的权限管理:包括权限的声明和请求。 2. Android界面开发: - 布局管理器:包括线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)等。 - 视图控件:包括文本视图(TextView)、按钮(Button)、图像视图(ImageView)等。 - 用户交互:包括点击事件、手势识别、触摸事件等的处理。 3. Android数据存储: - Shared Preferences:用于存储少量的键值对数据。 - SQLite数据库:用于存储结构化数据。 - 文件存储:包括内部存储和外部存储的文件存储方式。 4. Android网络编程: - 网络请求:使用HttpURLConnection或HttpClient进行网络请求。 - JSON解析:使用JSONObject或GSON库解析JSON数据。 - 图片加载:使用Picasso或Glide库加载网络图片。 5. Android多媒体开发: - 音频播放:使用MediaPlayer进行音频播放。 - 视频播放:使用VideoView或ExoPlayer进行视频播放。 - 相机和相册:使用Camera或Camera2 API进行拍照和录制视频。 6. Android传感器: - 加速度传感器、光传感器、陀螺仪等的使用。 7. Android地图和定位: - 使用Google Maps API进行地图显示和定位功能的开发。 以上仅为Android知识点的概要,实际开发中还涉及更多的内容。希望以上信息对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值