python - 在Python中解码JSON

标签 python json encoding

我遇到了一个问题,我似乎无法找到解决方案。我有一个通过 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/

相关文章:

android - UTF-8不在webview android中编码html

R如何将<U+9600><U+524D>之类的UTF-8代码转换回汉字

python - 使用 numpy 在 Python 中处理 TIFF(导入、导出)

python - 模拟在 Python 单元测试中没有被击中

jquery - MongoDB:如何从 json 数据中找到一个值?

iphone - 在 Objective C 中创建 JSON 格式

java - 如何在restful中将map转换为json

ios - 类型 'Model' 不符合协议(protocol) 'Decodable'/Encodable

python - 如何使用 Django-filer( Assets 文件管理器)?

python - 如果 numpy 数组索引不存在则设置 none