Преобразование JSON из API в поток активности
Я делаю проект для удовольствия, и одним из требований является получение данных JSON из API по моему выбору и преобразование их в поток операций с помощью angularjs.
Я погуглил и прочитал, что такое поток действий, и я думаю, что у меня есть общее представление об этом. По сути, это преобразование действия в определенный формат JSON с использованием ключевых слов "актер", "глагол", "объект" и "цель".
Когда я смотрю на примеры, я понимаю, почему эта конкретная строка JSON считается потоком активности.
Пример:
{
"published": "2011-02-10T15:04:55Z",
"actor": {
"url": "http://example.org/martin",
"objectType" : "person",
"id": "tag:example.org,2011:martin",
"image": {
"url": "http://example.org/martin/image",
"width": 250,
"height": 250
},
"displayName": "Martin Smith"
},
"verb": "post",
"object" : {
"url": "http://example.org/blog/2011/02/entry",
"id": "tag:example.org,2011:abc123/xyz"
},
"target" : {
"url": "http://example.org/blog/",
"objectType": "blog",
"id": "tag:example.org,2011:abc123",
"displayName": "Martin's Blog"
}
}
Но я запутался в том, как преобразовать мои данные JSON в поток действий.
В моем JSON нет "актера" и "глагола". Если кто-то может объяснить или предоставить решение, которое будет высоко ценится. Спасибо!
API погоды
{
"coord": {
"lon": -0.13,
"lat": 51.51
},
"weather": [
{
"id": 300,
"main": "Drizzle",
"description": "light intensity drizzle",
"icon": "09d"
}
],
"base": "stations",
"main": {
"temp": 280.32,
"pressure": 1012,
"humidity": 81,
"temp_min": 279.15,
"temp_max": 281.15
},
"visibility": 10000,
"wind": {
"speed": 4.1,
"deg": 80
},
"clouds": {
"all": 90
},
"dt": 1485789600,
"sys": {
"type": 1,
"id": 5091,
"message": 0.0103,
"country": "GB",
"sunrise": 1485762037,
"sunset": 1485794875
},
"id": 2643743,
"name": "London",
"cod": 200
}
2 ответа
ActivityStream - это просто спецификация для действий. Погода это просто модель. Модель может быть субъектом / субъектом или объектом, на который действует субъект. В этом случае погода может быть только объектом.
Пример деятельности, связанной с погодой:
Мартин проверяет погоду в Лондоне в 15:04 UTC 10 февраля 2015 года.
Соответствующей деятельностью JSON является:
{
"published": "2015-02-10T15:04:55Z",
"actor": {
"url": "http://example.org/martin",
"objectType" : "person",
"id": "tag:example.org,2011:martin",
"image": {
"url": "http://example.org/martin/image",
"width": 250,
"height": 250
},
"displayName": "Martin Smith"
},
"verb": "search",
"object" : {
"url": "http://api.openweathermap.org/data/2.5/weather?q=London",
"name": "London's weather",
"published": "2015-02-10T15:04:55Z"
}
}
Обратите внимание, что это только пример. У вас могут быть разные виды деятельности, в зависимости от того, как вы хотите использовать данные о погоде.
Концепция потока деятельности довольно проста. Вот хороший пример: "Венди добавляет Лондон в свой список мест для посещения"
В этом случае актер - "Венди", объект - "Лондон", глагол - "Добавить", а цель - "Места для посещения".
Вы можете использовать этот синтаксис для поддержки различных вариантов использования. Я видел людей, которые использовали спецификацию потока активности для всего, начиная от сертификации зданий Leed, отчетов об ошибках и заканчивая социальными приложениями.
Пример 2:
Приложение Uber не работает с кодом ошибки 2 и было назначено Джону
- Актер: приложение: Uber
- Глагол: перерыв
- Объект: Ошибка:2
- Цель: пользователь: Джон
Пример 3:
RoadToVR опубликовал статью о "Эхо Арене"
- Актер: RoadToVR
- Глагол: опубликовано
- Объект: Артикул:123
Расширенные поля
Спецификация также описывает поле TO. Вы можете использовать поле TO для поддержки @mentions, хэштегов и уведомлений.
Версия 2
Также доступна новая версия спецификации потока активности: https://www.w3.org/TR/activitystreams-core/ Пока что я не вижу никаких свидетельств того, что приложения принимают эту новую спецификацию.
Учебный поток
Этот учебник является хорошей отправной точкой, если вы хотите создать фид в стиле Twitter: https://getstream.io/get_started/