TypeError:<jira status:=“”name =“Open”,=“”id =“1”>不是JSON可序列化的

时间:2015-12-18 19:28:41

标签: json typeerror

我正在为Jira和其他服务器之间的通信编写API。我想从Jira服务器获取某些数据,并使用它来填充其他软件工具中的某些字段。

当我这样做时,效果很好:

resp = s.get(url)
rec_data = resp.json()
data = json.dumps({"recordRevisionNumber": rev_id, "ELM_CSTM_TEXT1": "Open", "ELM_CSTM_TEXT2": "ARA-222"})
resp = s.put(url, data=data)

但是我用变量“jira_id和”jira_status改变了硬编码的“Open”和“ARA-222”“我收到了错误。

data = json.dumps({"recordRevisionNumber": rev_id, "ELM_CSTM_TEXT1": jira_id, "ELM_CSTM_TEXT2": jira_status})
resp = s.put(url, data=data)

这是错误:

Traceback (most recent call last):
File "C:/Users/byun/Desktop/Workspace/TopTeam_API.py", line 37, in <module>
data = json.dumps({"recordRevisionNumber": rev_id, "ELM_CSTM_TEXT1":     jira_id, "ELM_CSTM_TEXT2": jira_status})
File "C:\Program Files (x86)\Python 3.5\lib\json\__init__.py", line 230, in dumps
return _default_encoder.encode(obj)
File "C:\Program Files (x86)\Python 3.5\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Program Files (x86)\Python 3.5\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Program Files (x86)\Python 3.5\lib\json\encoder.py", line 180, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <JIRA Status: name='Open', id='1'> is not JSON serializable

变量很好,它们打印出来像这样:

108 ARA-129开放

108 ARA-128开放

108 ARA-127开放

108 ARA-126开放

108 ARA-125开放

请帮助。

1 个答案:

答案 0 :(得分:0)

我明白了。 jira_id工作正常。 jira_status在我把它变成字符串之后工作了。

status = str(jira_status)
data = json.dumps({"recordRevisionNumber": rev_id, "ELM_CSTM_TEXT1": jira_id, "ELM_CSTM_TEXT2": status})