How to store a JSON string in a DataSection?
-
- Always Here
- Posts: 6425
- Joined: Fri Oct 23, 2009 2:33 am
- Location: Wales, UK
- Contact:
How to store a JSON string in a DataSection?
JSON strings include {:[", etc, so how can that be encapsulated in a DataSection?
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
If it sounds simple, you have not grasped the complexity.
Re: How to store a JSON string in a DataSection?
Hi, you could try using EscapeString() and UnescapeString() for one way of doing it.
One way you could quickly escape the text for testing purposes (or for a once off) is to use GetClipboardText()
Cheers!
Code: Select all
EnableExplicit
Structure TEST_STRUCT
DecimalPlaces.i
WindowRect.RECT
EndStructure
Define.s json_raw
Define.s json_unescaped
Define.TEST_STRUCT struct
; obtain the raw escaped data.
Restore json_data
Read.s json_raw
json_unescaped = UnescapeString(json_raw, #PB_String_EscapeXML) ; unescape the string data
Define.i json = ParseJSON(#PB_Any, json_unescaped) ; parse the unescaped string
If IsJSON( json ) ; did we get a valid json?
ExtractJSONStructure(JSONValue(json), @struct, TEST_STRUCT) ; load up the data onto the structure
FreeJSON( json ) ; get rid of the jeeey, son.
EndIf
;Show me what you've got!
Debug json_raw
Debug "-------"
Debug json_unescaped
Debug "-------"
Debug "Decimal places: " + struct\DecimalPlaces
Debug "Rect Left: " + struct\WindowRect\left
Debug "Rect Bottom: " + struct\WindowRect\bottom
Debug "Rect Top: " + struct\WindowRect\top
Debug "Rect Right: " + struct\WindowRect\right
DataSection
json_data:
Data.s "{"WindowRect":{"left":12,"bottom":34,"top":56,"right":78},"DecimalPlaces":1234}"
Code: Select all
Debug EscapeString( GetClipboardText(), #PB_String_EscapeXML)
Re: How to store a JSON string in a DataSection?
You could store the JSON string in a file and use IncludeBinary "D:\file" in the DataSection.
-
- Always Here
- Posts: 6425
- Joined: Fri Oct 23, 2009 2:33 am
- Location: Wales, UK
- Contact:
Re: How to store a JSON string in a DataSection?
Hi dagcrack
Thanks for your reply.
It's not possible to store JSON strings in the Data Section like that if they include symbols like speech marks, hence my post. I was hoping there could be a clever way to encapsulate the whole JSON string such that PB sees it as just another string.
I'm not going to parse the JSON strings, they are part of a set of info that is saved in a text file.
My current solution is the read them in from a file, concern being that they could be inadvertently deleted - but Demivec's idea solves that.
Thanks for your reply.
It's not possible to store JSON strings in the Data Section like that if they include symbols like speech marks, hence my post. I was hoping there could be a clever way to encapsulate the whole JSON string such that PB sees it as just another string.
I'm not going to parse the JSON strings, they are part of a set of info that is saved in a text file.
My current solution is the read them in from a file, concern being that they could be inadvertently deleted - but Demivec's idea solves that.
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
If it sounds simple, you have not grasped the complexity.
-
- Always Here
- Posts: 6425
- Joined: Fri Oct 23, 2009 2:33 am
- Location: Wales, UK
- Contact:
Re: How to store a JSON string in a DataSection?
Hi Demivec
... great idea, thank you.You could store the JSON string in a file and use IncludeBinary "D:\file" in the DataSection.
IdeasVacuum
If it sounds simple, you have not grasped the complexity.
If it sounds simple, you have not grasped the complexity.
Re: How to store a JSON string in a DataSection?
Speech marks? try using Base64 encoding then. If for any reason you don't want the resource to be edited it would at least make it "slightly" harder to do so; although it is fairly trivial.