gpt4 book ai didi

python - 在Python中解码JSON

转载 作者:行者123 更新时间:2023-12-01 04:21:17 25 4
gpt4 key购买 nike

我遇到了一个问题,我似乎无法找到解决方案。我有一个通过 JSON 与 Java 应用程序通信的应用程序。非常简单,但我在使用嵌套对象解码 JSON 时遇到问题。例如我有:

class obj1(object):
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2

def __eq__(self, other):
return (isinstance(other, obj1) and
self.var1 == obj1.var1 and
self.var2 == obj2.var2)

class obj2(object):
def __init__(self, v1, v2, obj1):
self.v1 = v1
self.v2 = v2
self.obj1 = obj1

我想序列化和反序列化“obj2”类,我可以很容易地创建它:

myObj1 = obj1(1,2)
myObj2 = obj2(3.14, 10.05, myObj1)

当我想发送 Json 时,这显然非常简单:

import json

def obj_to_dict(obj):
return obj.__dict__

my_json = json.dumps(myObj2, default=obj_to_dict)

这将创建我所期望的完美 JSON:

{"obj1": {"var1": 1, "var2": 2}, "v1": 3.14, "v2": 10.05}

我遇到的问题是将这个字符串编码回两个对象。我无法添加任何额外的类型信息,因为发送回此架构的应用程序正是以这种方式将其发送回。所以当我尝试从字典中重建它时:

obj_dict = json.loads(my_json)
myNewObj = obj2(**obj_dict)

不太好用

print myNewObj.obj1 == obj1  #returns False.

是否有更好的方法从 JSON -> 自定义对象获取? (实际上,我有大约 20 个自定义对象嵌套在另一个对象中。对象 -> JSON 工作完美,它只是走向另一个方向。有什么想法吗?

最佳答案

您需要“链接”对象创建。


类 obj2(对象):
def __init__(自身, v1, v2, obj1):
自身.v1 = v1
自身.v2 = v2
如果 type(obj1) 是字典:
self.obj1 = obj1(**obj1)
别的:
自身.obj1 = obj1

关于python - 在Python中解码JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33656112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com