相关疑难解决方法(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序列化自定义非可序列化对象的常规方法是子类化json.JSONEncoder,然后将自定义编码器传递给转储.

它通常看起来像这样:

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, foo):
            return obj.to_json()

        return json.JSONEncoder.default(self, obj)

print json.dumps(obj, cls = CustomEncoder)
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的是使用默认编码器进行序列化.我环顾四周但找不到任何东西.我的想法是编码器会看到一些字段来确定json编码.类似的东西__str__.也许是一个__json__领域.在python中有这样的东西吗?

我想制作一个模块的类,我正在使用JSON序列化给使用该软件包的每个人,而不必担心实现他们自己的[普通]自定义编码器.

python serialization json monkeypatching

59
推荐指数
3
解决办法
6万
查看次数

SimpleJSON和NumPy数组

使用simplejson序列化numpy数组的最有效方法是什么?

python json numpy simplejson

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

在JSON中编码嵌套的python对象

我想用JSON编码对象.但是,我无法弄清楚如何在没有字符串转义的情况下进行输出.

import json

class Abc:
    def __init__(self):
        self.name="abc name"
    def toJSON(self):
        return json.dumps(self.__dict__, cls=ComplexEncoder)

class Doc:
    def __init__(self):
        self.abc=Abc()
    def toJSON(self):
        return json.dumps(self.__dict__, cls=ComplexEncoder)

class ComplexEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Abc) or isinstance(obj, Doc):
            return obj.toJSON()
        else:
            return json.JSONEncoder.default(self, obj)

doc=Doc()
print doc.toJSON()
Run Code Online (Sandbox Code Playgroud)

结果是(转储返回一个字符串表示,这就是"被转义"的原因)

{"abc": "{\"name\": \"abc name\"}"}
Run Code Online (Sandbox Code Playgroud)

我想要一些不同的东西.预期的结果是

{"abc": {"name": "abc name"}"}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何...任何提示?

提前致谢.

python json encode

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

为什么json.dumps(list(np.arange(5)))失败而json.dumps(np.arange(5).tolist())有效

当最近更新运行Ubuntu的计算机并且Python的默认版本更改为2.7时,我注意到了这个问题.

import json
import numpy as np

json.dumps(list(np.arange(5))) # Fails, throws a "TypeError: 0 is not JSON serializable"
json.dumps(np.arange(5).tolist()) # Works 
Run Code Online (Sandbox Code Playgroud)

list()和numpy数组的tolist()方法有区别吗?

python numpy python-2.7

26
推荐指数
2
解决办法
1万
查看次数

set对象不是JSON可序列化的

当我尝试运行以下代码时:

import json

d = {'testing': {1, 2, 3}}
json_string = json.dumps(d)
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

Traceback (most recent call last):
  File "json_test.py", line 4, in <module>
    json_string = json.dumps(d)
  File "/usr/lib/python2.7/json/__init__.py", line 243, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python2.7/json/encoder.py", line 184, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: set([1, 2, 3]) is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

如何成功使用json.dumps包含set …

python json set

20
推荐指数
1
解决办法
5万
查看次数

TypeError:'bytes'类型的对象不是JSON可序列化的

我刚开始编程Python.我想使用scrapy来创建一个bot,它显示了TypeError:当我运行项目时,'bytes'类型的对象不是JSON可序列化的.

import json
import codecs

class W3SchoolPipeline(object):

  def __init__(self):
      self.file = codecs.open('w3school_data_utf8.json', 'wb', encoding='utf-8')

  def process_item(self, item, spider):
      line = json.dumps(dict(item)) + '\n'
      # print line

      self.file.write(line.decode("unicode_escape"))
      return item
Run Code Online (Sandbox Code Playgroud)
from scrapy.spiders import Spider
from scrapy.selector import Selector
from w3school.items import W3schoolItem

class W3schoolSpider(Spider):

    name = "w3school"
    allowed_domains = ["w3school.com.cn"]

    start_urls = [
        "http://www.w3school.com.cn/xml/xml_syntax.asp"
    ]

    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//div[@id="navsecond"]/div[@id="course"]/ul[1]/li')

    items = []
    for site in sites:
        item = W3schoolItem()
        title = site.xpath('a/text()').extract()
        link = site.xpath('a/@href').extract()
        desc …
Run Code Online (Sandbox Code Playgroud)

python serialization json scrapy

15
推荐指数
3
解决办法
7万
查看次数

Python request.post 不接受字典

这是我要发布的数据,

这是字典答案的印刷版:

{'Emails': set([u'vernon.fadel@denesik.com', u'helyn67@cruickshankmckenzie.com', u'tryan@fishercremin.com', u'cecilia.kerluke@gmail.com', u'sonia.ruecker@schmidt.info', u'reichel.tamatha@gmail.com', u'johntyree69@greendale.edu', u'gail34@reichel.com', u'birdman@quitzon.net ', u'onolan@gmail.com', u'lindgren.merry@howe.com', u'wilderman.nyree@heidenreich.com', u'yschneider@jacobson.biz', u'nakia.larkin@gmail.com', u'vblanda@gmail.com', u'pkoch@yahoo.com', u'ygoyette@yahoo.com', u'wiegand.lynnette@beer.com', u'ubradtke@hotmail.com', u'troy67@yahoo.com', u'eileen.gusikowski@oreilly.info', u'glubowitz@yahoo.com', u'inolan@hotmail.com', u'lfranecki@hotmail.com', u'miller.hana@gmail.com', u'morissette.lalla@kuhicmuller.com', u'harber.gisele@gmail.com', u'odalys.dubuque@ebertrunte.net', u'jones.kyree@auer.net', u'adams77@yahoo.com', u'parisian.linda@hotmail.com', u'channing.cremin@toy.org', u'chad.armstrong@yahoo.com', u'isaac.nolan@hotmail.com', u'kozey.luciana@collins.biz', u'cstehr@keebler.com', u'jquitzon@gmail.com', u'hhirthe@yahoo.com', u'emilia16@block.com', u'arice@greenholtconsidine.com', u'tobin.schuppe@gmail.com', u'wyman.junious@gmail.com', u'mrath@ruecker.com ', u' johns.sonji@lakinwalker.info', u'thiel.cassie@hodkiewicz.info', u'fjaskolski@hotmail.com', u'mosciski.destany@hotmail.com', u'vrippin@gmail.com', u'zschuppe@hotmail.com', u'clotilda26@goodwinlind.info', u'lizette.walker@stanton.com', u'hettinger.kamari@hotmail.com', u'emelia54@yahoo.com', u'terry.ezekiel@hotmail.com', u'douglyass.dickinson@hotmail.com', u'zulauf.olympia@gmail.com', u'maxxx.waters@sauer.biz', u'abshire.charmaine@schusterlabadie.com', u'kuvalis.dewitt@wolfschaefer.com', u"elberta.o'connell@yahoo.com", u'henery76@yahoo.com', u'britny60@gmail.com', u'ed.hilpert@hansen.com', u'burnice.feest@yahoo.com', u' ybartoletti@littel.biz', u'sharde.murazik@hotmail.com', u'angelica.klocko@ankunding', u'brandi.klein@hotmail.com', u'dollie49@hotmail.com', u'mrath@ruecker.com', u'hayley27@koelpin.com', u'georgiann.mertz@moen.net', u'floretta39@volkmanrosenbaum.net', …
Run Code Online (Sandbox Code Playgroud)

python api request

6
推荐指数
2
解决办法
2万
查看次数

在python中将集合写入输出文件

我通常将 json 用于列表,但它不适用于集合。是否有类似的函数将集合写入输出文件 f?像这样的东西,但对于集合:

f=open('kos.txt','w')
json.dump(list, f)
f.close()
Run Code Online (Sandbox Code Playgroud)

python file set output

5
推荐指数
2
解决办法
1万
查看次数

Solidity TypeError:类型集的对象不可 JSON 序列化

我在 VSCode 中运行代码并得到 TypeError: Object of type set is not JSON serializable。我刚开始学习编码,实在不懂,google了一下,也不知道JSON可序列化是什么意思。

from solcx import compile_standard
import json

# get the contract content
with open("./SimpleStorage.sol", "r") as file:
    simple_storage_file = file.read()

# compile the contract

compiled_sol = compile_standard(
    {
        "language": "Solidity",
        "sources": {"SimpleStorage.sol": {"content": simple_storage_file}},
        "settings": {
            "outputSelection": {
                "*": {
                    "*": {"abi", "metadata", "evm.bytecode", "evm.bytecode.sourceMap"}
                }
            }
        },
    },
    solc_version="0.6.0",
)

# creat json file dump the comiled code in it to make it more readable.
with open("compiled_code.json", …
Run Code Online (Sandbox Code Playgroud)

python nsjsonserialization solidity smartcontracts

4
推荐指数
1
解决办法
2520
查看次数