UseSQLiteDatabase() OpenDatabase(0,"json.db","","",#PB_Database_SQLite) ;TODO:Make sure the database exists 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$) arraySize = JSONArraySize(JSONValue) For arrayIndex = 0 To arraySize - 1 elementValue = GetJSONElement(JSONValue, arrayIndex) arrayItemKey$ = parentKey$ + "[" + Str(arrayIndex) + "]" Select JSONType(elementValue) Case #PB_JSON_String value$ = GetJSONString(elementValue) InsertIntoDatabase(arrayItemKey$, parentKey$, "String", value$) Case #PB_JSON_Number value$ = StrD(GetJSONDouble(elementValue)) InsertIntoDatabase(arrayItemKey$, parentKey$, "Number", value$) Case #PB_JSON_Boolean value$ = Str(GetJSONBoolean(elementValue)) InsertIntoDatabase(arrayItemKey$, parentKey$, "Boolean", value$) Case #PB_JSON_Object InsertIntoDatabase(arrayItemKey$, parentKey$, "Object", "(nested object)") HandleNestedObject(elementValue, arrayItemKey$) Case #PB_JSON_Array InsertIntoDatabase(arrayItemKey$, parentKey$, "Array", "(nested array)") HandleNestedArray(elementValue, arrayItemKey$) Default InsertIntoDatabase(arrayItemKey$, parentKey$, "Unknown", "(unknown type)") EndSelect Next EndProcedure Procedure parse(json.s,filename.s,parentKey$) ; worry about the database init later If json.s ParseJSON(1,json.s) EndIf If filename.s LoadJSON(1,filename.s) EndIf ;LoadJSON(1,"test2.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 InsertIntoDatabase(key$,parentKey$,type$,value$) Wend EndIf EndProcedure ; IDE Options = PureBasic 6.12 LTS (Linux - x64) ; CursorPosition = 115 ; FirstLine = 83 ; Folding = - ; EnableXP ; DPIAware ; Executable = jsonlib