Python Forum
[split] Parse Nested JSON String in Python - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: [split] Parse Nested JSON String in Python (/thread-39699.html)



[split] Parse Nested JSON String in Python - mmm07 - Mar-28-2023

Hi! just saw this post and I think** it will help me with the same issue.. any chance you could help me? Thanks in advance!!

my amended..code..

import os
from pathlib import Path
from copy import deepcopy
import csv
import json
import sys

class parse_index:
    def __init__(self):
        # files are in same path as script, assure path here.
        os.chdir(os.path.abspath((os.path.dirname(__file__)))
 
        filepath = Path('mlealcauston/downloads')
        jsonfile = downloads/'axel_export.json'
        with  jsonfile.open() as fp:            
            self.jindex = json.load(fp)
        self.csvfile = filepath / 'all_json.csv'


def create_csv(self):
        header = ["type", "id", "uri",
                    "workID", "identified_by", "is_subject_to",
                    "member_of_collection","referred_to_by","has_type", "was_present_at","inscription", "object_count", "object_part"]
        base = self.jindex["item"]
        with self.csvfile.open('w') as cfptr:
            cwrite = csv.writer(cfptr, delimiter=',').writerow
            cwrite(header)
 
            seqno = 1
            for key in base.keys():
                # print(f"key: {key}")
                bk = base[key]
                for key1 in bk.keys():
                    bk1 = bk[key1]
                 
                    buffer1 = []
                    buffer1.append(bk1['type'])
                    buffer1.append(bk1['id'])
                    buffer1.append(bk1['uri'])
                    buffer1.append(bk1['workID'])
                    buffer1.append(bk1['identified_by']['Appellation']['has_type'])
                    buffer1.append(bk1['identified_by']['label']['value']['language'])
                    buffer1.append(bk1['identified_by']['preferred'])
                    buffer1.append(bk1['identified_by']['preferred'])
                    buffer1.append(bk1['is_subject_to']['Right']['has_type']['label']['value'])
                    buffer1.append(bk1['member_of_collection']['uri']['has_type']['label']['value'])
                    buffer1.append(bk1['member_of_collection']['label']['value'])
                    buffer1.append(bk1['referred_to_by']['Linguistic_Object']['has_type']['uri'])
                    buffer1.append(bk1['referred_to_by']['Linguistic_Object']['has_type']['label']['value'])
                    buffer1.append(bk1['referred_to_by']['Linguistic_Object']['has_type']['has_type']['uri'])
                    buffer1.append(bk1['referred_to_by']['Linguistic_Object']['content']['value'])
                    buffer1.append(bk1['has_object_work_type']['uri'])
                    buffer1.append(bk1['has_object_work_type']['label']['value'])
                    buffer1.append(bk1['has_object_work_type']['label']['qualifier'])
                    buffer1.append(bk1['has_object_work_type']['label']['role'])
                    buffer1.append(bk1['has_object_work_type']['label']['language'])
                    buffer1.append(bk1['has_object_work_type']['inScheme']['uri'])
                    buffer1.append(bk1['has_object_work_type']['inScheme']['label']['value'])
                    buffer1.append(bk1['has_type']['comment'])
                    buffer1.append(bk1['has_type']['uri'])
                    buffer1.append(bk1['has_type']['label']['value'])
                    buffer1.append(bk1['has_type']['label']['qualifier'])
                    buffer1.append(bk1['has_type']['label']['role'])
                    buffer1.append(bk1['has_type']['label']['language'])
                    buffer1.append(bk1['has_type']['inScheme']['uri'])
                    buffer1.append(bk1['has_type']['inScheme']['label']['label'])
                    buffer1.append(bk1['consists_of']['uri'])
                    buffer1.append(bk1['consists_of']['label']['value'])
                    buffer1.append(bk1['consists_of']['label']['qualifier'])
                    buffer1.append(bk1['consists_of']['label']['role'])
                    buffer1.append(bk1['consists_of']['label']['language'])
                    buffer1.append(bk1['consists_of']['inScheme']['uri'])
                    buffer1.append(bk1['consists_of']['inScheme']['label']['value'])
                    buffer1.append(bk1['was_present_at']['Activity']['id'])
                    buffer1.append(bk1['was_present_at']['Activity']['has_type']['uri'])
                    buffer1.append(bk1['was_present_at']['Activity']['has_type']['label']['value'])
                    buffer1.append(bk1['was_present_at']['Activity']['had_participant']['actor']['label']['value'])
                    buffer1.append(bk1['was_present_at']['Activity']['had_participant']['role_actor']['id'])
                    buffer1.append(bk1['was_present_at']['Activity']['had_participant']['role_actor']['uri'])
                    buffer1.append(bk1['was_present_at']['Activity']['had_participant']['role_actor']['label']['value'])
                    buffer1.append(bk1['was_present_at']['Activity']['had_participant']['attributionQualifierActor'])
                    buffer1.append(bk1['was_present_at']['Activity']['has_time-span']['begin_of_the_begin'])
                    buffer1.append(bk1['was_present_at']['Activity']['has_time-span']['end_of_the_end'])
                    buffer1.append(bk1['was_present_at']['Activity']['referred_to_by']['LinguisticObject']['has_type']['id'])
                    buffer1.append(bk1['was_present_at']['Activity']['referred_to_by']['LinguisticObject']['has_type']['label']['value'])
                    buffer1.append(bk1['was_present_at']['Activity']['referred_to_by']['LinguisticObject']['content']['value'])
                    buffer1.append(bk1['inscription']['has_type']['uri'])
                    buffer1.append(bk1['inscription']['has_type']['label']['value'])
                    buffer1.append(bk1['inscription']['content']['value'])
                    buffer1.append(bk1['inscription']['position']['label']['value'])
                    buffer1.append(bk1['object_count'])
                    buffer1.append(bk1['object_part']['has_type']['id'])
                    buffer1.append(bk1['object_part']['has_unit']['id'])
                    buffer1.append(bk1['object_part']['has_unit']['value'])
                    buffer1.append(bk1['object_part']['has_unit']['comment'])
 
 
def main():
    pi = parse_index()
    pi.create_csv()
 
 
if __name__ == '__main__':
    main()
** the dynamic information is confusing me at the moment..


Json below:


Output:
{"comment":"This is an early endpoint to dCw, and is intended for experimental use. In addition to the JSON format, there are also lab projects for JSON-LD and XML.","item":{"type":"Human-Made_Object","id":"121392","uri":null,"workID":"1975.163","identified_by":[{"Appellation":{"has_type":null,"label":[{"value":"St. Georg - Schrank","language":"de"}],"preferred":"y"}}],"is_subject_to":[{"Right":{"has_type":{"label":[{"value":null}]}}}],"member_of_collection":[{"uri":null,"label":[{"value":"Moderne"}]}],"referred_to_by":[{"LinguisticObject":[{"has_type":{"uri":null,"label":[{"value":"Aussage zu Objektbezeichnung"}],"has_type":{"uri":"http:\/\/digicult.vocnet.org\/terminology\/ter01614"}},"content":{"value":"Schrank"}}]},{"LinguisticObject":[{"has_type":{"uri":null,"label":[{"value":"Aussage zu Epoche\/Stil"}],"has_type":{"uri":"http:\/\/digicult.vocnet.org\/terminology\/ter01614"}},"content":{"value":"Historismus"}}]},{"LinguisticObject":[{"has_type":{"id":"mat_tech_import","label":{"value":"Material\/Technik(import)"}},"content":{"value":"Eichenholz, geschnitzt, dunkel gebeizt, Eisenbeschl\u00e4ge","language":"de"}}]},{"LinguisticObject":[{"has_type":{"id":"description","label":{"value":"Beschreibung"}},"content":{"value":"Viert\u00fcriger Schrank, die Front mit Figuren in Nischen nahezu vollplastisch beschnitzt. Die Fassade horizontal in drei Zonen gegliedert. Alle Darstellungen in Nischen mit spiralig gedrehten S\u00e4ulen, Korbb\u00f6gen und Kreuzgew\u00f6lben. In der mittleren Zone zwei Schubladen mit vier Rechteckfeldern.","language":"de"}}]},{"LinguisticObject":[{"has_type":{"id":"description_internal","label":{"value":"interne Bemerkung"}},"content":{"value":" ","language":"de"}}]},{"LinguisticObject":[{"has_type":{"id":"additional_entry","label":{"value":"Zusatzangaben"}},"content":{"value":"Geschenk von Frau Erna Strelow, Bonn - Bad Godesberg","language":"de"}}]},{"LinguisticObject":[{"has_type":{"id":"literature","label":{"value":"Literatur"}},"content":{"value":"Jedding, 1977, S. 59, Kat. Nr 80 mit Abb.","language":"de"}}]},{"LinguisticObject":[{"has_type":{"id":"import","label":{"value":"Import"}},"content":{"value":"DS_Erstellung : 31.05.2002\nDS_Aenderung: 17.07.2014\nDS_AenderungUser: Administrator\nAnzahl Fotos: 1\n","language":"de"}}]},{"LinguisticObject":[{"has_type":{"id":"buzzwords","label":{"value":"Schlagworte"}},"content":{"value":"Majolika","language":"de"}}]}],"has_object_work_type":[{"uri":"http:\/\/obg.vocnet.org\/00000883","label":[{"value":"Schrank","qualifier":null,"role":"preferred","language":"de"}],"inScheme":{"uri":"http:\/\/obg.vocnet.org","label":{"value":"Objektbezeichnung"}}}],"has_type":[{"comment":"Epoche\/Stil to event, Darst.\/Ikonogr. to subject","uri":"http:\/\/digicult.vocnet.org\/sachgruppe\/1.373","label":[{"value":"Schrankm\u00f6bel","qualifier":null,"role":"preferred","language":"de"}],"inScheme":{"uri":"http:\/\/digicult.vocnet.org\/sachgruppe","label":{"value":"Sachgruppe"}}},{"comment":"Epoche\/Stil to event, Darst.\/Ikonogr. to subject","uri":"http:\/\/digicult.vocnet.org\/stil\/601.57","label":[{"value":"Historismus","qualifier":null,"role":"preferred","language":"de"}],"inScheme":{"uri":"http:\/\/digicult.vocnet.org\/stil","label":{"value":"Epoche\/Stil"}}},{"comment":"Epoche\/Stil to event, Darst.\/Ikonogr. to subject","uri":"http:\/\/hamburg.vocnet.org\/technik\/tech00051","label":[{"value":"gebeizt","qualifier":null,"role":"preferred","language":"de"}],"inScheme":{"uri":"http:\/\/hamburg.vocnet.org\/technik","label":{"value":"Technik"}}},{"comment":"Epoche\/Stil to event, Darst.\/Ikonogr. to subject","uri":"http:\/\/hamburg.vocnet.org\/technik\/tech00027","label":[{"value":"geschnitzt","qualifier":null,"role":"preferred","language":"de"}],"inScheme":{"uri":"http:\/\/hamburg.vocnet.org\/technik","label":{"value":"Technik"}}}],"consists_of":[{"uri":"http:\/\/hamburg.vocnet.org\/material\/mat00311","label":[{"value":"Eiche","qualifier":null,"role":"preferred","language":"de"}],"inScheme":{"uri":"http:\/\/hamburg.vocnet.org\/material","label":{"value":"Material"}}}],"was_present_at":[{"Activity":{"id":"354265","has_type":{"uri":"http:\/\/terminology.lido-schema.org\/lido00003","label":[{"value":"Ereignis"}]},"had_participant":[{"actor":{"label":[{"value":null}]},"role_actor":[{"id":"empty","uri":"","label":[{"value":""}]}],"attributionQualifierActor":null}],"has_time-span":{"begin_of_the_begin":"1890","end_of_the_end":"1900"},"took_place_at":[{"Appellation":{"label":[{"value":"Deutschland"}]},"has_note":[{"value":"Rheinland"}]}],"referred_to_by":[{"LinguisticObject":{"has_type":{"id":"eventTypeImportHelp","label":[{"value":"Import-Helper"}]},"content":[{"value":"Entwurf"}]}}]}},{"Activity":{"id":"354266","has_type":{"uri":"http:\/\/digicult.vocnet.org\/terminology\/ter01340","label":[{"value":"Zugang"}]},"had_participant":[{"actor":{"label":[{"value":null}]},"role_actor":[{"id":"vendor","uri":"","label":[{"value":"Zugang von"}]}],"attributionQualifierActor":null}],"has_time-span":{"begin_of_the_begin":"","end_of_the_end":""}}}],"inscription":[{"has_type":{"uri":"http:\/\/digicult.vocnet.org\/terminology\/","label":{"value":null}},"content":{"value":""},"position":{"label":{"value":""}}}],"object_count":1,"object_part":[{"has_type":{"id":"overall"},"has_dimension":[{"has_type":{"id":"height"},"has_unit":{"id":"cm"},"value":null,"comment":null},{"has_type":{"id":"width"},"has_unit":{"id":"cm"},"value":null,"comment":null}]}],"resource":[{"link_resource":{"has_type":{"uri":"http:\/\/terminology.lido-schema.org\/lido00481"},"value":"https:\/\/transformation.digicult-verbund.de\/object\/lido\/web-2-lido\/components\/gate\/file\/0083d5c81fe996d37914a96a4b5b5371","value_internal":"https:\/\/digicult-web.digicult-verbund.de\/entity-resources\/images\/digicult-web-mkg\/1\/1975.163.jpg","upload_file_name":"1975.163.jpg"},"title":null,"creator":null,"rights":{"has_type":{"uri":null}},"public":"no"}],"itemListElement":[{"has_type":{"id":"UpdateAction"},"agent":{"has_type":{"id":"Person"},"id":"3"},"endTime":"2020-10-26 17:14:45"},{"has_type":{"id":"UpdateAction"},"agent":{"has_type":{"id":"Person"},"id":"39"},"endTime":"2017-11-13 17:50:44"}],"runtime_initial":0.3274190425872803}}



RE: [split] Parse Nested JSON String in Python - Larz60+ - Mar-28-2023

mmm07 Wrote:Hi! just saw this post and I think** it will help me with the same issue.. any chance you could help me? Thanks in advance!
What issue, your goal is very vague (almost non-existent), please elaborate.


[split] Parse Nested JSON String in Python2 - mmm07 - Mar-28-2023

Error:



RE: [split] Parse Nested JSON String in Python - mmm07 - Mar-28-2023

(Mar-28-2023, 11:07 AM)Larz60+ Wrote:
mmm07 Wrote:Hi! just saw this post and I think** it will help me with the same issue.. any chance you could help me? Thanks in advance!
What issue, your goal is very vague (almost non-existent), please elaborate.

turning this nested json into tabular format (including the additional nested entries) (i have 300k jsons like this)


RE: [split] Parse Nested JSON String in Python - snippsat - Mar-28-2023

(Mar-28-2023, 04:04 PM)mmm07 Wrote: turning this nested json into tabular format (including the additional nested entries)
Take a look this post where i use json_normalize.
Can also look at this blog post.