Python不会在ConnectWise中修补json。

时间:2016-07-06 19:52:19

标签: python json python-requests

我有点困惑为什么以下不起作用。

我通过请求连接到ConnectWise API。我得到了回复,然后我解析了找到我要找的门票。然后我试图修补票证以更改某些信息。

通过API返回的示例json。

{
  "id": 12345,
  "summary": "[CompanyName][ComputerName] Disk Space Check - drive G:",
  "recordType": "ServiceTicket",
  "board": {
    "id": 1,
    "name": "Board1",
  },
  "status": {
    "id": 5,
    "name": "NewTicket",
  },  
  "owner": {
  "id": 1,
  "identifier": "",

一旦我确定了我需要使用的机票。我试着修补它。

def assign_ticket(self, ticket):

    add_resource = [
                   {'op': 'replace', 'path': '/board/name', 'value': 'Board2'},
                   {'op': 'replace', 'path': '/status/name', 'value': 'NewTicket2'},
                   {'op': 'replace', 'path': '/owner/identifier', 'value': 'MyBrainHurts'}
            ]

    r = requests.patch(self.url + self.url_ticket + str(ticket), json=add_resource, headers=self.header)
    print(r.status_code)

它返回200状态代码以完全正确地指示所有内容,但仅更新/ owner / identifier字段。另外两个不是。我已经谷歌了好几天,并尝试了多种代码变体,但我不明白为什么它不会改变董事会或状态。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我刚刚检查了一些其他代码,并且我正在使用数组成功修补,但我使用的是资源的ID而不是名称。试试吧;而不是/ status / name使用/ status / id和数值。

r.text的结果是什么?这应该以新的,修补的形式返回配置,或者它将告诉你为什么补丁不起作用。