复杂的Python对象到JSON转换
问题描述:
我需要将一个复杂的python对象转换为JSON,复杂的我的意思是一个对象包含int变量,字符串变量和2个自定义对象列表。复杂的Python对象到JSON转换
我的Python对象的构造是:
def __init__(self, skills="",vid=""):
self.Skills = list([])
for skillID in skills.split("-"):
if not skillID == "":
tmpSkill = Skill()
tmpSkillObj = DBCommands.getSkill(skillID)
tmpSkill.ID = tmpSkillObj[0][0] #tmpSkillObj[0][0]
tmpSkill.Name = tmpSkillObj[0][1]
tmpSkill.isMain = True
tmpSkill.CurrentlyTesting = False
tmpSkill.isSub = False
tmpSkill.Level = 0
tmpSkill.Tested = False
tmpSkill.Score = 0
tmpSkill.Confidence = 0
tmpSkill.BestScore = 0
tmpSkill.ParentID = 0
self.Skills.append(tmpSkill)
self.AskedQuestions.append(tmpSkill)
self.Skills = list(self.Skills)
if not skills == "":
self.Skills[0].CurrentlyTesting = True #Start testing the first skill
if not vid == "":
self.VacancyID = int(vid)
self.PlayerID = 0
self.Score = float(0)
self.AskedQuestions = list([])
self.MaxLevel = 0
self.AssessmentIsFinished = False
我需要一个机制来编码对象,并对其进行解码。
答
编码:
import base64
import pickle
token = base64.b64encode(pickle.dumps(token,-1))
解码:
import pickle
import base64
Obj = pickle.loads(base64.b64decode(token))
是否必须是JSON?为什么不[pickle](https://docs.python.org/2/library/pickle.html)呢? –
该场景为: 服务器应将对象转换为字符串(JSON),然后加密该字符串并将其作为令牌发送。 当服务器收到令牌时,它应该能够做相反的工作,解密令牌,将字符串(JSON)解析为新的对象。 – Deve
这应该用'pickle.dumps()'工作得很好。你的对象将被序列化并返回一个字符串,你可以使用任何你喜欢的方式进行加密和传输。 – Aaron