1 Востаннє редагувалося frz (30.08.2021 16:11:28)

Тема: конвертування стрічки в dictionary

Так працює ок:

var1 = {"a":"1","2":{"1","2","3","4","5","6","7","8"}}
print(var1)

а так повертає помилку:

import json

var1 = '{"a":"1","2":{"1","2","3","4","5","6","7","8"}}'
querystring = json.loads(var1)
print(querystring)

---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
<ipython-input-18-9b701aff7ad9> in <module>
      2
      3 var1 = '{"a":"1","2":{"1","2","3","4","5","6","7","8"}}'
----> 4 querystring = json.loads(var1)
      5 print(querystring)

~/anaconda3/lib/python3.8/json/__init__.py in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    355             parse_int is None and parse_float is None and
    356             parse_constant is None and object_pairs_hook is None and not kw):
--> 357         return _default_decoder.decode(s)
    358     if cls is None:
    359         cls = JSONDecoder

~/anaconda3/lib/python3.8/json/decoder.py in decode(self, s, _w)
    335
    336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338         end = _w(s, end).end()
    339         if end != len(s):

~/anaconda3/lib/python3.8/json/decoder.py in raw_decode(self, s, idx)
    351         """
    352         try:
--> 353             obj, end = self.scan_once(s, idx)
    354         except StopIteration as err:
    355             raise JSONDecodeError("Expecting value", s, err.value) from None

JSONDecodeError: Expecting ':' delimiter: line 1 column 18 (char 17)

Підкажіть як виправити...

2 Востаннє редагувалося tchort (30.08.2021 16:35:27)

Re: конвертування стрічки в dictionary

>>> var1 = '{"a":"1","2":["1","2","3","4","5","6","7","8"]}'
>>> querystring = json.loads(var1)
>>> querystring['2']
['1', '2', '3', '4', '5', '6', '7', '8']

Не працював з json (дякувати Одіну і Крону) але погортав документацію, - так не підійде вам?...незнаю що ви там хочете що правда.

edit.
I'm using duckduckgo faster. Ha-ha.

3

Re: конвертування стрічки в dictionary

frz написав:

Так працює ок:

Бо це в іншому напрямку, з dict в str

frz написав:

а так повертає помилку:

Бо це не json, от і все. В json було б, наприклад, '{"a":"1","2":["1","2","3","4","5","6","7","8"]}'.

Подякували: leofun011

4 Востаннє редагувалося frz (30.08.2021 19:32:19)

Re: конвертування стрічки в dictionary

tchort koala
Дякую. Це для стороннього API, тому мучився щоб надіслати туди саме так як в мене в найпершому варіанті. Але, на диво, для апі підійшло із квадратними дужками теж.

5 Востаннє редагувалося P.Y. (31.08.2021 14:23:51)

Re: конвертування стрічки в dictionary

Python має спеціальний синтаксис для таких агрегатних типів:
{a:b, c:d} — словник (dict)
[a, b, c, d] — список (list)
     Еквіваленти їх є в JSON, тому з ними все гаразд.
{a, b, c, d} — множина (set)
(a, b, c, d) — кортеж (tuple)
     Ці типи не мають еквівалентних їм форм у JSON.
Відповідно, проблема не в рядку і не в словнику, а в спробі використати синтаксис для множин у контексті, де їх використання не передбачено.

Подякували: tchort, koala, leofun013