Created
May 15, 2017 19:49
-
-
Save damonregan/0fb0198a977d42054f69a613ef1dbc7c to your computer and use it in GitHub Desktop.
Convert LRS data in JSON to CSV
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import csv | |
import json | |
# Read the json file | |
with open('tlaPull.json', 'r', encoding = 'utf-8') as in_file: | |
read_data = in_file.read() | |
objects = json.loads(read_data) | |
# Create the CSV writer | |
csv_file = csv.writer(open("lrs_data.csv", "w", newline='')) | |
# Write the columns of the CSV | |
csv_file.writerow([ "version", | |
"verb_id", | |
"verb_display_en-US", | |
"verb_display_es-ES", | |
"verb_display_en", | |
"result_extensions_resumed", | |
"result_extensions_paused", | |
"result_score_raw", | |
"result_score_min", | |
"result_score_max", | |
"result_score_scaled", | |
"result_duration", | |
"result_completion", | |
"result_success", | |
"result_response", | |
"actor_name", | |
"actor_objectType", | |
"actor_account_homePage", | |
"actor_account_name" | |
"object_objectType" | |
"object_id", | |
"object_definition_name_en-US", | |
"object_definition_name_en", | |
"object_definition_type", | |
"object_definition_description_en-US", | |
"object_definition_description_en", | |
"object_definition_choices", | |
"object_definition_interactionType", | |
"object_definition_correctResponsesPattern", | |
"context_contextActivities_parent", | |
"context_contextActivities_category", | |
"context_contextActivities_grouping", | |
"context_platform", | |
"context_language", | |
"timestamp", | |
"id", | |
"authority_objectType", | |
"authority_name", | |
"authority_mbox", | |
"stored" | |
]) | |
# Write the rows of the CSV | |
for row in objects: | |
# Use an empty string by default | |
version = "" | |
verb_id = "" | |
verb_display_enUS = "" | |
verb_display_esES = "" | |
verb_display_en = "" | |
result_extensions_resumed = "" | |
result_extensions_paused = "" | |
result_score_raw = "" | |
result_score_min = "" | |
result_score_max = "" | |
result_score_scaled = "" | |
result_duration = "" | |
result_completion = "" | |
result_success = "" | |
result_response = "" | |
actor_name = "" | |
actor_objectType = "" | |
actor_account_homePage = "" | |
actor_account_name = "" | |
object_objectType = "" | |
object_id = "" | |
object_definition_name_enUS = "" | |
object_definition_name_en = "" | |
object_definition_type = "" | |
object_definition_description_enUS = "" | |
object_definition_description_en = "" | |
object_definition_choices = "" | |
object_definition_interactionType = "" | |
object_definition_correctResponsesPattern = "" | |
context_contextActivities_parent = "" | |
context_contextActivities_category = "" | |
context_contextActivities_grouping = "" | |
context_platform = "" | |
context_language = "" | |
timestamp = "" | |
statement_id = "" | |
authority_objectType = "" | |
authority_name = "" | |
authority_mbox = "" | |
stored = "" | |
# Use the actual value if it exists | |
if ("version" in row): | |
version = row["version"] | |
if ("verb" in row): | |
if ("id" in row["verb"]): | |
verb_id = row["verb"]["id"] | |
if ("display" in row["verb"]): | |
if ("en-US" in row["verb"]["display"]): | |
verb_display_enUS = row["verb"]["display"]["en-US"] | |
if ("es-ES" in row["verb"]["display"]): | |
verb_display_esES = row["verb"]["display"]["es-ES"] | |
print(verb_display_esES) | |
if ("en" in row["verb"]["display"]): | |
verb_display_en = row["verb"]["display"]["en"] | |
if ("result" in row): | |
if ("extensions" in row["result"]): | |
if ("resultExt:resumed" in row["result"]["extensions"]): | |
result_extensions_resumed = row["result"]["extensions"]["resultExt:resumed"] | |
if ("resultExt:paused" in row["result"]["extensions"]): | |
result_extensions_paused = row["result"]["extensions"]["resultExt:paused"] | |
if ("score" in row["result"]): | |
if ("raw" in row["result"]["score"]): | |
result_score_raw = row["result"]["score"]["raw"] | |
if ("min" in row["result"]["score"]): | |
result_score_min = row["result"]["score"]["min"] | |
if ("max" in row["result"]["score"]): | |
result_score_max = row["result"]["score"]["max"] | |
if ("scaled" in row["result"]["score"]): | |
result_score_scaled = row["result"]["score"]["scaled"] | |
if ("duration" in row["result"]): | |
result_duration = row["result"]["duration"] | |
if ("completion" in row["result"]): | |
result_completion = row["result"]["completion"] | |
if ("success" in row["result"]): | |
result_success = row["result"]["success"] | |
if ("response" in row["result"]): | |
result_response = row["result"]["response"] | |
if ("actor" in row): | |
if ("name" in row["actor"]): | |
actor_name = row["actor"]["name"] | |
if ("objectType" in row["actor"]): | |
actor_objectType = row["actor"]["objectType"] | |
if ("account" in row["actor"]): | |
if ("homePage" in row["actor"]["account"]): | |
actor_account_homePage = row["actor"]["account"]["homePage"] | |
if ("name" in row["actor"]["account"]): | |
actor_account_name = row["actor"]["account"]["name"] | |
if ("object" in row): | |
if ("objectType" in row["object"]): | |
object_objectType = row["object"]["objectType"] | |
if ("id" in row["object"]): | |
object_id = row["object"]["id"] | |
if ("definition" in row["object"]): | |
if ("name" in row["object"]["definition"]): | |
if ("en-US" in row["object"]["definition"]["name"]): | |
object_definition_name_enUS = row["object"]["definition"]["name"]["en-US"] | |
if ("en" in row["object"]["definition"]["name"]): | |
object_definition_name_en = row["object"]["definition"]["name"]["en"] | |
if ("type" in row["object"]["definition"]): | |
object_definition_type = row["object"]["definition"]["type"] | |
if ("description" in row["object"]["definition"]): | |
if ("en-US" in row["object"]["definition"]["description"]): | |
object_definition_description_enUS = row["object"]["definition"]["description"]["en-US"] | |
if ("en" in row["object"]["definition"]["description"]): | |
object_definition_description_en = row["object"]["definition"]["description"]["en"] | |
if ("choices" in row["object"]["definition"]): | |
object_definition_choices = row["object"]["definition"]["choices"] | |
if ("interactionType" in row["object"]["definition"]): | |
object_definition_interactionType = row["object"]["definition"]["interactionType"] | |
if ("correctResponsesPattern" in row["object"]["definition"]): | |
object_definition_correctResponsesPattern = row["object"]["definition"]["correctResponsesPattern"] | |
if ("context" in row): | |
if ("contextActivities" in row["context"]): | |
if ("parent" in row["context"]["contextActivities"]): | |
context_contextActivities_parent = row["context"]["contextActivities"]["parent"] | |
if ("category" in row["context"]["contextActivities"]): | |
context_contextActivities_category = row["context"]["contextActivities"]["category"] | |
if ("grouping" in row["context"]["contextActivities"]): | |
context_contextActivities_grouping = row["context"]["contextActivities"]["grouping"] | |
if ("platform" in row["context"]): | |
context_platform = row["context"]["platform"] | |
if ("language" in row["context"]): | |
context_language = row["context"]["language"] | |
if ("timestamp" in row): | |
timestamp = row["timestamp"] | |
if ("id" in row): | |
statement_id = row["id"] | |
if ("authority" in row): | |
if ("objectType" in row["authority"]): | |
authority_objectType = row["authority"]["objectType"] | |
if ("name" in row["authority"]): | |
authority_name = row["authority"]["name"] | |
if ("mbox" in row["authority"]): | |
authority_mbox = row["authority"]["mbox"] | |
if ("stored" in row): | |
stored = row["stored"] | |
# Write the row data to the CSV | |
csv_file.writerow([ version, | |
verb_id, | |
verb_display_enUS, | |
verb_display_esES, | |
verb_display_en, | |
result_extensions_resumed, | |
result_extensions_paused, | |
result_score_raw, | |
result_score_min, | |
result_score_max, | |
result_score_scaled, | |
result_duration, | |
result_completion, | |
result_success, | |
result_response, | |
actor_name, | |
actor_objectType, | |
actor_account_homePage, | |
actor_account_name, | |
object_objectType, | |
object_id, | |
object_definition_name_enUS, | |
object_definition_name_en, | |
object_definition_type, | |
object_definition_description_enUS, | |
object_definition_description_en, | |
object_definition_choices, | |
object_definition_interactionType, | |
object_definition_correctResponsesPattern, | |
context_contextActivities_parent, | |
context_contextActivities_category, | |
context_contextActivities_grouping, | |
context_platform, | |
context_language, | |
timestamp, | |
statement_id, | |
authority_objectType, | |
authority_name, | |
authority_mbox, | |
stored | |
]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment