【发布时间】:2016-10-12 02:27:05
【问题描述】:
搞砸了一段时间,无法正确处理。我正在尝试为此 JSON 中的每个路径创建数组。
[
{
"WebApp : calendar": {
"count": 3151,
"next": {
"ViewWorkout": {
"count": 521,
"next": {
"BeginUserSession": {
"count": 12,
"next": {}
},
"EditWorkout": {
"count": 134,
"next": {}
},
"WebApp : expandoOpened": {
"count": 116,
"next": {}
},
"Mobile : Feed": {
"count": 2,
"next": {}
},
"WebApp : athleteLoadedFromLibrary": {
"count": 45,
"next": {}
},
"ViewWorkout": {
"count": 108,
"next": {}
},
"WebApp : workoutQuickViewTabmapGraphClicked": {
"count": 18,
"next": {}
},
"DeleteWorkout": {
"count": 9,
"next": {}
},
"WebApp : headerWorkoutIconClicked": {
"count": 3,
"next": {}
},
"WebApp : notificationCenterOpened": {
"count": 14,
"next": {}
},
"WebApp : calendar": {
"count": 3,
"next": {}
},
"WebApp : workoutQuickViewTabsummaryClicked": {
"count": 1,
"next": {}
},
"AddWorkout": {
"count": 8,
"next": {}
},
"DeleteEvent": {
"count": 1,
"next": {}
},
"ViewWorkoutMapAndGraph": {
"count": 2,
"next": {}
},
"WebApp : fileUploadMenuOpened": {
"count": 7,
"next": {}
},
"WebApp : athleteSettingsLoadedFromLibrary": {
"count": 1,
"next": {}
},
"WebApp : workoutQuickViewTabpowerClicked": {
"count": 2,
"next": {}
},
"WebApp : distributionChartLoaded": {
"count": 2,
"next": {}
},
"WebApp : homeViewed": {
"count": 2,
"next": {}
},
"WebApp : loadNotificationFeedbackLocation": {
"count": 3,
"next": {}
},
"Mobile : athleteChanged": {
"count": 1,
"next": {}
},
"WebApp : workoutQuickViewTabheartrateClicked": {
"count": 2,
"next": {}
},
"WebApp : qvUnitsMenutUpdateUnitsToMetricClicked": {
"count": 1,
"next": {}
},
"WebApp : goToLastWeek": {
"count": 4,
"next": {}
},
"WebApp : createWorkoutFromLibrary": {
"count": 2,
"next": {}
},
"AddEvent": {
"count": 1,
"next": {}
},
"ViewAthleteList": {
"count": 1,
"next": {}
},
"WebApp : planLoadedFromLibrary": {
"count": 2,
"next": {}
},
"WebApp : enterFullScreen": {
"count": 1,
"next": {}
},
"WebApp : downloadFileClicked": {
"count": 1,
"next": {}
},
"WebApp : contextMenuOpened": {
"count": 1,
"next": {}
}
}
},
"WebApp : athleteLoadedFromLibrary": {
"count": 1230,
"next": {
"WebApp : calendar": {
"count": 1190,
"next": {}
},
"WebApp : goToLastWeek": {
"count": 3,
"next": {}
},
"ViewWorkout": {
"count": 12,
"next": {}
},
"BeginUserSession": {
"count": 7,
"next": {}
},
"AddWorkout": {
"count": 3,
"next": {}
},
"WebApp : athleteLoadedFromLibrary": {
"count": 7,
"next": {}
},
"WebApp : refreshCalendar": {
"count": 1,
"next": {}
},
"WebApp : quickViewOpened": {
"count": 1,
"next": {}
},
"WebApp : notificationCenterOpened": {
"count": 1,
"next": {}
},
"WebApp : selectCalendarDate": {
"count": 1,
"next": {}
},
"WebApp : goToNextWeek": {
"count": 1,
"next": {}
},
"WebApp : createWorkoutFromLibrary": {
"count": 1,
"next": {}
}
}
},
"WebApp : notificationCenterOpened": {
"count": 276,
"next": {
"WebApp : loadNotificationFeedbackLocation": {
"count": 111,
"next": {}
},
"WebApp : athleteLoadedFromLibrary": {
"count": 76,
"next": {}
},
"ViewWorkout": {
"count": 19,
"next": {}
},
"AddEvent": {
"count": 1,
"next": {}
},
"WebApp : notificationCenterOpened": {
"count": 9,
"next": {}
},
"AddWorkout": {
"count": 5,
"next": {}
},
"BeginUserSession": {
"count": 16,
"next": {}
},
"WebApp : calendar": {
"count": 3,
"next": {}
},
"WebApp : goToLastWeek": {
"count": 2,
"next": {}
},
"WebApp : addAthlete": {
"count": 5,
"next": {}
},
"$campaign_delivery": {
"count": 1,
"next": {}
},
"Mobile : Feed": {
"count": 2,
"next": {}
},
"WebApp : createWorkoutFromLibrary": {
"count": 2,
"next": {}
},
"WebApp : homeViewed": {
"count": 1,
"next": {}
},
"WebApp : dashboardViewed": {
"count": 2,
"next": {}
},
"WebApp : athleteSettingsLoadedFromLibrary": {
"count": 3,
"next": {}
},
"WebApp : calendarLoadedViaLoadDragNDrop": {
"count": 2,
"next": {}
},
"WebApp : groupLoadedFromLibrary": {
"count": 1,
"next": {}
},
"WebApp : workoutQuickViewTabpowerClicked": {
"count": 1,
"next": {}
},
"WebApp : refreshCalendar": {
"count": 1,
"next": {}
},
"CMS : Download Chart Exchange chart": {
"count": 1,
"next": {}
},
"WebApp : selectCalendarDate": {
"count": 1,
"next": {}
}
}
},
"WebApp : planLoadedFromLibrary": {
"count": 24,
"next": {
"WebApp : calendar": {
"count": 23,
"next": {}
},
"AddTrainingPlanWorkout": {
"count": 1,
"next": {}
}
}
}
}
}
}
]
真正的最终目标是使用 D3 可视化每条路径,但现在我只是想弄清楚如何循环遍历数据并获取所有可能的路径。
输出应该看起来像这样,并考虑到它们可能是同一结构的更多级别。
WebApp : calendar (3151) -> ViewWorkout (521) -> BeginUserSession (12)
WebApp : calendar (3151) -> ViewWorkout (521) -> EditWorkout (134)
...
WebApp : calendar (3151) -> WebApp : athleteLoadedFromLibrary (1230) -> WebApp : calendar (731)
【问题讨论】:
-
看看这个答案:stackoverflow.com/questions/2203958/…。您需要一个递归函数,该函数在“下一个”为空“下一个”时结束:{}
标签: javascript json d3.js