• Register

Kako odpraviti error - Object of type <class 'set'> not serializable

+1 vote
38 views

Živijo,

pri pošiljanju domače naloge mi je do zadnjega primera vse delalo v redu. Pri zadnjem primeru pa mi je ob zagonu celice z ukazom - poslji(odgovor21, id=6677516464841, st=21) vrnilo spodnji error. 

V kolikor zna kdo pomagati bi vam bil hvaležen.

Hvala in Lp

Dušan

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-4b4c6868454e> in <module>()
----> 1 poslji(odgovor21, id=6677516464841, st=21)

~\Desktop\Alles\Fakulteta\2. Letnik\Numerične metode\Domača naloga 2\775164648\Gregorič_Dušan_UVP_Tue_06_10_20_22-55-33\mojladisksi.py in poslji(odgovor, id, st)
    124        }
    125 
--> 126     json_data = json.dumps(data, default=data_to_json)
    127 
    128     r = requests.post(url + 'StudentData',

~\Anaconda3\lib\json\__init__.py in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
    236         check_circular=check_circular, allow_nan=allow_nan, indent=indent,
    237         separators=separators, default=default, sort_keys=sort_keys,
--> 238         **kw).encode(obj)
    239 
    240 

~\Anaconda3\lib\json\encoder.py in encode(self, o)
    197         # exceptions aren't as detailed.  The list call should be roughly
    198         # equivalent to the PySequence_Fast that ''.join() would do.
--> 199         chunks = self.iterencode(o, _one_shot=True)
    200         if not isinstance(chunks, (list, tuple)):
    201             chunks = list(chunks)

~\Anaconda3\lib\json\encoder.py in iterencode(self, o, _one_shot)
    255                 self.key_separator, self.item_separator, self.sort_keys,
    256                 self.skipkeys, _one_shot)
--> 257         return _iterencode(o, 0)
    258 
    259 def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,

~\Desktop\Alles\Fakulteta\2. Letnik\Numerične metode\Domača naloga 2\775164648\Gregorič_Dušan_UVP_Tue_06_10_20_22-55-33\mojladisksi.py in data_to_json(object)
    102         return float(object)
    103 
--> 104     raise TypeError(f'Object of type {type(object)} not serializable')
    105 
    106 

TypeError: Object of type <class 'set'> not serializable

 

asked Oct 8 by dusan_gregoric (140 points)

1 Answer

+1 vote

Kot pavi sporočilo napake (TypeError: Object of type <class 'set'> not serializable), gre za težavo pri posredovanju objektov tipa set (množic) na strežnik.

Pri domačih nalogah vas bomo vedno spraševali po osnovnih tipih podatkov (skaarnih vrednostih, nizih, seznamih, terkah, slovarjih, kasneje numeričnih poljih...). Množice niso podprte, saj jih ni mogoče enostavno pretvoriti v standardno obliko za spletno pošiljanje.

Če bi vaš odgovor21 sam po sebi bil množica (če `type(odgovor21) == set`), bi vas program sicer drugače obvestil o neustreznem tipu podatka. Ker vas ni, je tip samega vašega odgovora verjetno podprt (na primer seznam), a verjetno vsebuje objekte neustreznega tipa (na primer, če ste poskušali poslati seznam množic).

Preverite torej, ali vaš poslan odgovor21 vsebuje množice. Najlažje ijh prepoznate po tipu oklepajev. V pomoč vam je lahko tale legenda:

(element1, element2)     ...     terka
[element1, element2]     ...     seznam
{element1, element2}    ...     množica
{ključ1:e1, ključ2:e2}   ...     slovar

Vedno pa lahko tip podatka preverite s funkcijo type().

answered Oct 9 by dgorjup (66,450 points)
...