[英]JSONEncoder double jsonify objects extending from a class in python
I want to get a dictionary out of a Python class object.我想从 Python class object 中取出字典。 I'm using JSONEncoder to covert the same.
我正在使用 JSONEncoder 来隐藏相同的内容。 However, what I am getting in return is double jsonified object.
但是,我得到的回报是双重 jsonified object。 All i want is a dictionary.
我想要的只是一本字典。
class DocumentOverlay:
page: int
top: None
left: None
width: None
height: None
def __init__(self, page: int, top: None, left: None, width: None, height: None) -> None:
self.page = page
self.top = top
self.left = left
self.width = width
self.height = height
class DSAElement:
primaryDocument: str
matchesWithDocument: str
primaryDocumentOverlay: DocumentOverlay
matchesWithDocumentOverlay: DocumentOverlay
similarityIndex: float
isSimilar: bool
def __init__(self, primaryDocument: str, matchesWithDocument: str, primaryDocumentOverlay: DocumentOverlay, matchesWithDocumentOverlay: DocumentOverlay, similarityIndex: float, isSimilar: bool) -> None:
self.primaryDocument = primaryDocument
self.matchesWithDocument = matchesWithDocument
self.primaryDocumentOverlay = primaryDocumentOverlay
self.matchesWithDocumentOverlay = matchesWithDocumentOverlay
self.similarityIndex = similarityIndex
self.isSimilar = isSimilar
class dsaEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
output=[]
for term, tdoc in zip(thumbnail, tdocs):
sim = doc.similarity(tdoc)
if sim>0.99:
primary_overlay=DocumentOverlay(term['page'], None, None, None, None)
secondary_overlay=DocumentOverlay(i+1, None, None, None, None)
dsa_overlay=DSAElement(term['fileName'], item['fileName'], primary_overlay, secondary_overlay, sim, True)
output.append(dsaEncoder().encode(dsa_overlay))
What i get in return is:我得到的回报是:
['{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 1, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 1, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9993153342654213, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 2, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 2, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9983211993255433, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 21, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 2, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.997596096801685, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 3, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 3, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9988208175324497, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 4, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 4, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9960270471399298, "isSimilar": true}']
Any help would be highly appreciated on how to get the return dict like this:关于如何获得这样的返回字典的任何帮助将不胜感激:
[{"primaryDocument": "test.pdf", "matchesWithDocument": "test2.pdf", "primaryDocumentOverlay": {"page": 1, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 2, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.92, "isSimilar": true},....]
Use json.loads
使用
json.loads
a = ['{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 1, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 1, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9993153342654213, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 2, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 2, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9983211993255433, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 21, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 2, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.997596096801685, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 3, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 3, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9988208175324497, "isSimilar": true}', '{"primaryDocument": "Aurum1.pdf", "matchesWithDocument": "Aurum2.pdf", "primaryDocumentOverlay": {"page": 4, "top": null, "left": null, "width": null, "height": null}, "matchesWithDocumentOverlay": {"page": 4, "top": null, "left": null, "width": null, "height": null}, "similarityIndex": 0.9960270471399298, "isSimilar": true}']
output = [json.loads(i) for i in a]
output output
[{'primaryDocument': 'Aurum1.pdf',
'matchesWithDocument': 'Aurum2.pdf',
'primaryDocumentOverlay': {'page': 1,
'top': None,
'left': None,
'width': None,
'height': None},
'matchesWithDocumentOverlay': {'page': 1,
'top': None,
'left': None,
'width': None,
'height': None},
'similarityIndex': 0.9993153342654213,
'isSimilar': True},
{'primaryDocument': 'Aurum1.pdf',
'matchesWithDocument': 'Aurum2.pdf',
'primaryDocumentOverlay': {'page': 2,
'top': None,
'left': None,
'width': None,
'height': None},
'matchesWithDocumentOverlay': {'page': 2,
'top': None,
'left': None,
'width': None,
'height': None},
'similarityIndex': 0.9983211993255433,
'isSimilar': True},
{'primaryDocument': 'Aurum1.pdf',
'matchesWithDocument': 'Aurum2.pdf',
'primaryDocumentOverlay': {'page': 21,
'top': None,
'left': None,
'width': None,
'height': None},
'matchesWithDocumentOverlay': {'page': 2,
'top': None,
'left': None,
'width': None,
'height': None},
'similarityIndex': 0.997596096801685,
'isSimilar': True},
{'primaryDocument': 'Aurum1.pdf',
'matchesWithDocument': 'Aurum2.pdf',
'primaryDocumentOverlay': {'page': 3,
'top': None,
'left': None,
'width': None,
'height': None},
'matchesWithDocumentOverlay': {'page': 3,
'top': None,
'left': None,
'width': None,
'height': None},
'similarityIndex': 0.9988208175324497,
'isSimilar': True},
{'primaryDocument': 'Aurum1.pdf',
'matchesWithDocument': 'Aurum2.pdf',
'primaryDocumentOverlay': {'page': 4,
'top': None,
'left': None,
'width': None,
'height': None},
'matchesWithDocumentOverlay': {'page': 4,
'top': None,
'left': None,
'width': None,
'height': None},
'similarityIndex': 0.9960270471399298,
'isSimilar': True}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.