当前位置: 首页 > 面试题库 >

使用Python轻松进行JSON编码

邵阳辉
2023-03-14
问题内容

我是python的新手(我使用python
3),并且我尝试使用JSon中的一个字符串和两个列表作为成员序列化一个类。我发现python标准中有一个json库,但似乎我需要手动实现序列化方法。是否有一个JSon编码器,我可以在其中简单地传递一个对象,并以字符串形式接收序列化的对象,而无需实现序列化方法。例:

class MyClass:
    pass

if __name__ == '__main__':
    my_name = "me"
    my_list = {"one","two"}
    my_obj = MyClass()
    my_obj.name = my_name;
    my_obj.my_list = my_list


    serialized_object = JSONserializer.serialize(my_obj).

谢谢。


问题答案:

不了解任何预构建的内容,但是如果您的对象足够简单,则可以编写一个。覆盖JSONEncoder中的默认方法以查看inspect.getmembers(obj)(inspect是获取中的属性集的更易读的方法__dict__)。

#!/usr/bin/env python3

import inspect
from json import JSONEncoder


class TreeNode:

    def __init__(self, value, left=None, right=None):
        self.value = value
        self.left = left
        self.right = right


class ObjectJSONEncoder(JSONEncoder):

    def default(self, reject):
        is_not_method = lambda o: not inspect.isroutine(o)
        non_methods = inspect.getmembers(reject, is_not_method)
        return {attr: value for attr, value in non_methods
                if not attr.startswith('__')}


if __name__ == '__main__':
    tree = TreeNode(42,
        TreeNode(24),
        TreeNode(242),
    )
    print(ObjectJSONEncoder().encode(tree))

更新: @Alexandre Deschamps说,对于某些输入而言,isroutine比方法更有效。



 类似资料:
  • 问题内容: 我创建了两个视图控制器。我从第一个到第二个创建了一个序列,以传递数据。现在,我想将数据从第二个视图控制器传递给第一个。我经历了许多类似的问题,但由于我缺乏关于放松工作原理的知识,因此无法实现这些问题。 ViewController.swift 这会将数据传递给视图控制器“ viewControllerB”中的dataPassed。 说,现在我想将一些数据从viewControllerB

  • 问题内容: 我已经尝试了所有可以使用的示例,但不能简单地将JSON数据保存到主机上的JSON文件中。我想从一个尽可能简单的保存方法开始,所以我有一个起点。 这就是我得到的: 基本上,我的 index.html中 有一个按钮,单击后应将数据保存到我的general.json文件中(与index.html相同的位置)。 使用 myscript.js中的 id选择器,我可以这样做: 如您所见,我想存储f

  • 问题内容: 我有一个可以正常工作的Rest Web服务,它使用JBoss Resteasy,但是当我尝试移植它以使用GAE时,执行时出现此错误: 问题答案: 我在GAE上成功使用resteasy。正如csturtz所述,请确保您的项目具有resteasy依赖性。 如果您使用Maven,应该是这样的: 并且您还可以选择使用:

  • 本文向大家介绍python轻松实现代码编码格式转换,包括了python轻松实现代码编码格式转换的使用技巧和注意事项,需要的朋友参考一下   最近刚换工作不久,没太多的时间去整理工作中的东西,大部分时间都在用来熟悉新公司的业务,熟悉他们的代码框架了,最主要的是还有很多新东西要学,我之前主要是做php后台开发的,来这边之后还要把我半路出家的前端学好、还要学习C++,哈哈,总之很充实了,每天下班回家都可

  • 问题内容: 在过去的两年中,我一直在编写Java,现在,我开始用python(另外)进行编写。 问题是,当我查看我的Python代码时,似乎有人试图将Java代码转换为python格式,但结果却很糟糕,因为- python不是Java。 关于如何摆脱“用Python编写Java”模式的任何技巧? 谢谢! 问题答案: 您可能会考虑将自己沉浸在Python范例中。最好的方法是首先了解他们的知识,然后通

  • 我在服务器端对JSON进行了编码(使用ESAPI编码器),然后客户机检索bean的字段并进行进一步的处理。 在服务器端 编码的JSON字符串 \x7b\x22name\x22\x3a\x22sameer\x22,\x22company\x22\x3a\x22company\x22,\x22designation\x22\x3a\x22developer\x22\x7d 在客户端