Re: [WebDNA] JSONStore Levels

This WebDNA talk-list message is from

2020


It keeps the original formatting.
numero = 115090
interpreted = N
texte = 2719 --Apple-Mail=_837AF1E7-98DF-44A8-A8C1-EF0D37392CE6 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 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:=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] 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 webdna@plsoftware.com.au > 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 --Apple-Mail=_837AF1E7-98DF-44A8-A8C1-EF0D37392CE6 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 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







On 23 Apr 2020, at 06:45, talk@webdna.us wrote:

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.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=_837AF1E7-98DF-44A8-A8C1-EF0D37392CE6-- . 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)
2719 --Apple-Mail=_837AF1E7-98DF-44A8-A8C1-EF0D37392CE6 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 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:=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] 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 webdna@plsoftware.com.au > 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 --Apple-Mail=_837AF1E7-98DF-44A8-A8C1-EF0D37392CE6 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 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







On 23 Apr 2020, at 06:45, talk@webdna.us wrote:

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.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=_837AF1E7-98DF-44A8-A8C1-EF0D37392CE6-- . 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:

Freeze (2003) Updating a database once per day - An example (1998) [WebDNA] How to valuate a domain name? (2010) Emails are Stuck (2003) [WebDNA] Searching within a search on the same database (2013) Applescript error (1998) Question about replacing words (1998) year 2000 + and webmerch, macauth? (1998) Close-to Comparison Code (1998) Math (1997) Display [price] in banner ad (1998) converting characters in form (1997) Fun with dates (1997) Emailer (1997) Is the Finder required? (1998) exclamation mark... (1999) minimalist shopping cart. (1997) Help name our technology! (1997) [WebDNA] WebDNA Hosting (2008) Re:Searching for ALL / empty form field (1997)