Я новичок в Python, и я пытаюсь с этого утра преобразовать объект (который, я считаю, это массив точек) в JSON.Python: массив точек для JSON
print "myobject type is: %s" % type(myobject)
print "myobject[0] is %s" % myobject[0]
myobjectJson = json.dumps(myobject)
результат
myobject type is: class 'dlib.dlib.points'
myobject[0] is (190, 254)
Traceback (most recent call last):
File "./face_landmark_detection.py", line 103, in <module>
myobjectJson = json.dumps(myobject)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps
return _default_encoder.encode(obj)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <dlib.dlib.points object at 0x1086db650> is not JSON serializable
так, насколько я могу видеть, этот объект не JSON сериализации.
Я пытался использовать:
myobjectJson = json.dumps(myobject, default=list)
myobjectJson = json.dumps(myobject, default=tuple)
myobjectJson = json.dumps(myobject, default=dict)
myobjectJson = json.dumps(myobject, default=__dict__)
myobjectJson = json.dumps(myobject, default=lambda o: o.__dict__)
Но я получаю ту же ошибку ... что я могу сделать?
Спасибо
обновление
dir myobject is: ['__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__getstate__', '__hash__', '__init__', '__instance_size__', '__iter__', '__len__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__safe_for_unpickling__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'append', 'clear', 'extend', 'resize']
dir myobject[0] is: ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getstate__', '__hash__', '__init__', '__instance_size__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__safe_for_unpickling__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'x', 'y']
Какую структуру вы надеялись закончить? На данный момент у вас есть что-то похожее на список кортежей; у него нет ключей. – jDo
Благодарим вас за ответ. Я хотел бы напечатать этот список кортежей, как есть, для строки JSON. или, возможно, к другому массиву, который я могу преобразовать в JSON. Все в порядке. Мне просто нужно распечатать этот вывод в правильном формате JSON. – MeV
JSON поддерживает списки списков (или массивы массивов могут быть правильным термином). Наверное, это самое близкое к тому, что у вас есть сейчас. – jDo