Re: [WebDNA] JSONStore Levels

This WebDNA talk-list message is from

2020


It keeps the original formatting.
numero = 115098
interpreted = N
texte = 2727 The more that we can work with json natively the better.=20 You have my vote :) Regards Stuart Tremain Pharoah Lane Software Suite 16, 20 Burlington Street Crows Nest NSW 2065 AUSTRALIA +612 8971 4431 > On 6 May 2020, at 8:40 pm, talk@webdna.us wrote: >=20 > =EF=BB=BFHello everyone! >=20 >=20 > With Josh (who is behind all the C++ code these last years), we spent some= time thinking about this. He made a proof of concept C++ app that gives the= below output when we feed it the JSON from Mike's post to the mailing list.= Is this useful? If this is acceptable, we can adapt the code into the WebDN= A source tree and have it store in the DB/table in that format. >=20 > page=3D1 > total_results=3D21 > total_pages=3D1 > results:1:popularity=3D1.936 > results:1:vote_count=3D7 > results:2:popularity=3D2.732 > results:2:vote_count=3D23 > results:3:popularity=3D12.088 > results:3:vote_count=3D75 > results:4:popularity=3D53.221 > results:4:vote_count=3D5 > results:5:popularity=3D7.001 > results:5:vote_count=3D31 > results:6:popularity=3D22.223 > results:6:vote_count=3D88 >=20 > Next version would have this fix built-in. >=20 > - chris >=20 >=20 >> On May 1, 2020, at 06:03, talk@webdna.us wrote: >>=20 >> Hi Mike. >>=20 >> Ah yes, I can see why you need to do it natively. >>=20 >> Sorry, I am out of silver bullets now :( >>=20 >>=20 >> Kind regards >>=20 >> Stuart Tremain >> Pharoah Lane Software >> AUSTRALIA >> webdna@plsoftware.com.au >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >>>> On 1 May 2020, at 12:52, talk@webdna.us wrote: >>>=20 >>> Stuart, >>>=20 >>> I actually use this (Tom=E2=80=99s routine) as the basis of what I=E2=80= =99m doing now. The challenge I=E2=80=99m facing in my current project is t= hat the source JSON is quite large, and the specific data I need is near the= end of the data, nested in several layers of arrays. The parsing time is a= round 90 seconds. I need to speed that up. >>>=20 >>>=20 >>> Mike Davis >>>=20 >>>> On Apr 30, 2020, at 5:04 PM, talk@webdna.us wrote: >>>>=20 >>>> I am not sure if this is exactly what Tom wrote, but it is what I am us= ing. >>>>=20 >>>>=20 >>>> [!]------------------- Pass json as JSONRESULT ----------------- >>>> ------------------- Conversion table to strip non-breaking spaces -----= ------------ >>>> [/!][TABLE name=3DjsonClean&fields=3Dfrom,to] >>>> %C2 =20 >>>> %A0 =20 >>>> [/TABLE][!] >>>>=20 >>>> ------------------- Conversion table to facilitate spliting into key:va= lue pairs ----------------- >>>> [/!][TABLE name=3DjsonSplitConversions&fields=3Dfrom,to] >>>> | ~~~~ >>>> \" ^^^^ >>>> [/TABLE][!] >>>>=20 >>>> ------------------- Convert back after spliting into key:value pairs --= --------------- >>>> [/!][TABLE name=3DjsonSplitConversionsBack&fields=3Dfrom,to] >>>> " =20 >>>> ~~~~ | >>>> ^^^^ " >>>> [/TABLE][!] >>>>=20 >>>> ------------------- pass one - run the conversions ----------------- >>>> [/!][TEXT]JSONRESULT=3D[CONVERTWORDS table=3DjsonSplitConversions][conv= ertchars table=3DjsonClean][JSONRESULT][/convertchars][/CONVERTWORDS][/TEXT]= [!] >>>>=20 >>>> ------------------- pass two - add bar to just before each key:value pa= ir ----------------- >>>> [/!][TEXT]JSONRESULT=3D[GREP search=3D("[^"]*"):&replace=3D|\1=3D][JSON= RESULT][/GREP][/TEXT][!] >>>>=20 >>>> ------------------- pass three - list out the key:value pairs and assig= n them to text variables ----------------- >>>> [/!][LISTWORDS words=3D[url][JSONRESULT][/url]&delimiters=3D|{}][!] >>>> [/!][TEXT]THISVAL=3D[GREP search=3D(,$)&replace=3D][GETCHARS start=3D= 1&trim=3Dboth][CONVERTWORDS table=3DjsonSplitConversionsBack][word][/CONVERT= WORDS][/GETCHARS][/GREP][/TEXT][!] >>>> [/!][HIDEIF [url][THISVAL][/url]=3D][!] >>>> [/!][TEXT]JSON-[THISVAL][/TEXT][!] >>>> [/!][/HIDEIF][!] >>>> [/!][/LISTWORDS] >>>>=20 >>>>=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 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 h= opes that the underlying JSON parser he is using can be passed dot notation i= n a similar way that Javascript uses to parse JSON objects. >>>>>=20 >>>>> Chris, are there any parameters we can send that are not in the docume= ntation? >>>>>=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 w= ould be nice for us to know who we are addressing. >>>>>>=20 >>>>>> The JSONStore tag is a little confusing and what is also not well doc= umented 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 a= nd then open it and read the data to see what is being done with it. JSONsSt= ore 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 m= anipulation 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]&J= SONnode=3D] >>>>>> +Note: This function MUST receive valid JSONobject, make sure that= there are no line breaks before beginning of JSON, test your JSON validity h= ere: 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]rJSONobjec= t=3D[JSONobject][/text][/showif][!] >>>>>> [/!][showif [url][params_string][/url]^JSONnode][text]rJSONnode=3D= [JSONnode][/text][/showif][!] >>>>>> -------------------- 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 us= e 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=9Cresult= s=E2=80=9D array into a database. I can use JSONStore to populate a table w= ith the fields: page, total_results, total_pages and results. Then I can s= earch that table and run JSONStore on the results field using another databa= se, but this gets a bit complicated when working with some other data, in wh= ich 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 messag= e 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.webd= na.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.u= s To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdn= a.us/page.dna?numero=3D55 Bug Reporting: support@webdna.us >>>>=20 >>>> --------------------------------------------------------- This message i= s sent to you because you are subscribed to the mailing list talk@webdna.us T= o unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.u= s/page.dna?numero=3D55 Bug Reporting: support@webdna.us >>>=20 >>> --------------------------------------------------------- This message i= s sent to you because you are subscribed to the mailing list talk@webdna.us T= o unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.u= s/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 T= o unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.u= s/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 . Associated Messages, from the most recent to the oldest:

    
  1. Re: [WebDNA] JSONStore Levels (Stuart Tremain 2020)
  2. Re: [WebDNA] JSONStore Levels (Tom Duke 2020)
  3. Re: [WebDNA] JSONStore Levels (christophe.billiottet@webdna.us 2020)
  4. Re: [WebDNA] JSONStore Levels (Tom Duke 2020)
  5. Re: [WebDNA] JSONStore Levels (christophe.billiottet@webdna.us 2020)
  6. Re: [WebDNA] JSONStore Levels (christophe.billiottet@webdna.us 2020)
  7. Re: [WebDNA] JSONStore Levels (Michael Davis 2020)
  8. Re: [WebDNA] JSONStore Levels (Tom Duke 2020)
  9. Re: [WebDNA] JSONStore Levels (Michael Davis 2020)
  10. Re: [WebDNA] JSONStore Levels (Tom Duke 2020)
  11. Re: [WebDNA] JSONStore Levels (Stuart Tremain 2020)
  12. Re: [WebDNA] JSONStore Levels (christophe.billiottet@webdna.us 2020)
  13. RE: [WebDNA] JSONStore Levels ("Scott @ Itsula" 2020)
  14. Re: [WebDNA] JSONStore Levels (Stuart Tremain 2020)
  15. Re: [WebDNA] JSONStore Levels (Michael Davis 2020)
  16. Re: [WebDNA] JSONStore Levels (Stuart Tremain 2020)
  17. Re: [WebDNA] JSONStore Levels (Stuart Tremain 2020)
  18. Re: [WebDNA] JSONStore Levels (Michael Davis 2020)
  19. Re: [WebDNA] JSONStore Levels (Stuart Tremain 2020)
  20. [WebDNA] JSONStore Levels (Michael Davis 2020)
2727 The more that we can work with json natively the better.=20 You have my vote :) Regards Stuart Tremain Pharoah Lane Software Suite 16, 20 Burlington Street Crows Nest NSW 2065 AUSTRALIA +612 8971 4431 > On 6 May 2020, at 8:40 pm, talk@webdna.us wrote: >=20 > =EF=BB=BFHello everyone! >=20 >=20 > With Josh (who is behind all the C++ code these last years), we spent some= time thinking about this. He made a proof of concept C++ app that gives the= below output when we feed it the JSON from Mike's post to the mailing list.= Is this useful? If this is acceptable, we can adapt the code into the WebDN= A source tree and have it store in the DB/table in that format. >=20 > page=3D1 > total_results=3D21 > total_pages=3D1 > results:1:popularity=3D1.936 > results:1:vote_count=3D7 > results:2:popularity=3D2.732 > results:2:vote_count=3D23 > results:3:popularity=3D12.088 > results:3:vote_count=3D75 > results:4:popularity=3D53.221 > results:4:vote_count=3D5 > results:5:popularity=3D7.001 > results:5:vote_count=3D31 > results:6:popularity=3D22.223 > results:6:vote_count=3D88 >=20 > Next version would have this fix built-in. >=20 > - chris >=20 >=20 >> On May 1, 2020, at 06:03, talk@webdna.us wrote: >>=20 >> Hi Mike. >>=20 >> Ah yes, I can see why you need to do it natively. >>=20 >> Sorry, I am out of silver bullets now :( >>=20 >>=20 >> Kind regards >>=20 >> Stuart Tremain >> Pharoah Lane Software >> AUSTRALIA >> webdna@plsoftware.com.au >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >>>> On 1 May 2020, at 12:52, talk@webdna.us wrote: >>>=20 >>> Stuart, >>>=20 >>> I actually use this (Tom=E2=80=99s routine) as the basis of what I=E2=80= =99m doing now. The challenge I=E2=80=99m facing in my current project is t= hat the source JSON is quite large, and the specific data I need is near the= end of the data, nested in several layers of arrays. The parsing time is a= round 90 seconds. I need to speed that up. >>>=20 >>>=20 >>> Mike Davis >>>=20 >>>> On Apr 30, 2020, at 5:04 PM, talk@webdna.us wrote: >>>>=20 >>>> I am not sure if this is exactly what Tom wrote, but it is what I am us= ing. >>>>=20 >>>>=20 >>>> [!]------------------- Pass json as JSONRESULT ----------------- >>>> ------------------- Conversion table to strip non-breaking spaces -----= ------------ >>>> [/!][TABLE name=3DjsonClean&fields=3Dfrom,to] >>>> %C2 =20 >>>> %A0 =20 >>>> [/TABLE][!] >>>>=20 >>>> ------------------- Conversion table to facilitate spliting into key:va= lue pairs ----------------- >>>> [/!][TABLE name=3DjsonSplitConversions&fields=3Dfrom,to] >>>> | ~~~~ >>>> \" ^^^^ >>>> [/TABLE][!] >>>>=20 >>>> ------------------- Convert back after spliting into key:value pairs --= --------------- >>>> [/!][TABLE name=3DjsonSplitConversionsBack&fields=3Dfrom,to] >>>> " =20 >>>> ~~~~ | >>>> ^^^^ " >>>> [/TABLE][!] >>>>=20 >>>> ------------------- pass one - run the conversions ----------------- >>>> [/!][text]JSONRESULT=3D[CONVERTWORDS table=3DjsonSplitConversions][conv= ertchars table=3DjsonClean][JSONRESULT][/convertchars][/CONVERTWORDS][/TEXT]= [!] >>>>=20 >>>> ------------------- pass two - add bar to just before each key:value pa= ir ----------------- >>>> [/!][text]JSONRESULT=3D[GREP search=3D("[^"]*"):&replace=3D|\1=3D][JSON= RESULT][/GREP][/TEXT][!] >>>>=20 >>>> ------------------- pass three - list out the key:value pairs and assig= n them to text variables ----------------- >>>> [/!][LISTWORDS words=3D[url][JSONRESULT][/url]&delimiters=3D|{}][!] >>>> [/!][text]THISVAL=3D[GREP search=3D(,$)&replace=3D][GETCHARS start=3D= 1&trim=3Dboth][CONVERTWORDS table=3DjsonSplitConversionsBack][word][/CONVERT= WORDS][/GETCHARS][/GREP][/TEXT][!] >>>> [/!][HIDEIF [url][THISVAL][/url]=3D][!] >>>> [/!][text]JSON-[THISVAL][/TEXT][!] >>>> [/!][/HIDEIF][!] >>>> [/!][/LISTWORDS] >>>>=20 >>>>=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 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 h= opes that the underlying JSON parser he is using can be passed dot notation i= n a similar way that Javascript uses to parse JSON objects. >>>>>=20 >>>>> Chris, are there any parameters we can send that are not in the docume= ntation? >>>>>=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 w= ould be nice for us to know who we are addressing. >>>>>>=20 >>>>>> The JSONStore tag is a little confusing and what is also not well doc= umented 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 a= nd then open it and read the data to see what is being done with it. JSONsSt= ore 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 m= anipulation 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]&J= SONnode=3D] >>>>>> +Note: This function MUST receive valid JSONobject, make sure that= there are no line breaks before beginning of JSON, test your JSON validity h= ere: 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]rJSONobjec= t=3D[JSONobject][/text][/showif][!] >>>>>> [/!][showif [url][params_string][/url]^JSONnode][text]rJSONnode=3D= [JSONnode][/text][/showif][!] >>>>>> -------------------- 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 us= e 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=9Cresult= s=E2=80=9D array into a database. I can use JSONStore to populate a table w= ith the fields: page, total_results, total_pages and results. Then I can s= earch that table and run JSONStore on the results field using another databa= se, but this gets a bit complicated when working with some other data, in wh= ich 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 messag= e 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.webd= na.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.u= s To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdn= a.us/page.dna?numero=3D55 Bug Reporting: support@webdna.us >>>>=20 >>>> --------------------------------------------------------- This message i= s sent to you because you are subscribed to the mailing list talk@webdna.us T= o unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.u= s/page.dna?numero=3D55 Bug Reporting: support@webdna.us >>>=20 >>> --------------------------------------------------------- This message i= s sent to you because you are subscribed to the mailing list talk@webdna.us T= o unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.u= s/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 T= o unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.u= s/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 . 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:

Search returns all, not 20 (1997) [WebDNA] [tcpconnect] timeout (2015) Modifying order output (1997) Configuring E-mail (1997) Shipping charge question (2003) Add more fields to an existent data base (1997) Re:2nd WebCatalog2 Feature Request (1996) Credit card processing - UK (1997) Hard Questions ? (1997) CC Merchant suggestions?? (1997) WebCatalog and WebMerchant reviewed by InfoWorld (1997) GuestBook example (1997) Further on formula.db failure to calculate shipCost (1997) WebDNA deletes major DB data big time (2004) Just a thought (1998) unique ascending numbers (2003) [encrypt] blues.... (2000) delete a record and ssl (2005) error: Too many nested [xxx] contexts (1997) [CART] (1997)