相关疑难解决方法(0)

如何使类JSON可序列化

如何使Python类可序列化?

一个简单的课程:

class FileItem:
    def __init__(self, fname):
        self.fname = fname
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能得到输出:

>>> import json

>>> my_file = FileItem('/foo/bar')
>>> json.dumps(my_file)
TypeError: Object of type 'FileItem' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

没有错误(__CODE__)

python serialization json

730
推荐指数
19
解决办法
61万
查看次数

将类实例序列化为JSON

我正在尝试创建类实例的JSON字符串表示并且有困难.假设这个类是这样构建的:

class testclass:
    value1 = "a"
    value2 = "b"
Run Code Online (Sandbox Code Playgroud)

对json.dumps的调用是这样的:

t = testclass()
json.dumps(t)
Run Code Online (Sandbox Code Playgroud)

它失败并且告诉我测试类不是JSON可序列化的.

TypeError: <__main__.testclass object at 0x000000000227A400> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用pickle模块:

t = testclass()
print(pickle.dumps(t, pickle.HIGHEST_PROTOCOL))
Run Code Online (Sandbox Code Playgroud)

它提供类实例信息,但不提供类实例的序列化内容.

b'\x80\x03c__main__\ntestclass\nq\x00)\x81q\x01}q\x02b.'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python serialization json pickle

160
推荐指数
10
解决办法
25万
查看次数

JSON使用simplejson序列化Django模型

我想使用simplejson来序列化Django模型.Django的序列化程序不支持字典...而simplejson不支持Django Querysets.这是一个相当难的问题.

在该模型中,赞助商拥有赞助级别的外键,我试图将所有属于某个赞助商级别的赞助商组合在一起.这是生成列表的代码:

from django.shortcuts import get_list_or_404
from special_event.models import Sponsor, SponsorLevel

sponsor_dict = {}

roadie_sponsors = get_list_or_404(Sponsor, level__category = SponsorLevel.ROADIE_CHOICE)

for item in roadie_sponsors:
    try:
        sponsor_dict[item.level.name].append(item)
    except KeyError:
        sponsor_dict[item.level.name] = [item]
Run Code Online (Sandbox Code Playgroud)

sponsor_dict一旦它"制造",这就是它的样子

{
    'Fan': [<Sponsor: Fan Sponsor>], 
    'VIP': [<Sponsor: VIP Sponsor>],
    'Groupie': [<Sponsor: Groupie Sponsor>],
    'Silver': [<Sponsor: Silver Sponsor>],
    'Bronze': [<Sponsor: Another Bronze Sponsor>, <Sponsor: Bronze Sponsor>]
}
Run Code Online (Sandbox Code Playgroud)

我只在每个级别添加了一个赞助商,除了青铜器,只是为了展示它是如何工作的.我想做的就是将它"全部"转换为JSON,以便jQuery可以轻松地解释它.Django的其他序列化程序(如XML或YAML)可以实现这一目标吗?我可以"扩展"Django JSON Serializer来处理字典或"扩展"simplejson来处理Django QuerySet对象吗?

django serialization json django-queryset

33
推荐指数
3
解决办法
4万
查看次数

标签 统计

json ×3

serialization ×3

python ×2

django ×1

django-queryset ×1

pickle ×1