UseSQLiteDatabase() Procedure InsertIntoDatabase(key$, parentKey$, type$, value$) query$ = "INSERT INTO json_data (key, parent_key, type, value) VALUES ('" + key$ + "', '" + parentKey$ + "', '" + type$ + "', '" + value$ + "')" If DatabaseUpdate(0, query$) = 0 Debug "Error inserting data: " + DatabaseError() EndIf EndProcedure ; Nested object handling Procedure HandleNestedObject(JSONValue, parentKey$) If ExamineJSONMembers(JSONValue) While NextJSONMember(JSONValue) key$ = JSONMemberKey(JSONValue) MemberValue = JSONMemberValue(JSONValue) Debug MemberValue ; Process the member value as before ; Now extract the actual value based on its type Select JSONType(MemberValue) Case #PB_JSON_String value$ = GetJSONString(MemberValue) type$ = "String" Case #PB_JSON_Number value$ = StrD(GetJSONDouble(MemberValue)) type$ = "Number" Case #PB_JSON_Boolean value$ = Str(Bool(GetJSONBoolean(MemberValue))) ;Feels cheaty, but it workssss type$ = "Boolean" Case #PB_JSON_Object value$ = "(nested object)" ;Debug key$ parentKey$ = key$ type$ = "object" ; You could further examine this nested object if needed. ;HandleNestedObject(MemberValue, key$) Case #PB_JSON_Array value$ = "(nested array)" type$ = "Array" ; Handle array values if needed. ;HandleNestedArray(MemberValue, key$) Default value$ = "(unknown type)" type$ = "Unknown" EndSelect ;InsertIntoDatabase(key$, parentKey$, "Object", "(nested object)") ; Adjust type as necessary InsertIntoDatabase(key$,parentKey$,type$,value$) Wend EndIf EndProcedure ; Nested array handling Procedure HandleNestedArray(JSONValue, parentKey$) Dim arrayitems(0) Debug "Array" + ExtractJSONArray(JSONValue, arrayitems()) For i = 0 To ArraySize(arrayitems()) Debug "Array item" + arrayitems(i) InsertIntoDatabase(key$,parentKey$,"array",Str(arrayitems(i))) Next i EndProcedure ; worry about the database init later OpenDatabase(0,"json.db","","",#PB_Database_SQLite) LoadJSON(1,"test5.json");ParseJSON(1, json$) ; returns garbage without the PB ascii there not sure why ; ParseJSON(1, json$) ; returns garbage without the PB ascii there not sure why ObjectValue = JSONValue(1) If ExamineJSONMembers(ObjectValue) While NextJSONMember(ObjectValue) key$ = JSONMemberKey(ObjectValue) MemberValue = JSONMemberValue(ObjectValue) parentKey$ = "" ; Assuming no parent key information is available in the current code. ; Now extract the actual value based on its type Select JSONType(MemberValue) Case #PB_JSON_String value$ = GetJSONString(MemberValue) type$ = "String" Case #PB_JSON_Number value$ = StrD(GetJSONDouble(MemberValue)) type$ = "Number" Case #PB_JSON_Boolean value$ = Str(Bool(GetJSONBoolean(MemberValue))) ;Feels cheaty, but it workssss type$ = "Boolean" Case #PB_JSON_Object value$ = "(nested object)" ;Debug key$ parentKey$ = key$ type$ = "object" ; You could further examine this nested object if needed. HandleNestedObject(MemberValue, key$) Case #PB_JSON_Array value$ = "(nested array)" type$ = "Array" ; Handle array values if needed. HandleNestedArray(MemberValue, key$) Default value$ = "(unknown type)" type$ = "Unknown" EndSelect ; Insert the parsed data into the SQLite database ;query$ = "INSERT INTO json_data (key, parent_key, type, value) VALUES ('" + key$ + "', '" + parentKey$ + "', '" + type$ + "', '" + value$ + "')" ;If DatabaseUpdate(0, query$) = 0 ; Debug "Error inserting data: " + DatabaseError() ;EndIf InsertIntoDatabase(key$,parentKey$,type$,value$) Wend EndIf CloseDatabase(0) ; IDE Options = PureBasic 6.12 LTS (Linux - x64) ; CursorPosition = 63 ; FirstLine = 43 ; Folding = - ; EnableXP ; DPIAware