使用 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 的目标是创建一个类似于以下内容的图模型
为了生成这样的数据模型,我们将与 Trello API /1/member/me/actions?filter=createCard 进行交互,该 API 将返回一个 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 的一个示例,上面表示的所有数据都不是实际数据,而是表示。
此页面是否有帮助?