Compare commits

..

No commits in common. "main" and "master" have entirely different histories.
main ... master

15 changed files with 841 additions and 3 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
# windsurf rules
.windsurfrules

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2024 kake26
Copyright (c) 2024 Paul Malcher
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View file

@ -1,3 +1,25 @@
# pbjsonlib
## Work in progress
A JSON handling library for purebasic
Works pretty well at current. Not 100%, but I'm managing to use the code in other projects just fine. Use at your own risk.
## What it does
Converts JSON to data in a SQLite database. Makes it way easier to search and manipulate. You are responsible for of course doing the seraches and what not yourself.
## Database layout
```
CREATE TABLE "json_data" (
"id" INTEGER,
"key" TEXT,
"parent_key" INTEGER,
"type" TEXT,
"value" TEXT,
PRIMARY KEY("id")
);
```
## Notes
You need to either use the blank database provide ore create your own off the SQL above. It currently doesn't auto generate it.

BIN
json.db Executable file

Binary file not shown.

164
jsonlib.pb Executable file
View file

@ -0,0 +1,164 @@
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

227
test files/generated.json Normal file
View file

@ -0,0 +1,227 @@
[
{
"_id": "6759053cfd9bb8b889d25e97",
"index": 0,
"guid": "2484bb50-2b68-41ad-9eb9-40f828b80ad1",
"isActive": true,
"balance": "$2,009.35",
"picture": "http://placehold.it/32x32",
"age": 35,
"eyeColor": "green",
"name": "Barrera Dean",
"gender": "male",
"company": "PHOTOBIN",
"email": "barreradean@photobin.com",
"phone": "+1 (808) 414-2010",
"address": "844 Woodbine Street, Galesville, North Carolina, 1698",
"about": "Et nisi dolor ad ea dolor laboris do pariatur. Reprehenderit esse pariatur velit duis non nostrud culpa eu quis. Id in duis ullamco cupidatat id mollit in incididunt duis cupidatat.\r\n",
"registered": "2018-11-05T05:22:00 +06:00",
"latitude": 26.643538,
"longitude": 176.415317,
"tags": [
"eu",
"labore",
"laboris",
"excepteur",
"ex",
"quis",
"elit"
],
"friends": [
{
"id": 0,
"name": "Trina Cannon"
},
{
"id": 1,
"name": "Lara Washington"
},
{
"id": 2,
"name": "Jarvis Allen"
}
],
"greeting": "Hello, Barrera Dean! You have 10 unread messages.",
"favoriteFruit": "apple"
},
{
"_id": "6759053c6c1c5418e2f38a10",
"index": 1,
"guid": "ab775ba0-2153-4d8f-86e1-308529258b74",
"isActive": false,
"balance": "$3,088.84",
"picture": "http://placehold.it/32x32",
"age": 22,
"eyeColor": "green",
"name": "Britt Blevins",
"gender": "male",
"company": "INTERLOO",
"email": "brittblevins@interloo.com",
"phone": "+1 (908) 468-2278",
"address": "135 Amity Street, Watrous, Oklahoma, 4368",
"about": "Ipsum laboris dolor laboris cillum aliquip sit exercitation quis adipisicing elit ea magna reprehenderit. Excepteur commodo aliquip do ea voluptate id dolore ex. Ad dolor occaecat ea culpa proident esse dolor eiusmod adipisicing ullamco do nulla aliqua. Elit reprehenderit cupidatat qui culpa reprehenderit aliquip minim elit ad cillum. Laborum enim et eiusmod Lorem. Id sunt in et ea deserunt est tempor id nisi. Qui est incididunt est mollit reprehenderit aute incididunt reprehenderit anim mollit consequat reprehenderit nisi officia.\r\n",
"registered": "2015-10-12T01:24:27 +05:00",
"latitude": 79.881303,
"longitude": -26.350194,
"tags": [
"sit",
"in",
"aliquip",
"qui",
"id",
"est",
"occaecat"
],
"friends": [
{
"id": 0,
"name": "Angelique Steele"
},
{
"id": 1,
"name": "Cynthia Manning"
},
{
"id": 2,
"name": "Teri Bates"
}
],
"greeting": "Hello, Britt Blevins! You have 8 unread messages.",
"favoriteFruit": "apple"
},
{
"_id": "6759053cd64cbda886c6ab89",
"index": 2,
"guid": "403c3dd2-cad2-4273-a865-6fc5f2754ef5",
"isActive": true,
"balance": "$2,078.44",
"picture": "http://placehold.it/32x32",
"age": 37,
"eyeColor": "blue",
"name": "Lena Thompson",
"gender": "female",
"company": "XUMONK",
"email": "lenathompson@xumonk.com",
"phone": "+1 (817) 597-2083",
"address": "688 Mermaid Avenue, Robbins, Virgin Islands, 6242",
"about": "Laborum nisi consectetur proident dolor incididunt sint irure fugiat ipsum proident reprehenderit proident velit dolore. Exercitation cupidatat ea amet deserunt incididunt minim proident reprehenderit Lorem qui nulla in consectetur. Exercitation sit aliquip ad reprehenderit minim Lorem Lorem nulla commodo aliqua officia dolor. Lorem ex adipisicing nisi aliqua reprehenderit occaecat esse ad adipisicing eiusmod Lorem.\r\n",
"registered": "2021-06-10T07:55:03 +05:00",
"latitude": -43.756374,
"longitude": -10.446363,
"tags": [
"excepteur",
"commodo",
"enim",
"nostrud",
"anim",
"in",
"ut"
],
"friends": [
{
"id": 0,
"name": "Bell Short"
},
{
"id": 1,
"name": "Florence Keller"
},
{
"id": 2,
"name": "Hester Brooks"
}
],
"greeting": "Hello, Lena Thompson! You have 8 unread messages.",
"favoriteFruit": "strawberry"
},
{
"_id": "6759053c0383979f437dacc4",
"index": 3,
"guid": "6cb78d37-e4d5-42f8-98a9-e77df540b2ad",
"isActive": false,
"balance": "$1,091.13",
"picture": "http://placehold.it/32x32",
"age": 20,
"eyeColor": "blue",
"name": "Eula Snider",
"gender": "female",
"company": "ZOARERE",
"email": "eulasnider@zoarere.com",
"phone": "+1 (968) 560-2719",
"address": "898 Harman Street, Cowiche, Utah, 3136",
"about": "In ullamco commodo aliqua sunt sit eiusmod veniam cupidatat laborum consectetur. Fugiat sit nulla commodo aliqua laboris. Eu pariatur officia nisi dolor sit qui ad minim pariatur do eu non pariatur. Dolore incididunt magna minim sit occaecat magna est amet eu consequat esse. Do qui sunt ipsum reprehenderit sunt non ad esse magna deserunt velit dolor. Nostrud veniam ex enim amet nisi ipsum do commodo sunt consequat. Ea enim voluptate sit reprehenderit sint nostrud laborum et aliquip cupidatat reprehenderit qui.\r\n",
"registered": "2023-08-01T10:45:44 +05:00",
"latitude": 26.11414,
"longitude": 55.526199,
"tags": [
"commodo",
"elit",
"reprehenderit",
"consectetur",
"esse",
"occaecat",
"esse"
],
"friends": [
{
"id": 0,
"name": "Robertson Holman"
},
{
"id": 1,
"name": "Dennis Gallagher"
},
{
"id": 2,
"name": "Sasha Rich"
}
],
"greeting": "Hello, Eula Snider! You have 5 unread messages.",
"favoriteFruit": "banana"
},
{
"_id": "6759053cf65531799c078ed9",
"index": 4,
"guid": "bcfe6552-066d-4c02-8df3-2518af71d8bc",
"isActive": false,
"balance": "$3,321.31",
"picture": "http://placehold.it/32x32",
"age": 26,
"eyeColor": "brown",
"name": "Mendez Hooper",
"gender": "male",
"company": "MAROPTIC",
"email": "mendezhooper@maroptic.com",
"phone": "+1 (893) 410-3668",
"address": "756 Dobbin Street, Imperial, Federated States Of Micronesia, 1605",
"about": "Incididunt ex mollit qui anim tempor irure dolor. Aliquip veniam irure ea enim sunt incididunt labore consequat. Laborum Lorem nulla laborum proident ipsum. Cupidatat qui cillum do excepteur et aute excepteur.\r\n",
"registered": "2023-09-25T11:12:44 +05:00",
"latitude": 18.757584,
"longitude": 92.109014,
"tags": [
"reprehenderit",
"quis",
"incididunt",
"consequat",
"voluptate",
"eiusmod",
"occaecat"
],
"friends": [
{
"id": 0,
"name": "Keisha Guthrie"
},
{
"id": 1,
"name": "Janelle Mills"
},
{
"id": 2,
"name": "Noelle Solomon"
}
],
"greeting": "Hello, Mendez Hooper! You have 4 unread messages.",
"favoriteFruit": "banana"
}
]

78
test files/hardtest.json Normal file
View file

@ -0,0 +1,78 @@
[
{
"id": "pbc_2040538604",
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"name": "testing",
"type": "base",
"fields": [
{
"autogeneratePattern": "[a-z0-9]{15}",
"hidden": false,
"id": "text3208210256",
"max": 15,
"min": 15,
"name": "id",
"pattern": "^[a-z0-9]+$",
"presentable": false,
"primaryKey": true,
"required": true,
"system": true,
"type": "text"
},
{
"autogeneratePattern": "",
"hidden": false,
"id": "text724990059",
"max": 0,
"min": 0,
"name": "title",
"pattern": "",
"presentable": false,
"primaryKey": false,
"required": false,
"system": false,
"type": "text"
},
{
"autogeneratePattern": "",
"hidden": false,
"id": "text494360628",
"max": 0,
"min": 0,
"name": "value",
"pattern": "",
"presentable": false,
"primaryKey": false,
"required": false,
"system": false,
"type": "text"
},
{
"hidden": false,
"id": "autodate2990389176",
"name": "created",
"onCreate": true,
"onUpdate": false,
"presentable": false,
"system": false,
"type": "autodate"
},
{
"hidden": false,
"id": "autodate3332085495",
"name": "updated",
"onCreate": true,
"onUpdate": true,
"presentable": false,
"system": false,
"type": "autodate"
}
],
"indexes": [],
"system": false
}
]

1
test files/results.json Executable file
View file

@ -0,0 +1 @@
{"admin":{"email":"offal@pngpst.net","created":"2024-07-23 01:32:58.983Z","avatar":0,"updated":"2024-07-23 01:32:58.983Z","id":"xf9w05ts29nik6z"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzIzNDUwMjIsImlkIjoieGY5dzA1dHMyOW5pazZ6IiwidHlwZSI6ImFkbWluIn0.UM_QP4NVBdioMLU8mPJ9ZL0bq_ylLPQ6Jdn3AzNKjK0"}

92
test files/test2.json Normal file
View file

@ -0,0 +1,92 @@
{
"result": [
{
"message": "Hello, Stephen! Your order number is: #78",
"phoneNumber": "1-331-957-3477",
"phoneVariation": "+90 341 719 10 46",
"status": "disabled",
"name": {
"first": "Carolina",
"middle": "Billie",
"last": "Macejkovic"
},
"username": "Carolina-Macejkovic",
"password": "v5TPnbf09jOoOoj",
"emails": [
"Katharina70@example.com",
"Hilda95@example.com"
],
"location": {
"street": "65619 Bruen Valleys",
"city": "Waelchihaven",
"state": "Vermont",
"country": "Colombia",
"zip": "28035-5646",
"coordinates": {
"latitude": "-5.3148",
"longitude": "-57.1354"
}
},
"website": "https://expensive-handful.biz/",
"domain": "dutiful-webinar.info",
"job": {
"title": "Chief Accountability Administrator",
"descriptor": "Corporate",
"area": "Tactics",
"type": "Designer",
"company": "Heidenreich, Feeney and Simonis"
},
"creditCard": {
"number": "3528-1267-1942-1349",
"cvv": "481",
"issuer": "jcb"
},
"uuid": "54690949-9af9-4d9d-b9c6-fbaec3a3e2bf",
"objectId": "675907a0b7b2381b643ed27e"
},
{
"message": "Hello, Lavern! Your order number is: #97",
"phoneNumber": "681.884.7996 x9465",
"phoneVariation": "+90 306 528 10 72",
"status": "disabled",
"name": {
"first": "Kasey",
"middle": "Kennedy",
"last": "Kuhic"
},
"username": "Kasey-Kuhic",
"password": "fwcMVNQbdcZTi56",
"emails": [
"Freeman_Lowe@example.com",
"Eduardo.Hauck@example.com"
],
"location": {
"street": "155 Deckow River",
"city": "East Claudeview",
"state": "Massachusetts",
"country": "Greenland",
"zip": "81479-7331",
"coordinates": {
"latitude": "4.8424",
"longitude": "-33.7905"
}
},
"website": "https://gifted-humanity.net",
"domain": "giving-cd.com",
"job": {
"title": "Central Metrics Executive",
"descriptor": "Principal",
"area": "Data",
"type": "Analyst",
"company": "Kemmer LLC"
},
"creditCard": {
"number": "3686-229621-2039",
"cvv": "034",
"issuer": "mastercard"
},
"uuid": "e1a066bc-7242-4217-bda9-b65554aa3cb2",
"objectId": "675907a0b7b2381b643ed27f"
}
]
}

22
test files/test3.json Normal file
View file

@ -0,0 +1,22 @@
[
[
"speed",
{
"fur": -825722984.7808421,
"shout": "sound",
"look": -1186004478.4914062,
"lonely": 2015750539.230037,
"outside": "afternoon",
"dot": false
},
"rocket",
587090806,
"butter",
"sport"
],
1778572520.5735526,
"weigh",
false,
1090297490,
-272114585
]

6
test files/test4.json Normal file
View file

@ -0,0 +1,6 @@
{
"test": {
"test 1": "",
"test 2": "cow"
}
}

50
test files/test5.json Normal file
View file

@ -0,0 +1,50 @@
{
"id": "67590fb582b5b741e2c310de",
"children": [
{
"name": "Jude Battle",
"age": 9
},
{
"name": "Tandy Christensen",
"age": 1
},
{
"name": "Taylor Bright",
"age": 5
},
{
"name": "Jesse Austin",
"age": 6
},
{
"name": "Nico Gould",
"age": 7
}
],
"currentJob": {
"title": "Developer",
"salary": "mask;"
},
"jobs": [
{
"title": "developer",
"salary": "R$ 0.441,41"
},
{
"title": "CEO",
"salary": "R$ 0.826,12"
}
],
"maxRunDistance": 9.9,
"cpf": "301.233.354-18",
"cnpj": "34.272.366/0001-31",
"pretendSalary": "R$ 6.174,80",
"age": 35,
"gender": "female",
"firstName": "Mildred",
"lastName": "Kline",
"phone": "+55 (83) 95834-3087",
"address": "559 Norwood Avenue - Elbert, North Carolina, Latvia.",
"hairColor": "orange"
}

66
variants/jsonlib copy.pb Executable file
View file

@ -0,0 +1,66 @@
UseSQLiteDatabase()
; worry about the database init later
OpenDatabase(0,"json.db","","",#PB_Database_SQLite)
LoadJSON(1,"results.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)
Debug "Key: " + JSONMemberKey(ObjectValue)
MemberValue = JSONMemberValue(ObjectValue)
; Now extract the actual value based on its type
Select JSONType(MemberValue)
Case #PB_JSON_String
Debug "Value (String): " + GetJSONString(MemberValue)
Case #PB_JSON_Number
Debug "Value (Number): " + StrD(GetJSONDouble(MemberValue))
Case #PB_JSON_Boolean
Debug "Value (Boolean): " + Bool(GetJSONBoolean(MemberValue))
Case #PB_JSON_Object
Debug "Value (Object): (nested object)"
; You could further examine this nested object if needed.
Case #PB_JSON_Array
Debug "Value (Array): (nested array)"
; Handle array values if needed.
Default
Debug "Value (Unknown type)"
EndSelect
Wend
endif
; IDE Options = PureBasic 6.12 LTS (Linux - x64)
; CursorPosition = 43
; FirstLine = 33
; Folding = -
; EnableXP
; DPIAware
; IDE Options = PureBasic 6.12 LTS (Linux - x64)
; CursorPosition = 9
; EnableXP
; DPIAware

97
variants/jsonlib2.pb Executable file
View file

@ -0,0 +1,97 @@
UseSQLiteDatabase()
Procedure searchkey()
searchKey$ = "your.key.path"
query$ = "SELECT * FROM json_data WHERE key = '" + searchKey$ + "'"
If DatabaseQuery(0, query$)
While NextDatabaseRow(0)
Debug "Key: " + GetDatabaseString(0, 0)
Debug "Parent Key: " + GetDatabaseString(0, 1)
Debug "Type: " + GetDatabaseString(0, 2)
Debug "Value: " + GetDatabaseString(0, 3)
Wend
FinishDatabaseQuery(0)
Else
Debug "Error executing query: " + DatabaseError()
EndIf
EndProcedure
Procedure searchval()
searchValue$ = "specific value"
query$ = "SELECT * FROM json_data WHERE value = '" + searchValue$ + "'"
If DatabaseQuery(0, query$)
While NextDatabaseRow(0)
Debug "Key: " + GetDatabaseString(0, 0)
Debug "Parent Key: " + GetDatabaseString(0, 1)
Debug "Type: " + GetDatabaseString(0, 2)
Debug "Value: " + GetDatabaseString(0, 3)
Wend
FinishDatabaseQuery(0)
Else
Debug "Error executing query: " + DatabaseError()
EndIf
EndProcedure
Procedure ProcessJSONObject(ObjectValue, parentKey$)
If ExamineJSONMembers(ObjectValue)
While NextJSONMember(ObjectValue)
key$ = JSONMemberKey(ObjectValue)
MemberValue = JSONMemberValue(ObjectValue)
fullKey$ = parentKey$ + key$
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)))
type$ = "Boolean"
Case #PB_JSON_Object
value$ = "(nested object)"
type$ = "Object"
; Recursively process the nested object
ProcessJSONObject(MemberValue, fullKey$ + ".")
Case #PB_JSON_Array
value$ = "(nested array)"
type$ = "Array"
; Handle array values if needed.
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 ('" + fullKey$ + "', '" + parentKey$ + "', '" + type$ + "', '" + value$ + "')"
If DatabaseUpdate(0, query$) = 0
Debug "Error inserting data: " + DatabaseError()
EndIf
Wend
EndIf
EndProcedure
OpenDatabase(0, "json.db", "", "", #PB_Database_SQLite)
LoadJSON(1, "results.json")
ParseJSON(1, json$) ; returns garbage without the PB ascii there not sure why
ObjectValue = JSONValue(1)
ProcessJSONObject(ObjectValue, "")
; IDE Options = PureBasic 6.12 LTS (Linux - x64)
; CursorPosition = 37
; FirstLine = 11
; Folding = -
; EnableXP
; DPIAware

11
variants/jsontest.pb Normal file
View file

@ -0,0 +1,11 @@
; library test code
XIncludeFile "jsonlib.pb"
parse("","test2.json")
; IDE Options = PureBasic 6.12 LTS (Linux - x64)
; CursorPosition = 6
; EnableXP
; DPIAware