Skip to content

Instantly share code, notes, and snippets.

@damonregan
Created May 15, 2017 19:49
Show Gist options
  • Save damonregan/0fb0198a977d42054f69a613ef1dbc7c to your computer and use it in GitHub Desktop.
Save damonregan/0fb0198a977d42054f69a613ef1dbc7c to your computer and use it in GitHub Desktop.
Convert LRS data in JSON to CSV
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