OOP - 访问对象数据

时间:2016-08-25 11:04:46

标签: python oop smartsheet-api

如果这是一个重复或简单的问题,请道歉。

我最近一直在学习Python(花了很多年时间编写简单的MATLAB脚本)。我已经开始探索面向对象编程和JSON。

我正在尝试使用API​​从服务器收集数据。当返回对象时,我通常使用语法来访问特定的数据字段。但是,我正在努力争取一个。我有一个行对象:

row = {"totalCount": 1, "results": [{"parentObjectId": 887, "contextData": ["Row 1"], "parentObjectType": "sheet", "objectId": 599, "text": "Text", "parentObjectName": "Data", "objectType": "row"}]}

我正在尝试访问单个结果的“objectId”属性(result[0])。

我尝试了rowId = row.results[0].objectId但是得到错误“'SearchResultItem'对象没有属性'objectId'”。

我也尝试了rowId = row.results[0]['objectId'],但收到错误“'SearchResultItem'对象没有属性'__getitem__'”。

---编辑:

print(reportingRow.results[0]['objectId'])
Traceback (most recent call last):

  File "<ipython-input-46-14e026c273e3>", line 1, in <module>
   print(reportingRow.results[0]['objectId'])

TypeError: 'SearchResultItem' object has no attribute '__getitem__'

我使用的是名为Smartsheet的工具。我正在使用search_sheet请求。 API文档(http://smartsheet-platform.github.io/api-docs/#search-sheet)表示'SearchResultItem'是一个包含许多属性的对象。它没有提供更多信息。

Smartsheet模型可在此处找到:https://github.com/smartsheet-platform/smartsheet-python-sdk/tree/master/smartsheet/models。我目前正在查看search_result.py和search_result_item.py以找到答案/线索。

---编辑结束

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

请尝试:

rowId = row['results'][0]['objectId']

答案 1 :(得分:0)

您的图书馆代码清楚地说明SearchResultItema property .object_id

print(reportingRow.results[0].object_id)  # this works just fine

您的问题与字典/ JSON无关,因为使用字典。您正在使用围绕这些词典的自定义对象。