Pythonjson坑(持续更新)

Posted littlemichelle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pythonjson坑(持续更新)相关的知识,希望对你有一定的参考价值。

python内置的json

json.dumps()         #将Python中的对象转换为JSON中的字符串对象
json.loads()         #将JSON中的字符串对象转换为Python中的对象

这个问题是由于json.dumps()函数引起的。dumps是将dict数据转化为str数据,但是dict数据中包含byte、int、float、datetime等等的时候,数据所以会报错。

可能会遇到TypeError: Object of type xxx is not JSON serializable错误,也就是无法序列化某些对象格式。

注意:json默认支持的类型只有下面几种,其他的类型,比如自定义的类或者date类型,都需要自定义jsonEncoder。

    Supports the following objects and types by default:

    +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+

TypeError: Object of type ValueError is not JSON serializable

json.dumps()

numpy array 不能用json包起来当做出参。

numpy array 不能用json包起来。
TypeError: Object of type 'ndarray' is not JSON serializable

图片img(RGB)也不能用json包起来

from PIL import Image
图片img(RGB)也不能用json包起来。
TypeError: Object of type 'Image' is not JSON serializable

python使用raise ValueError('修改信息失败')抛出异常,使用如下捕获异常:

except ValueError as e:
    traceback.print_exc()
    return 
        'msg': e,                #错误写法
        'code': 400,
    
except ValueError as e:
    traceback.print_exc()
    return 
        'msg': str(e),          #正确写法
        'code': 400,
    

Xamarin.Forms踩坑集锦(持续更新)

1、ImageButton控件

问题:ImageButton在切换图片的时候,图片大小会改变。

Github Issue:ImageButton changes image size · Issue #4510 · xamarin/Xamarin.Forms

解决:使用Image控件,将Image.GestureRecognizers设置为TapGestureRecognizer,支持Event和Command。

<Image.GestureRecognizers>
  <TapGestureRecognizer NumberOfTapsRequired="1"
                Command="{Binding SwitchPlayPauseCommand}"
               CommandParameter="{Binding IsPlaying}"/>   </Image.GestureRecognizers>

 

2、DelegateCommand类

问题:Prism框架,DelegateCommand<T>,T为值类型时出错。

解决:参数类型T无法使用值类型,可以使用值类型的可空类型如int?。

 

3、mipmap文件夹

问题:新建项目使用Prism模板,在Android项目中的mipmap文件夹内的图片,Forms项目无法使用。

解决:手动建立drawable文件夹(不支持层级子文件夹),存放Forms使用的图片。

mipmap文件夹中的图片,可以在Android项目中使用。

 

4、SimpleAudioPlayer

问题:使用ISimpleAudioPlayer.Load(string fileName)加载音频文件后,获取到的ISimpleAudioPlayer.Duration不正确。

解决:使用ISimpleAudioPlayer.Load(Stream audioStream)。

 

5、MasterDetailPage

问题:MasterDetailPage.Master设置为ContentPage,设置ContentPage.BackgroundImage无效。

解决:ContentPage.BackgroundColor="Transparent"。

 

6、ListView

问题:ListView的行高度,不随ViewCell的高度而改变。

解决:ListView.HasUnevenRows="True"。


以上是关于Pythonjson坑(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

[pytorch][持续更新]pytorch踩坑汇总

pythonjson中字典key不可为数值型

学习自动化接口测试遇到的坑以及解决方法(持续更新中)

python网络编程的坑(持续更新)

python2.7源码中埋藏的坑(持续更新)

Fabric.js 避坑指南(持续更新中)