Python2 JSON.load成Unicode的坑

我是接口调用方,今天在联调的时候,接口方的同窗问我传过来的json是神马玩意,怎么每一个item前还带个u的。
我看了一眼,我靠,还真是带个u的,本身调试的时候楞是没发现。也怪本身之前没怎么遇到过Python的编码坑,此次从新用起Python2来,一不当心就踩进坑了。
一通debug发现是Python自带的Json库会把json文件load成Unicode对象。若是想要变成str对象的话,就要本身去encode。
祭出so大法...#请叫我so搬运工json

def byteify(input):
    if isinstance(input, dict):
        return {byteify(key):byteify(value) for key,value in input.iteritems()}
    elif isinstance(input, list):
        return [byteify(element) for element in input]
    elif isinstance(input, unicode):
        return input.encode('utf-8')
    else:
        return input

这个函数递归的把list和dict里的Unicode对象encode成str。
固然,我不以为这是the right way。使用yaml里的json来代替官方自带的json可能更好。函数