知识库

使用 APOC 解析 Trello API 的 JSON 结果

在 Neo4j 3.0 之前,如果要解析来自 Web API 调用的 JSON 结果,需要使用其中一个数据库驱动程序来获取和解析 JSON 数据。这在此处进行了描述。

通过将存储过程作为 Neo4j 3.0.x 的一部分以及包含 APOC 过程包,可以在图中读取 JSON 数据并创建节点和关系。以下描述了在使用 Trello API 时如何实现这一点。Trello 是一个协作工具,可将您的项目组织成看板。Trello 一目了然地显示正在进行的工作、谁在负责什么以及某个任务在流程中的位置。Trello 的分类包括看板、列表和卡片,其中记录着任务。

使用 Trello API 时,必须注册 API 密钥和令牌,因为访问 URL 需要它们。密钥和令牌可以在此处创建。在下面的示例中,生成的密钥和令牌是

key=00981709d8fa49b9fb3c66f41178c14h
token=06128ee9bb10787d6fdee4942c12b5de5f39be11794fcb0604e072e1940475e2

本例中的 Cypher 目标是创建一个类似于以下所示的图模型

image

为了生成这样的数据模型,我们将与 Trello API 的 /1/member/me/actions?filter=createCard 交互,这将返回一个 JSON 结果,表示卡片创建时间的详细信息。此外,URL 中包含的 'me' 值表示仅检索我执行过的 createCards 操作。

{
  "id": "56f29d59ef82d7312c56710f",
  "idMemberCreator": "5637836872deaba954947610",
  "data": {
    "board": {
      "name": "New Features Board",
      "id": "563ce96c73ae60bc1a3d40",
      "shortLink": "bYO0FVJ7Q"
    },
    "list": {
      "name": "Inbox",
      "id": "55f7f0db68294b2a319c0519"
    },
    "card": {
      "shortLink": "OwUvlhf7",
      "idShort": 464,
      "name": "request for support of Java8",
      "id": "734"
    }
  },
  "type": "createCard",
  "date": "2014-01-15T13:42:49.055Z",
  "memberCreator": {
    "id": "123",
    "avatarHash": "1f5a1bc9710166186f6fdd8c8b806c58",
    "fullName": "Dana Canzano",
    "initials": "DC",
    "username": "danacanzano"
  }
}

以下 Cypher 将处理 /1/member/me/actions 请求的 JSON 结果

WITH "https://api.trello.com/1/member/me/actions?filter=createCard&limit=1000&key=00981709d8fa49b9fb3c66f41178c14h&token=06128ee9bb10787d6fdee4942c12b5de5f39be11794fcb0604e072e1940475e2" AS url
CALL apoc.load.json(url) YIELD value AS action
WITH action, action.memberCreator AS m, action.data AS d
MERGE (u:User {id:m.id}) ON CREATE SET u.initials = m.initials, u.name = m.fullname, u.user = m.username
MERGE (b:Board {id: d.board.id}) ON CREATE SET b = d.board
MERGE (c:Card {id: d.card.id}) ON CREATE SET c = d.card
MERGE (u)-[r:CREATED]->(c) ON CREATE SET r.id = action.id, r.date_created=apoc.date.parse(action.date,'s',"yyyy-MM-dd'T'HH:mm:ss'Z'")
MERGE (c)-[:IN_BOARD]->(b)
RETURN count(*);

然后可以运行

MATCH (u:User)-[r:CREATED]->(c:Card)-[r2:IN_BOARD]->(b:Board)
RETURN u.user AS Author, r.date_created,c.name AS CardName ,b.name AS BoardName

这有助于尝试查找有关 Trello 卡片作者/创建者的指标。

以上只是 Trello API 的一个示例,上面显示的所有数据都不是实际数据,而是表示。

© . All rights reserved.