[/!][TEXT]JSONRESULT=3D[CONVERTWORDS =table=3DjsonSplitConversions][convertchars =table=3DjsonClean][JSONRESULT][/convertchars][/CONVERTWORDS][/TEXT][!]
-------------------= pass two - add bar to just before each key:value pair =-----------------
[/!][TEXT]JSONRESULT=3D[GREP =search=3D("[^"]*"):&replace=3D|\1=3D][JSONRESULT][/GREP][/TEXT][!]
-------------------= pass three - list out the key:value pairs and assign them to text =variables -----------------
[/!][LISTWORDS =words=3D[url][JSONRESULT][/url]&delimiters=3D|{}][!]
=[/!][TEXT]THISVAL=3D[GREP search=3D(,$)&replace=3D][GETCHARS =start=3D1&trim=3Dboth][CONVERTWORDS =table=3DjsonSplitConversionsBack][word][/CONVERTWORDS][/GETCHARS][/GREP][/=TEXT][!]
[/!][HIDEIF =[url][THISVAL][/url]=3D][!]
=[/!][TEXT]JSON-[THISVAL][/TEXT][!]
=[/!][/HIDEIF][!]
[/!][/LISTWORDS]
Kind regards
Stuart Tremain
Pharoah Lane Software
AUSTRALIA
Hi Stuart,
I appreciate your answer =and have a similar kludge (creative solution) for my application. = I was actually hoping to hear from Chris on this, in hopes that =the underlying JSON parser he is using can be passed dot notation in a =similar way that Javascript uses to parse JSON objects.
Chris, are there any =parameters we can send that are not in the documentation?
Thanks,
Mike Davis
Hi MD
As we don=E2=80=99t know the email =address of the sender anymore it would be nice for us to know who we are =addressing.
The =JSONStore tag is a little confusing and what is also not well documented =is that you can store the data in a table eg:
[JSONstore =table=3DTRANSACTION&fields=3Derror:type,error:message]
[STRIPERESPONSE]
[/JSONstore]
Then search the table:
[SEARCH =table=3DTRANSACTION&neERROR:TYPEdatarq=3D[BLANK]][!]
=[/!][FOUNDITEMS][!]
=[/!][TEXT]ERROR-TYPE=3D[ERROR:TYPE][/TEXT][!]
=[/!][TEXT]ERROR-MESSAGE=3D[ERROR:MESSAGE][/TEXT][!]
=[/!][/FOUNDITEMS][!]
[/!][/SEARCH]
What= I found to be a useful exercise was to write to my specified db and =then open it and read the data to see what is being done with it. =JSONsStore will write the headers in a db
[JSONstore db=3Dlogs/stripelog.db]
[STRIPERESPONSE]
[/JSONstore]
As the data is often stored in an array =you will have to do a bit of manipulation on the found items.
Here is a JSON function =that may be useful to you.
[!]------------------------------------------------------------=----------
FUNCTION Name: WC-JSONvalue
=+ Description: Pull out a value from a JSONobject
=+ Input:
=JSONobject =3D (the json to be parsed) - required
JSONnode =3D (the node that we =want the value of) - required
+ usage: =[WC-JSONvalue =JSONobject=3D[url]<the-json-object>[/url]&JSONnode=3D<the-jso=n-node>]
+Note: This function MUST receive =valid JSONobject, make sure that there are no line breaks before =beginning of JSON, test your JSON validity here:
https://jsonlint.com---------------------------------------------------------------=-------
[/!][function =name=3DWC-JSONvalue][!]
=[/!][text]rRETURN=3D[/text][!]
=[/!][text]rJSONobject=3D[/text][!]
=[/!][text]rJSONnode=3Dnull[/text][!]
=[/!][showif =[url][params_string][/url]^JSONobject][text]rJSONobject=3D[JSONobject][/te=xt][/showif][!]
[/!][showif =[url][params_string][/url]^JSONnode][text]rJSONnode=3D[JSONnode][/text][/s=howif][!]
-------------------- Store =the JSONobject in a table --------------------
=[/!][JSONstore =table=3DJSONdata][rJSONobject][/jsonstore][!]
=-------------------- Search the table = --------------------
=[/!][SEARCH =table=3DJSONdata&ne[rJSONnode]data=3Dfind_all][!]
=[/!][founditems][!]
=[/!][text]rRETURN=3D[interpret][[rJSONnode]][/interpret][/text][!]<=/div>
=[/!][/founditems][!]
=[/!][/SEARCH][!]
=-------------------- Return the value = --------------------
=[/!][return][rRETURN][/return][!]
[/!][/function]
You man need to play around with the =json object to ensure that it is valid json, I found that PayPal json =did not validate.
Kind regards
Stuart Tremain
Pharoah Lane Software
AUSTRALIA
Hi =all,
I=E2=80=99m looking at the docs for =the JSONStore context. It seems that either the context is lacking =functionality or the documentation is. I do not see a way to =access nested levels in the JSON, like can be done with XML using =path=3D0:1:2 for example. Seems like there should be a way to use =dot notation to get at nested data without storing each array in a temp =db, then reparsing each level with JSONStore into another temp db, =etc.
For example: I want to iterate =the data sets in the =E2=80=9Cresults=E2=80=9D array into a database. = I can use JSONStore to populate a table with the fields: page, =total_results, total_pages and results. Then I can search =that table and run JSONStore on the results field using another =database, but this gets a bit complicated when working with some other =data, in which I need to access data that is 3 or 4 arrays deep.
Anyone solved this puzzle in a more efficient =way yet?
{
= "page":1,
= "total_results":21,
= "total_pages":1,
= "results=E2=80=9D:[
= {
= "popular=ity":1.936,"vote_count=E2=80=9D:7
= },
= {
= "popular=ity=E2=80=9D:2.732,"vote_count=E2=80=9D:23
= },
= {
= "popular=ity=E2=80=9D:12.088,"vote_count=E2=80=9D:75
= },
= {
= "popular=ity=E2=80=9D:53.221,"vote_count=E2=80=9D:5
= },
= {
= "popular=ity=E2=80=9D:7.001,"vote_count=E2=80=9D:31
= },
= {
= "popular=ity=E2=80=9D:22.223,"vote_count=E2=80=9D:88
= }
= ]
}
MD---------------------------------------------------------
This message is sent to you because you are subscribed to
the mailing list
talk@webdna.usTo unsubscribe, E-mail to: =
talk-leave@webdna.usarchives:
http://www.webdna.us/page.dna?numero=3D55Bug= Reporting:
support@webdna.us
---------------------------------------------------------This message is sent to you because you are subscribed tothe mailing list
talk@webdna.usTo unsubscribe, E-mail to:
talk-leave@webdna.usarchives:
http://www.webdna.us/page.dna?numero=3D55Bug Reporting:
support@webdna.us
---------------------------------------------------------This message is sent to you because you are subscribed tothe mailing list
talk@webdna.usTo unsubscribe, E-mail to:
talk-leave@webdna.usarchives:
http://www.webdna.us/page.dna?numero=3D55Bug Reporting:
support@webdna.us
=---------------------------------------------------------This message is sent to you because you are subscribed tothe mailing list talk@webdna.usTo unsubscribe, E-mail to: talk-leave@webdna.usarchives: http://www.webdna.us/page.dna?numero=3D55Bug Reporting: support@webdna.us--Apple-Mail=_62299B5A-C6F4-472B-9D17-6790B1F7B5FB--.
Associated Messages, from the most recent to the oldest:
2722--Apple-Mail=_62299B5A-C6F4-472B-9D17-6790B1F7B5FBContent-Transfer-Encoding: quoted-printableContent-Type: text/plain;charset=utf-8I am not sure if this is exactly what Tom wrote, but it is what I am =using.
[!]------------------- Pass json as JSONRESULT ------------------------------------ Conversion table to strip non-breaking spaces =-----------------[/!][TABLE name=3DjsonClean&fields=3Dfrom,to]%C2=09%A0=09[/TABLE]
[!]------------------- Conversion table to facilitate spliting into =key:value pairs -----------------[/!][TABLE name=3DjsonSplitConversions&fields=3Dfrom,to]|~~~~\"^^^^[/TABLE]
[!]------------------- Convert back after spliting into key:value pairs =-----------------[/!][TABLE name=3DjsonSplitConversionsBack&fields=3Dfrom,to]"=09~~~~|^^^^"[/TABLE]
[!]------------------- pass one - run the conversions -----------------[/!]
[text]JSONRESULT=3D[CONVERTWORDS =table=3DjsonSplitConversions][convertchars =table=3DjsonClean][JSONRESULT][/convertchars][/CONVERTWORDS][/TEXT]
[!]------------------- pass two - add bar to just before each key:value =pair -----------------[/!]
[text]JSONRESULT=3D[GREP =search=3D("[^"]*"):&replace=3D|\1=3D][JSONRESULT][/GREP][/TEXT]
[!]------------------- pass three - list out the key:value pairs and assign =them to text variables -----------------[/!][LISTWORDS words=3D
[url][JSONRESULT][/url]&delimiters=3D|{}]
[!][/!]
[text]THISVAL=3D[GREP search=3D(,$)&replace=3D][GETCHARS =start=3D1&trim=3Dboth][CONVERTWORDS =table=3DjsonSplitConversionsBack][word][/CONVERTWORDS][/GETCHARS][/GREP][/=TEXT]
[!][/!][HIDEIF
[url][THISVAL][/url]=3D]
[!][/!]
[text]JSON-[THISVAL][/TEXT]
[!][/!][/HIDEIF]
[!][/!][/LISTWORDS]Kind regardsStuart TremainPharoah Lane SoftwareAUSTRALIAwebdna@plsoftware.com.au> On 1 May 2020, at 08:10, talk@webdna.us wrote:>=20> Hi Stuart,>=20> I appreciate your answer and have a similar kludge (creative solution) =for my application. I was actually hoping to hear from Chris on this, =in hopes that the underlying JSON parser he is using can be passed dot =notation in a similar way that Javascript uses to parse JSON objects.>=20> Chris, are there any parameters we can send that are not in the =documentation?>=20>=20>=20> Thanks,> Mike Davis>=20>> On Apr 22, 2020, at 5:05 PM, talk@webdna.us
=wrote:>>=20>> Hi MD>>=20>> As we don=E2=80=99t know the email address of the sender anymore it =would be nice for us to know who we are addressing.>>=20>> The JSONStore tag is a little confusing and what is also not well =documented is that you can store the data in a table eg:>>=20>>=20>> [JSONstore table=3DTRANSACTION&fields=3Derror:type,error:message]>> [STRIPERESPONSE]>> [/JSONstore]>>=20>> Then search the table:>>=20>> [SEARCH table=3DTRANSACTION&neERROR:TYPEdatarq=3D[BLANK]][!]>> [/!][founditems][!]>> [/!][text]ERROR-TYPE=3D[ERROR:TYPE][/TEXT][!]>> [/!][text]ERROR-MESSAGE=3D[ERROR:MESSAGE][/TEXT][!]>> [/!][/FOUNDITEMS][!]>> [/!][/SEARCH]>>=20>>=20>> What I found to be a useful exercise was to write to my specified db =and then open it and read the data to see what is being done with it. =JSONsStore will write the headers in a db>>=20>> [JSONstore db=3Dlogs/stripelog.db]>> [STRIPERESPONSE]>> [/JSONstore]>>=20>> As the data is often stored in an array you will have to do a bit of =manipulation on the found items.>>=20>> Here is a JSON function that may be useful to you.>>=20>>=20>> =[!]---------------------------------------------------------------------->> FUNCTION Name: WC-JSONvalue>> + Description: Pull out a value from a JSONobject>> + Input:=20>> JSONobject =3D (the json to be parsed) - required>> JSONnode =3D (the node that we want the value of) - required>> + usage: [WC-JSONvalue =JSONobject=3D[url][/url]&JSONnode=3D]>> +Note: This function MUST receive valid JSONobject, make sure =that there are no line breaks before beginning of JSON, test your JSON =validity here: https://jsonlint.com >> =---------------------------------------------------------------------->> [/!][function name=3DWC-JSONvalue][!]>> [/!][text]rRETURN=3D[/text][!]>> [/!][text]rJSONobject=3D[/text][!]>> [/!][text]rJSONnode=3Dnull[/text][!]>> [/!][showif =[url][params_string][/url]^JSONobject][text]rJSONobject=3D[JSONobject][/te=xt][/showif][!]>> [/!][showif =[url][params_string][/url]^JSONnode][text]rJSONnode=3D[JSONnode][/text][/s=howif][!]>> -------------------- Store the JSONobject in a table =-------------------->> [/!][JSONstore table=3DJSONdata][rJSONobject][/jsonstore][!]>> -------------------- Search the table -------------------->> [/!][SEARCH table=3DJSONdata&ne[rJSONnode]data=3Dfind_all][!]>> [/!][founditems][!]>> =[/!][text]rRETURN=3D[interpret][[rJSONnode]][/interpret][/text][!]>> [/!][/founditems][!]>> [/!][/SEARCH][!]>> -------------------- Return the value -------------------->> [/!][return][rRETURN][/return][!]>> [/!][/function]>>=20>> You man need to play around with the json object to ensure that it is =valid json, I found that PayPal json did not validate.>>=20>>=20>>=20>>=20>> Kind regards>>=20>> Stuart Tremain>> Pharoah Lane Software>> AUSTRALIA>> webdna@plsoftware.com.au >>=20>>=20>>=20>>=20>>=20>>=20>>=20>>> On 23 Apr 2020, at 06:45, talk@webdna.us =wrote:>>>=20>>> Hi all,>>>=20>>> I=E2=80=99m looking at the docs for the JSONStore context. It seems =that either the context is lacking functionality or the documentation =is. I do not see a way to access nested levels in the JSON, like can be =done with XML using path=3D0:1:2 for example. Seems like there should =be a way to use dot notation to get at nested data without storing each =array in a temp db, then reparsing each level with JSONStore into =another temp db, etc.>>>=20>>> For example: I want to iterate the data sets in the =E2=80=9Cresults=E2==80=9D array into a database. I can use JSONStore to populate a table =with the fields: page, total_results, total_pages and results. Then I =can search that table and run JSONStore on the results field using =another database, but this gets a bit complicated when working with some =other data, in which I need to access data that is 3 or 4 arrays deep.>>>=20>>> Anyone solved this puzzle in a more efficient way yet?>>>=20>>> {>>> "page":1,>>> "total_results":21,>>> "total_pages":1,>>> "results=E2=80=9D:[>>> {>>> "popularity":1.936,"vote_count=E2=80=9D:7>>> },>>> {>>> "popularity=E2=80=9D:2.732,"vote_count=E2=80=9D:23>>> },>>> {>>> "popularity=E2=80=9D:12.088,"vote_count=E2=80=9D:75>>> },>>> {>>> "popularity=E2=80=9D:53.221,"vote_count=E2=80=9D:5>>> },>>> {>>> "popularity=E2=80=9D:7.001,"vote_count=E2=80=9D:31>>> },>>> {>>> "popularity=E2=80=9D:22.223,"vote_count=E2=80=9D:88>>> }>>> ]>>> }>>>=20>>>=20>>>=20>>>=20>>> MD--------------------------------------------------------->>> This message is sent to you because you are subscribed to>>> the mailing list talk@webdna.us >>> To unsubscribe, E-mail to: talk-leave@webdna.us =>>> archives: http://www.webdna.us/page.dna?numero=3D55 =>>> Bug Reporting: support@webdna.us >>=20>> --------------------------------------------------------- This =message is sent to you because you are subscribed to the mailing list =talk@webdna.us To unsubscribe, E-mail to: =talk-leave@webdna.us archives: =http://www.webdna.us/page.dna?numero=3D55 = Bug Reporting: =support@webdna.us > --------------------------------------------------------- This message =is sent to you because you are subscribed to the mailing list =talk@webdna.us To unsubscribe, E-mail to: talk-leave@webdna.us archives: =http://www.webdna.us/page.dna?numero=3D55 Bug Reporting: =support@webdna.us--Apple-Mail=_62299B5A-C6F4-472B-9D17-6790B1F7B5FBContent-Transfer-Encoding: quoted-printableContent-Type: text/html;charset=utf-8I =am not sure if this is exactly what Tom wrote, but it is what I am =using.
[!]------------------- =Pass json as JSONRESULT -----------------
------------------- Conversion table to strip non-breaking =spaces -----------------
[/!][TABLE =name=3DjsonClean&fields=3Dfrom,to]
%C2=
%A0
------------------- Conversion table to facilitate spliting =into key:value pairs -----------------
[/!][TABLE =name=3DjsonSplitConversions&fields=3Dfrom,to]
|=~~~~
\"^^^^
------------------- Convert back after spliting into =key:value pairs -----------------
[/!][TABLE =name=3DjsonSplitConversionsBack&fields=3Dfrom,to]
"=
~~~~|
^^^^="
------------------- pass one - run the =conversions -----------------
[/!]
[text]JSONRESULT=3D[CONVERTWORDS =table=3DjsonSplitConversions][convertchars =table=3DjsonClean][JSONRESULT][/convertchars][/CONVERTWORDS][/TEXT]
[!]
-------------------= pass two - add bar to just before each key:value pair =-----------------
[/!]
[text]JSONRESULT=3D[GREP =search=3D("[^"]*"):&replace=3D|\1=3D][JSONRESULT][/GREP][/TEXT]
[!]
-------------------= pass three - list out the key:value pairs and assign them to text =variables -----------------
[/!][LISTWORDS =words=3D
[url][JSONRESULT][/url]&delimiters=3D|{}]
[!]=[/!]
[text]THISVAL=3D[GREP search=3D(,$)&replace=3D][GETCHARS =start=3D1&trim=3Dboth][CONVERTWORDS =table=3DjsonSplitConversionsBack][word][/CONVERTWORDS][/GETCHARS][/GREP][/=TEXT]
[!] [/!][HIDEIF =
[url][THISVAL][/url]=3D]
[!][/!][/LISTWORDS]
Kind regards
Stuart Tremain
Pharoah Lane Software
AUSTRALIA
Hi Stuart,
I appreciate your answer =and have a similar kludge (creative solution) for my application. = I was actually hoping to hear from Chris on this, in hopes that =the underlying JSON parser he is using can be passed dot notation in a =similar way that Javascript uses to parse JSON objects.
Chris, are there any =parameters we can send that are not in the documentation?
Thanks,
Mike Davis
Hi MD
As we don=E2=80=99t know the email =address of the sender anymore it would be nice for us to know who we are =addressing.
The =JSONStore tag is a little confusing and what is also not well documented =is that you can store the data in a table eg:
[JSONstore =table=3DTRANSACTION&fields=3Derror:type,error:message]
[STRIPERESPONSE]
[/JSONstore]
Then search the table:
[SEARCH =table=3DTRANSACTION&neERROR:TYPEdatarq=3D[BLANK]]
[!]=[/!]
[text]ERROR-TYPE=3D[ERROR:TYPE][/TEXT]
[!] =[/!]
[text]ERROR-MESSAGE=3D[ERROR:MESSAGE][/TEXT]
[!] [/!][/SEARCH]
What= I found to be a useful exercise was to write to my specified db and =then open it and read the data to see what is being done with it. =JSONsStore will write the headers in a db
[JSONstore db=3Dlogs/stripelog.db]
[STRIPERESPONSE]
[/JSONstore]
As the data is often stored in an array =you will have to do a bit of manipulation on the found items.
Here is a JSON function =that may be useful to you.
[!]------------------------------------------------------------=----------
FUNCTION Name: WC-JSONvalue
=+ Description: Pull out a value from a JSONobject
=+ Input:
=JSONobject =3D (the json to be parsed) - required
JSONnode =3D (the node that we =want the value of) - required
+ usage: =[WC-JSONvalue =JSONobject=3D
[url]<the-json-object>[/url]&JSONnode=3D<the-jso=n-node>]
+Note: This function MUST receive =valid JSONobject, make sure that there are no line breaks before =beginning of JSON, test your JSON validity here:
https://jsonlint.com---------------------------------------------------------------=-------
[/!][function =name=3DWC-JSONvalue]
[!]=[/!][showif =
[url][params_string][/url]^JSONobject]
[text]rJSONobject=3D[JSONobject][/te=xt][/showif]
[!] [/!][showif =
[url][params_string][/url]^JSONnode]
[text]rJSONnode=3D[JSONnode][/text][/s=howif]
[!]-------------------- Store =the JSONobject in a table --------------------
=[/!][JSONstore =table=3DJSONdata][rJSONobject][/jsonstore]
[!] =-------------------- Search the table = --------------------
=[/!][SEARCH =table=3DJSONdata&ne[rJSONnode]data=3Dfind_all]
[!] =[/!]
[text]rRETURN=3D
[interpret][[rJSONnode]][/interpret][/text]
[!]<=/div>
=-------------------- Return the value = --------------------
[/!][/function]
You man need to play around with the =json object to ensure that it is valid json, I found that PayPal json =did not validate.
Kind regards
Stuart Tremain
Pharoah Lane Software
AUSTRALIA
Hi =all,
I=E2=80=99m looking at the docs for =the JSONStore context. It seems that either the context is lacking =functionality or the documentation is. I do not see a way to =access nested levels in the JSON, like can be done with XML using =path=3D0:1:2 for example. Seems like there should be a way to use =dot notation to get at nested data without storing each array in a temp =db, then reparsing each level with JSONStore into another temp db, =etc.
For example: I want to iterate =the data sets in the =E2=80=9Cresults=E2=80=9D array into a database. = I can use JSONStore to populate a table with the fields: page, =total_results, total_pages and results. Then I can search =that table and run JSONStore on the results field using another =database, but this gets a bit complicated when working with some other =data, in which I need to access data that is 3 or 4 arrays deep.
Anyone solved this puzzle in a more efficient =way yet?
{
= "page":1,
= "total_results":21,
= "total_pages":1,
= "results=E2=80=9D:[
= {
= "popular=ity":1.936,"vote_count=E2=80=9D:7
= },
= {
= "popular=ity=E2=80=9D:2.732,"vote_count=E2=80=9D:23
= },
= {
= "popular=ity=E2=80=9D:12.088,"vote_count=E2=80=9D:75
= },
= {
= "popular=ity=E2=80=9D:53.221,"vote_count=E2=80=9D:5
= },
= {
= "popular=ity=E2=80=9D:7.001,"vote_count=E2=80=9D:31
= },
= {
= "popular=ity=E2=80=9D:22.223,"vote_count=E2=80=9D:88
= }
= ]
}
MD---------------------------------------------------------
This message is sent to you because you are subscribed to
the mailing list
talk@webdna.usTo unsubscribe, E-mail to: =
talk-leave@webdna.usarchives:
http://www.webdna.us/page.dna?numero=3D55Bug= Reporting:
support@webdna.us
---------------------------------------------------------This message is sent to you because you are subscribed tothe mailing list
talk@webdna.usTo unsubscribe, E-mail to:
talk-leave@webdna.usarchives:
http://www.webdna.us/page.dna?numero=3D55Bug Reporting:
support@webdna.us
---------------------------------------------------------This message is sent to you because you are subscribed tothe mailing list
talk@webdna.usTo unsubscribe, E-mail to:
talk-leave@webdna.usarchives:
http://www.webdna.us/page.dna?numero=3D55Bug Reporting:
support@webdna.us
=---------------------------------------------------------This message is sent to you because you are subscribed tothe mailing list talk@webdna.usTo unsubscribe, E-mail to: talk-leave@webdna.usarchives: http://www.webdna.us/page.dna?numero=3D55Bug Reporting: support@webdna.us--Apple-Mail=_62299B5A-C6F4-472B-9D17-6790B1F7B5FB--.
Stuart Tremain
DOWNLOAD WEBDNA NOW!
Top Articles:
Talk List
The WebDNA community talk-list is the best place to get some help: several hundred extremely proficient programmers with an excellent knowledge of WebDNA and an excellent spirit will deliver all the tips and tricks you can imagine...
Related Readings:
MacAuthorize order data fields WAS:How To question... (1997)
group searching problem (2002)
OH MY GOD! (1998)
Pithy questions on webcommerce & siteedit (1997)
User Defined Sorting (1997)
WebCat2b13MacPlugin - [math][date][/math] problem (1997)
Submitting ampersands in forms... (1998)
how to get s repeatedly in and out of a form? (1999)
Sku numbers (1997)
Email Spam a bit of Hell (2004)
[WebDNA] Copy database from domain 1 to domain 2 (2010)
Search in 2 or more catalogs (1997)
I try hard to think positively (1998)
OT - webdnadev.net ...... links bad??? (2005)
Country & Ship-to address & other fields ? (1997)
[SHOWIF] (1997)
Extended [ConvertChars] (1997)
Free WebDNA snippets (Extending WebCatalog) (1997)
database size? (1997)
RE: protect tag on NT (1997)