方便自己,记录下。
#/usr/bin/python
#coding:utf8
#主要查看学习些链接 link http://liuzhijun.iteye.com/blog/1859857
#simplejson 有助于数据交互
#脚本主要验证如果将自定义数据,让json encode字符串化
import simplejson,os
#创建对象,自定义数据,让json去处理,提高可控性
class MyObj:
def __init__(self, s):
self.s = s
def dicts(self):
print self.__dict__
def __repr__(self):
return '<MyObj(%s)>' % self.s
#这个方法其实就是将Myobj对象转换成dict类型的对象
def convert_to_builtin_type(obj):
print "#"*20,"检验数据"
print "当前对象内部的变量"
obj.dicts()
print "直接使用对象实例名,会默认调用__repr__私有方法. the result is <MyObj([{'helloword': 123}])>,不过我们可以在对象方法,定义东西------",obj
print "其实使用直接使用这个方法,也会得出同样的效果. the result is {'s': [{'helloword': 123}]}--------",repr(obj)
#输出结果和上面的obj一样,直接使用对象实例名,会默认调用__repr__私有方法
print "#"*20,"检验数据\n"
print 'default(', repr(obj), ')'
d = {'__class__':obj.__class__.__name__, '__module__':obj.__module__}
print "输出内容为{'__module__': '__main__', '__class__': 'MyObj'}\n通过调用对象参数,将其字典化-------",d
d.update(obj.__dict__)
return d
#这个str可以设置为字符串,也可以设置为字典,都是为了验证json只处理特定格式的数据,不会
#读取实例对象,那我们就得必须间接将对象数据字典化
str=[{"helloword":123}]
obj = MyObj(str)
#结果使用对象实例,并返回相应结果时,在下面的json数据封装出现问题
#the result is ERROR: <MyObj([{'helloword': 123}])> is not JSON serializable
#注意,这里提交的是对象实例,会报上面的错误,可是如果调用对象属性则可以成功输出obj.s
try:
print simplejson.dumps(obj)
except TypeError, err:
print 'ERROR:', err
print simplejson.dumps(obj, default=convert_to_builtin_type)
转载于:https://blog.51cto.com/teemomo/1368192
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109902.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...