Как получить только первые 2 данные из определенной конечной точки REST (нет всех данных) Питон
Как получить только первые 2 данные из определенной конечной точки REST вместо всех данных в HTTP?
Мое мнение:
import requests import json url = "https://ws1.chic.ulster.ac.uk/SensorCentral/REST/SensorDataRangeNanos/flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101?startTs=1594297110372000000&endTs=1594297110372000000" response = requests.get(url) data = response.text parsed = json.loads(data) print(json.dumps(parsed, indent=1))
где мой вывод (в котором перечислены все элементы):
[ { "sensorClass": 101, "uID": "flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101", "eventCode": 101, "sensorUUID": "flgSh9oHnutzvZVOnnixFNjXIda2zula", "timeStamp": 1.594297110372e+18, "deviceMfg": 101, "blobJson": "[{'deviceTimestamp': 166150, 'x': 3.8919, 'y': -8.6865, 'z': -3.3077}, {'deviceTimestamp': 166170, 'x': 4.2998, 'y': -9.8624, 'z': -2.0769}, {'deviceTimestamp': 166190, 'x': 0.74341, 'y': -9.4483, 'z': 0.57692}, {'deviceTimestamp': 166210, 'x': 0.73178, 'y': -9.5004, 'z': 3.0769}, {'deviceTimestamp': 166230, 'x': 3.5538, 'y': -9.7006, 'z': 3.3077}, {'deviceTimestamp': 166250, 'x': -1.4629, 'y': -7.0692, 'z': 2.2308}, {'deviceTimestamp': 166260, 'x': -6.7571, 'y': -5.0299, 'z': -0.076923}, {'deviceTimestamp': 166280, 'x': -5.0319, 'y': -6.5896, 'z': -0.076923}, {'deviceTimestamp': 166300, 'x': -0.21122, 'y': -8.9002, 'z': 2.5}, {'deviceTimestamp': 166320, 'x': 6.3477, 'y': -9.3142, 'z': 4.5385}, {'deviceTimestamp': 166340, 'x': 10.904, 'y': -9.9498, 'z': 5.6538}, {'deviceTimestamp': 166360, 'x': 9.5501, ............................................(ALL THE DATA)
Тем не менее, я хочу, чтобы получить, что содержит только 2 записи в строке blobJson.
Я хочу получить вывод как:
[ { "sensorClass": 101, "uID": "flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101", "eventCode": 101, "sensorUUID": "flgSh9oHnutzvZVOnnixFNjXIda2zula", "timeStamp": 1.594297110372e+18, "deviceMfg": 101, "blobJson": "[{'deviceTimestamp': 166150, 'x': 3.8919, 'y': -8.6865, 'z': -3.3077}, {'deviceTimestamp': 166170, 'x': 4.2998, 'y': -9.8624, 'z': -2.0769}]" } ]
which only 2 element in blobJson
Что я уже пробовал:
import requests import json url = "https://ws1.chic.ulster.ac.uk/SensorCentral/REST/SensorDataRangeNanos/flgSh9oHnutzvZVOnnixFNjXIda2zula_101_101?startTs=1594297110372000000&endTs=1594297110372000000" response = requests.get(url) data = response.text parsed = json.loads(data) print(json.dumps(parsed, indent=1))
Richard MacCutchan
У вас нет выбора, вы получаете все, что сервер отправляет на основе вашего запроса.
Member 14891535
Но могу ли я установить, какой из них распечатать?
Richard MacCutchan
Да, но вам нужно написать код, чтобы извлечь нужную вам часть.
Member 14891535
Любая идея может дать совет? в котором я борюсь
Richard MacCutchan
Да, идите к нему. json — JSON encoder and decoder — Python 3.8.4 документация[^] и вы найдете всю необходимую информацию по обработке JSON.
Member 14891535
Спасибо. Я действительно пробовал, но не могу понять, какую библиотеку мне следует использовать.
Member 14891535
print(json.dumps(parsed, indent=1))
Richard MacCutchan
Что ты имеешь в виду "какая библиотека" Поддержка JSON встроена в Python, как описано на этой странице документации.
Member 14891535
О, хорошо, может быть, слова, которые я использовал неправильно. Но я все еще не могу понять
Richard MacCutchan
Извините, но я действительно не понимаю, что вы пытаетесь сделать. Пожалуйста, используйте Улучшить вопрос ссылка выше и четко объясните, какие данные вы пытаетесь получить из данных ответа.
Member 14891535
Спасибо, я улучшил свой вопрос. Надеюсь, что лучше
Richard MacCutchan
Скорее всего, вам нужно использовать метод json.loads deserialize для преобразования текста в конструкции Python. Затем вы можете извлечь нужные элементы, ссылаясь на их позиции в списке. Вы можете распечатать результат вызова json.loads, чтобы увидеть, как ссылаться на каждый элемент.
Member 14891535
да, я действительно использовал parsed = json.loads(data)