Re: [WebDNA] JSONStore Levels

This WebDNA talk-list message is from

2020


It keeps the original formatting.
numero = 115101
interpreted = N
texte = 2730 --0000000000005bc7a705a50a9d61 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Mike, Hi - one quick fix for you on Test 5 - pulling out the array in the correct order: Change this: [search db=3Dtest2.db&ne[fldName2]data=3D[blank]] to this [search db=3Dtest2.db&ne[fldName2]data=3D[blank]&rank=3Doff] and that will return the data in the order stored. - Tom On Thu, 7 May 2020 at 01:20, wrote: > Thanks Chris, > > Nice bit of work/idea. It=E2=80=99s important that we are able to sort t= he > database in the same order that the data is listed in an array. Looks li= ke > your solution would make that possible. However, I am in agreement with > Tom that if we can get as close as possible to dot notation or at least > mimic the levels or named parameters of the XMLParse context, that would = be > optimal. > > While working around the JSONStore shortcomings, I ran into multiple > stoppers/bugs that I=E2=80=99ve added to a test suite page here: > http://jambay.com/jsonstore.dna > > > Mike Davis > > On May 6, 2020, at 6:30 AM, talk@webdna.us wrote: > > Chris, > > Hi - this would be great. Just two things to note: > > > - Will the code work for nested arrays? > - Will it allow for JSON that has colons - or any character - in the > node names? > > > My view would be that the closer the WebDNA behaviour matches the > behaviour of Javscript the better. > > So looking at this: > > https://stackoverflow.com/questions/2577172/how-to-get-json-objects-value= -if-its-name-contains-dots > > For the following JSON; > > var mydata =3D > {"list": > [ > {"points.bean.pointsBase": > [ > {"time": 2000, "caption":"caption text", duration: 5000}, > {"time": 6000, "caption":"caption text", duration: 3000} > ] > } > ] > } > > > The time value in the first item of the array is extracted using: > > var smth =3D mydata.list[0]["points.bean.pointsBase"][0].time; > > I realise square brackets have special significance in WebDNA, but you ge= t > the idea. > > - Tom > > > > On Wed, 6 May 2020 at 08:24, wrote: > >> Hello everyone! >> >> >> 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 co= de >> into the WebDNA source tree and have it store in the DB/table in that >> format. >> >> 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 >> >> Next version would have this fix built-in. >> >> - chris >> >> >> > On May 1, 2020, at 06:03, talk@webdna.us wrote: >> > >> > Hi Mike. >> > >> > Ah yes, I can see why you need to do it natively. >> > >> > Sorry, I am out of silver bullets now :( >> > >> > >> > Kind regards >> > >> > Stuart Tremain >> > Pharoah Lane Software >> > AUSTRALIA >> > webdna@plsoftware.com.au >> > >> > >> > >> > >> > >> > >> > >> >> On 1 May 2020, at 12:52, talk@webdna.us wrote: >> >> >> >> Stuart, >> >> >> >> 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 that 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 around 90 >> seconds. I need to speed that up. >> >> >> >> >> >> Mike Davis >> >> >> >>> On Apr 30, 2020, at 5:04 PM, talk@webdna.us wrote: >> >>> >> >>> I 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 >> >>> [/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] >> >>> " >> >>> ~~~~ | >> >>> ^^^^ " >> >>> [/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 regards >> >>> >> >>> Stuart Tremain >> >>> Pharoah Lane Software >> >>> AUSTRALIA >> >>> webdna@plsoftware.com.au >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>>> On 1 May 2020, at 08:10, talk@webdna.us wrote: >> >>>> >> >>>> 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 >> >>>> >> >>>>> On Apr 22, 2020, at 5:05 PM, talk@webdna.us wrote: >> >>>>> >> >>>>> Hi MD >> >>>>> >> >>>>> As we don=E2=80=99t know the email address of the sender anymore i= t 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) - requir= ed >> >>>>> + 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][/= 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] >> >>>>> >> >>>>> 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: >> >>>>>> >> >>>>>> Hi all, >> >>>>>> >> >>>>>> I=E2=80=99m looking at the docs for the JSONStore context. It se= ems 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=9Cres= ults=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 searc= h >> 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 wh= ich >> 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:[ >> >>>>>> { >> >>>>>> "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 >> >>>>>> } >> >>>>>> ] >> >>>>>> } >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> 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 >> >>>> >> >>>> --------------------------------------------------------- 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 >> >> >> >> --------------------------------------------------------- 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.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 >> >> --------------------------------------------------------- >> 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.u= s > > > --------------------------------------------------------- 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.u= s --0000000000005bc7a705a50a9d61 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Mike,

Hi - one quick=C2=A0fix for you on Test 5 - pulling out the array in the c= orrect order:

Change this:
=
[search db=3Dte=st2.db&ne[fldName2]data=3D[blank]]
to this
[search db=3D=test2.db&ne[fldName2]data=3D[blank]&rank=3Doff]
<= /div>
and that wil= l return=C2=A0the data in the order stored.

- Tom<= /div>


On Thu, 7 May 2020 at 01:20, <talk@webdna.us> wrote:
Thank= s Chris,

Nice bit of work/idea.=C2=A0 It=E2=80=99s impor= tant that we are able to sort the database in the same order that the data = is listed in an array.=C2=A0 Looks like your solution would make that possi= ble.=C2=A0 However, I am in agreement with Tom that if we can get as close = as possible to dot notation or at least mimic the levels or named parameter= s of the XMLParse context, that would be optimal. =C2=A0

While working around the JSONStore shortcomings, I ran into multiple= stoppers/bugs that I=E2=80=99ve added to a test suite page here:
http://jamba= y.com/jsonstore.dna


Mike Davis<= br>

On May 6, 2020, at 6:30 AM, talk@webdna.us wrote:
Chris,
<= br>
Hi - this would be great.=C2=A0 Just two things to note:

  • Will the code work for nested arrays?
  • =
  • Will it allow for JSON that has colons - or any character - in the node= names?

My view would be that the cl= oser the WebDNA behaviour matches the behaviour of Javscript the better.

So looking at this:

For the following JSON;

var mydata =3D =C2= =A0=C2=A0
{"list": =C2=A0
=C2=A0 [ =C2=A0
=C2=A0 =C2=A0 = {"points.bean.pointsBase": =C2=A0
=C2=A0 =C2=A0 =C2=A0 [ =C2=A0<= /div>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 {"time": 2000, "caption":&= quot;caption text", duration: 5000}, =C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 {"time": 6000, "caption":"caption text", = duration: 3000} =C2=A0
<= div>
=C2=A0 =C2=A0 =C2=A0 ] =C2=A0
=C2=A0 =C2=A0 } =C2= =A0
=
=C2=A0 ] =C2=A0
}

The=C2= =A0time value in the first item of the array is extracted using:
=
var smth =3D mydata= ..list[0]["points.bean.pointsBase"][0].time;

<= /div>
I realise square brackets have special significance= =C2=A0in WebDNA, but you=C2=A0get the=C2=A0idea.

- Tom



On Wed, 6 May 2020 at 08:24, <talk@webdna.us> wrote:<= br>
Hello everyone!


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= WebDNA source tree and have it store in the DB/table in that format.

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

Next version would have this fix built-in.

- chris


> On May 1, 2020, at 06:03, talk@webdna.us wrote:
>
> Hi Mike.
>
> Ah yes, I can see why you need to do it natively.
>
> Sorry, I am out of silver bullets now :(
>
>
> Kind regards
>
> Stuart Tremain
> Pharoah Lane Software
> AUSTRALIA
> webdna@p= lsoftware.com.au
>
>
>
>
>
>
>
>> On 1 May 2020, at 12:52, talk@webdna.us wrote:
>>
>> Stuart,
>>
>> I actually use this (Tom=E2=80=99s routine) as the basis of what I= =E2=80=99m doing now.=C2=A0 The challenge I=E2=80=99m facing in my current = project is that the source JSON is quite large, and the specific data I nee= d is near the end of the data, nested in several layers of arrays.=C2=A0 Th= e parsing time is around 90 seconds.=C2=A0 I need to speed that up.
>>
>>
>> Mike Davis
>>
>>> On Apr 30, 2020, at 5:04 PM, talk@webdna.us wrote:
>>>
>>> I am not sure if this is exactly what Tom wrote, but it is wha= t I am using.
>>>
>>>
>>> [!]------------------- Pass json as JSONRESULT ---------------= --
>>> ------------------- Conversion table to strip non-breaking spa= ces -----------------
>>> [/!][TABLE name=3DjsonClean&fields=3Dfrom,to]
>>> %C2
>>> %A0
>>> [/TABLE][!]
>>>
>>> ------------------- Conversion table to facilitate spliting in= to key:value pairs -----------------
>>> [/!][TABLE name=3DjsonSplitConversions&fields=3Dfrom,to] >>> |=C2=A0 =C2=A0~~~~
>>> \"=C2=A0 ^^^^
>>> [/TABLE][!]
>>>
>>> ------------------- Convert back after spliting into key:value= pairs -----------------
>>> [/!][TABLE name=3DjsonSplitConversionsBack&fields=3Dfrom,t= o]
>>> "=C2=A0 =C2=A0
>>> ~~~~=C2=A0 =C2=A0 =C2=A0 =C2=A0 |
>>> ^^^^=C2=A0 =C2=A0 =C2=A0 =C2=A0 "
>>> [/TABLE][!]
>>>
>>> ------------------- pass one - run the conversions -----------= ------
>>> [/!][TEXT]JSONRESULT=3D[CONVERTWORDS table=3DjsonSplitConversi= ons][convertchars table=3DjsonClean][JSONRESULT][/convertchars][/CONVERTWOR= DS][/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|{}][!]
>>>=C2=A0 =C2=A0 =C2=A0[/!][TEXT]THISVAL=3D[GREP search=3D(,$)&= ;replace=3D][GETCHARS start=3D1&trim=3Dboth][CONVERTWORDS table=3DjsonS= plitConversionsBack][word][/CONVERTWORDS][/GETCHARS][/GREP][/TEXT][!]
>>>=C2=A0 =C2=A0 =C2=A0[/!][HIDEIF [url][THISVAL][/url]=3D][!]
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][TEXT]JSON-= [THISVAL][/TEXT][!]
>>>=C2=A0 =C2=A0 =C2=A0[/!][/HIDEIF][!]
>>> [/!][/LISTWORDS]
>>>
>>>
>>>
>>>
>>>
>>> Kind regards
>>>
>>> Stuart Tremain
>>> Pharoah Lane Software
>>> AUSTRALIA
>>> = webdna@plsoftware.com.au
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>> On 1 May 2020, at 08:10, talk@webdna.us wrote:
>>>>
>>>> Hi Stuart,
>>>>
>>>> I appreciate your answer and have a similar kludge (creati= ve solution) for my application.=C2=A0 I was actually hoping to hear from C= hris on this, in hopes that the underlying JSON parser he is using can be p= assed dot notation in a similar way that Javascript uses to parse JSON obje= cts.
>>>>
>>>> Chris, are there any parameters we can send that are not i= n the documentation?
>>>>
>>>>
>>>>
>>>> Thanks,
>>>> Mike Davis
>>>>
>>>>> On Apr 22, 2020, at 5:05 PM, talk@webdna.us wrote:
>>>>>
>>>>> Hi MD
>>>>>
>>>>> As we don=E2=80=99t know the email address of the send= er anymore it would be nice for us to know who we are addressing.
>>>>>
>>>>> The JSONStore tag is a little confusing and what is al= so 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]][!]
>>>>>=C2=A0 =C2=A0[/!][FOUNDITEMS][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][TEXT]ERRO= R-TYPE=3D[ERROR:TYPE][/TEXT][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][TEXT]ERRO= R-MESSAGE=3D[ERROR:MESSAGE][/TEXT][!]
>>>>>=C2=A0 =C2=A0[/!][/FOUNDITEMS][!]
>>>>> [/!][/SEARCH]
>>>>>
>>>>>
>>>>> What I found to be a useful exercise was to write to m= y 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
>>>>>=C2=A0 =C2=A0+ Description: Pull out a value from a JSO= Nobject
>>>>>=C2=A0 =C2=A0+ Input:
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0JSONobject =3D (the j= son to be parsed) - required
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0JSONnode =3D (the nod= e that we want the value of) - required
>>>>>=C2=A0 =C2=A0+ usage: [WC-JSONvalue JSONobject=3D[url]&= lt;the-json-object>[/url]&JSONnode=3D<the-json-node>]
>>>>>=C2=A0 =C2=A0+Note: This function MUST receive valid JS= ONobject, make sure that there are no line breaks before beginning of JSON,= test your JSON validity here: https://jsonlint.com
>>>>> ------------------------------------------------------= ----------------
>>>>> [/!][function name=3DWC-JSONvalue][!]
>>>>>=C2=A0 =C2=A0[/!][text]rRETURN=3D[/text][!]
>>>>>=C2=A0 =C2=A0[/!][text]rJSONobject=3D[/text][!]
>>>>>=C2=A0 =C2=A0[/!][text]rJSONnode=3Dnull[/text][!]
>>>>>=C2=A0 =C2=A0[/!][showif [url][params_string][/url]^JSO= Nobject][text]rJSONobject=3D[JSONobject][/text][/showif][!]
>>>>>=C2=A0 =C2=A0[/!][showif [url][params_string][/url]^JSO= Nnode][text]rJSONnode=3D[JSONnode][/text][/showif][!]
>>>>>=C2=A0 =C2=A0--------------------=C2=A0 Store the JSONo= bject in a table=C2=A0 --------------------
>>>>>=C2=A0 =C2=A0[/!][JSONstore table=3DJSONdata][rJSONobje= ct][/jsonstore][!]
>>>>>=C2=A0 =C2=A0--------------------=C2=A0 Search the tabl= e=C2=A0 --------------------
>>>>>=C2=A0 =C2=A0[/!][SEARCH table=3DJSONdata&ne[rJSONn= ode]data=3Dfind_all][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][founditem= s][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0[/!][text]rRETURN=3D[interpret][[rJSONnode]][/interpret][/tex= t][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][/foundite= ms][!]
>>>>>=C2=A0 =C2=A0[/!][/SEARCH][!]
>>>>>=C2=A0 =C2=A0--------------------=C2=A0 Return the valu= e=C2=A0 --------------------
>>>>>=C2=A0 =C2=A0[/!][return][rRETURN][/return][!]
>>>>> [/!][/function]
>>>>>
>>>>> You man need to play around with the json object to en= sure 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:
>>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> I=E2=80=99m looking at the docs for the JSONStore = context.=C2=A0 It seems that either the context is lacking functionality or= the documentation is.=C2=A0 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.=C2=A0 S= eems like there should be a way to use dot notation to get at nested data w= ithout storing each array in a temp db, then reparsing each level with JSON= Store into another temp db, etc.
>>>>>>
>>>>>> For example:=C2=A0 I want to iterate the data sets= in the =E2=80=9Cresults=E2=80=9D array into a database.=C2=A0 I can use JS= ONStore to populate a table with the fields: page, total_results, total_pag= es and results.=C2=A0 =C2=A0Then I can search that table and run JSONStore = on the results field using another database, but this gets a bit complicate= d 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?
>>>>>>
>>>>>> {
>>>>>>=C2=A0 =C2=A0 "page":1,
>>>>>>=C2=A0 =C2=A0 "total_results":21,
>>>>>>=C2=A0 =C2=A0 "total_pages":1,
>>>>>>=C2=A0 =C2=A0 "results=E2=80=9D:[
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity":1.936,"vote_count=E2=80=9D:7
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:2.732,"vote_count=E2=80=9D:23
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:12.088,"vote_count=E2=80=9D:75
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:53.221,"vote_count=E2=80=9D:5
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:7.001,"vote_count=E2=80=9D:31
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:22.223,"vote_count=E2=80=9D:88
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 }
>>>>>>=C2=A0 =C2=A0 ]
>>>>>> }
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> MD------------------------------------------------= ---------
>>>>>> This message is sent to you because you are subscr= ibed to
>>>>>> the mailing list talk@webdna.us
>>>>>> To unsubscribe, E-mail to: talk-leave@webdna.us
>>>>>> archives: http://www.webdna.us/pag= e.dna?numero=3D55
>>>>>> Bug Reporting: support@webdna.us
>>>>>
>>>>> ------------------------------------------------------= --- This message is sent to you because you are subscribed to the mailing l= ist talk@webdna.us = To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.w= ebdna.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 u= nsubscribe, 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 unsub= scribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.us/p= age.dna?numero=3D55 Bug Reporting: support@webdna.us
>>
>> --------------------------------------------------------- This mes= sage is sent to you because you are subscribed to the mailing list talk@webdna.us To unsubscr= ibe, E-mail to: t= alk-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-l= eave@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@w= ebdna.us
To unsubscribe, E-mail to: talk-leave@webdna.us
archives: http://www.webdna.us/page.dna?numero=3D55
Bug Reporting: suppo= rt@webdna.us
--------------------------------------------------------- This message is sent to you because you are subscribed to the mailing list talk@w= ebdna.us To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.us/page.dna?numero=3D55 Bug Reporting: suppo= rt@webdna.us

--------------------------------------------------------- This message is sent to you because you are subscribed to the mailing list talk@w= ebdna.us To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.us/page.dna?numero=3D55 Bug Reporting: suppo= rt@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 --0000000000005bc7a705a50a9d61-- . 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)
2730 --0000000000005bc7a705a50a9d61 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Mike, Hi - one quick fix for you on Test 5 - pulling out the array in the correct order: Change this: [search db=3Dtest2.db&ne[fldName2]data=3D[blank]] to this [search db=3Dtest2.db&ne[fldName2]data=3D[blank]&rank=3Doff] and that will return the data in the order stored. - Tom On Thu, 7 May 2020 at 01:20, wrote: > Thanks Chris, > > Nice bit of work/idea. It=E2=80=99s important that we are able to sort t= he > database in the same order that the data is listed in an array. Looks li= ke > your solution would make that possible. However, I am in agreement with > Tom that if we can get as close as possible to dot notation or at least > mimic the levels or named parameters of the XMLParse context, that would = be > optimal. > > While working around the JSONStore shortcomings, I ran into multiple > stoppers/bugs that I=E2=80=99ve added to a test suite page here: > http://jambay.com/jsonstore.dna > > > Mike Davis > > On May 6, 2020, at 6:30 AM, talk@webdna.us wrote: > > Chris, > > Hi - this would be great. Just two things to note: > > > - Will the code work for nested arrays? > - Will it allow for JSON that has colons - or any character - in the > node names? > > > My view would be that the closer the WebDNA behaviour matches the > behaviour of Javscript the better. > > So looking at this: > > https://stackoverflow.com/questions/2577172/how-to-get-json-objects-value= -if-its-name-contains-dots > > For the following JSON; > > var mydata =3D > {"list": > [ > {"points.bean.pointsBase": > [ > {"time": 2000, "caption":"caption text", duration: 5000}, > {"time": 6000, "caption":"caption text", duration: 3000} > ] > } > ] > } > > > The time value in the first item of the array is extracted using: > > var smth =3D mydata.list[0]["points.bean.pointsBase"][0].time; > > I realise square brackets have special significance in WebDNA, but you ge= t > the idea. > > - Tom > > > > On Wed, 6 May 2020 at 08:24, wrote: > >> Hello everyone! >> >> >> 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 co= de >> into the WebDNA source tree and have it store in the DB/table in that >> format. >> >> 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 >> >> Next version would have this fix built-in. >> >> - chris >> >> >> > On May 1, 2020, at 06:03, talk@webdna.us wrote: >> > >> > Hi Mike. >> > >> > Ah yes, I can see why you need to do it natively. >> > >> > Sorry, I am out of silver bullets now :( >> > >> > >> > Kind regards >> > >> > Stuart Tremain >> > Pharoah Lane Software >> > AUSTRALIA >> > webdna@plsoftware.com.au >> > >> > >> > >> > >> > >> > >> > >> >> On 1 May 2020, at 12:52, talk@webdna.us wrote: >> >> >> >> Stuart, >> >> >> >> 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 that 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 around 90 >> seconds. I need to speed that up. >> >> >> >> >> >> Mike Davis >> >> >> >>> On Apr 30, 2020, at 5:04 PM, talk@webdna.us wrote: >> >>> >> >>> I 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 >> >>> [/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] >> >>> " >> >>> ~~~~ | >> >>> ^^^^ " >> >>> [/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 regards >> >>> >> >>> Stuart Tremain >> >>> Pharoah Lane Software >> >>> AUSTRALIA >> >>> webdna@plsoftware.com.au >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>>> On 1 May 2020, at 08:10, talk@webdna.us wrote: >> >>>> >> >>>> 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 >> >>>> >> >>>>> On Apr 22, 2020, at 5:05 PM, talk@webdna.us wrote: >> >>>>> >> >>>>> Hi MD >> >>>>> >> >>>>> As we don=E2=80=99t know the email address of the sender anymore i= t 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) - requir= ed >> >>>>> + 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][/= 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] >> >>>>> >> >>>>> 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: >> >>>>>> >> >>>>>> Hi all, >> >>>>>> >> >>>>>> I=E2=80=99m looking at the docs for the JSONStore context. It se= ems 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=9Cres= ults=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 searc= h >> 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 wh= ich >> 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:[ >> >>>>>> { >> >>>>>> "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 >> >>>>>> } >> >>>>>> ] >> >>>>>> } >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> 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 >> >>>> >> >>>> --------------------------------------------------------- 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 >> >> >> >> --------------------------------------------------------- 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.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 >> >> --------------------------------------------------------- >> 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.u= s > > > --------------------------------------------------------- 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.u= s --0000000000005bc7a705a50a9d61 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Mike,

Hi - one quick=C2=A0fix for you on Test 5 - pulling out the array in the c= orrect order:

Change this:
=
[search db=3Dte=st2.db&ne[fldName2]data=3D[blank]]
to this
[search db=3D=test2.db&ne[fldName2]data=3D[blank]&rank=3Doff]
<= /div>
and that wil= l return=C2=A0the data in the order stored.

- Tom<= /div>


On Thu, 7 May 2020 at 01:20, <talk@webdna.us> wrote:
Thank= s Chris,

Nice bit of work/idea.=C2=A0 It=E2=80=99s impor= tant that we are able to sort the database in the same order that the data = is listed in an array.=C2=A0 Looks like your solution would make that possi= ble.=C2=A0 However, I am in agreement with Tom that if we can get as close = as possible to dot notation or at least mimic the levels or named parameter= s of the XMLParse context, that would be optimal. =C2=A0

While working around the JSONStore shortcomings, I ran into multiple= stoppers/bugs that I=E2=80=99ve added to a test suite page here:
http://jamba= y.com/jsonstore.dna


Mike Davis<= br>

On May 6, 2020, at 6:30 AM, talk@webdna.us wrote:
Chris,
<= br>
Hi - this would be great.=C2=A0 Just two things to note:

  • Will the code work for nested arrays?
  • =
  • Will it allow for JSON that has colons - or any character - in the node= names?

My view would be that the cl= oser the WebDNA behaviour matches the behaviour of Javscript the better.

So looking at this:

For the following JSON;

var mydata =3D =C2= =A0=C2=A0
{"list": =C2=A0
=C2=A0 [ =C2=A0
=C2=A0 =C2=A0 = {"points.bean.pointsBase": =C2=A0
=C2=A0 =C2=A0 =C2=A0 [ =C2=A0<= /div>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 {"time": 2000, "caption":&= quot;caption text", duration: 5000}, =C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 {"time": 6000, "caption":"caption text", = duration: 3000} =C2=A0
<= div>
=C2=A0 =C2=A0 =C2=A0 ] =C2=A0
=C2=A0 =C2=A0 } =C2= =A0
=
=C2=A0 ] =C2=A0
}

The=C2= =A0time value in the first item of the array is extracted using:
=
var smth =3D mydata= ..list[0]["points.bean.pointsBase"][0].time;

<= /div>
I realise square brackets have special significance= =C2=A0in WebDNA, but you=C2=A0get the=C2=A0idea.

- Tom



On Wed, 6 May 2020 at 08:24, <talk@webdna.us> wrote:<= br>
Hello everyone!


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= WebDNA source tree and have it store in the DB/table in that format.

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

Next version would have this fix built-in.

- chris


> On May 1, 2020, at 06:03, talk@webdna.us wrote:
>
> Hi Mike.
>
> Ah yes, I can see why you need to do it natively.
>
> Sorry, I am out of silver bullets now :(
>
>
> Kind regards
>
> Stuart Tremain
> Pharoah Lane Software
> AUSTRALIA
> webdna@p= lsoftware.com.au
>
>
>
>
>
>
>
>> On 1 May 2020, at 12:52, talk@webdna.us wrote:
>>
>> Stuart,
>>
>> I actually use this (Tom=E2=80=99s routine) as the basis of what I= =E2=80=99m doing now.=C2=A0 The challenge I=E2=80=99m facing in my current = project is that the source JSON is quite large, and the specific data I nee= d is near the end of the data, nested in several layers of arrays.=C2=A0 Th= e parsing time is around 90 seconds.=C2=A0 I need to speed that up.
>>
>>
>> Mike Davis
>>
>>> On Apr 30, 2020, at 5:04 PM, talk@webdna.us wrote:
>>>
>>> I am not sure if this is exactly what Tom wrote, but it is wha= t I am using.
>>>
>>>
>>> [!]------------------- Pass json as JSONRESULT ---------------= --
>>> ------------------- Conversion table to strip non-breaking spa= ces -----------------
>>> [/!][TABLE name=3DjsonClean&fields=3Dfrom,to]
>>> %C2
>>> %A0
>>> [/TABLE][!]
>>>
>>> ------------------- Conversion table to facilitate spliting in= to key:value pairs -----------------
>>> [/!][TABLE name=3DjsonSplitConversions&fields=3Dfrom,to] >>> |=C2=A0 =C2=A0~~~~
>>> \"=C2=A0 ^^^^
>>> [/TABLE][!]
>>>
>>> ------------------- Convert back after spliting into key:value= pairs -----------------
>>> [/!][TABLE name=3DjsonSplitConversionsBack&fields=3Dfrom,t= o]
>>> "=C2=A0 =C2=A0
>>> ~~~~=C2=A0 =C2=A0 =C2=A0 =C2=A0 |
>>> ^^^^=C2=A0 =C2=A0 =C2=A0 =C2=A0 "
>>> [/TABLE][!]
>>>
>>> ------------------- pass one - run the conversions -----------= ------
>>> [/!][text]JSONRESULT=3D[CONVERTWORDS table=3DjsonSplitConversi= ons][convertchars table=3DjsonClean][JSONRESULT][/convertchars][/CONVERTWOR= DS][/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|{}][!]
>>>=C2=A0 =C2=A0 =C2=A0[/!][text]THISVAL=3D[GREP search=3D(,$)&= ;replace=3D][GETCHARS start=3D1&trim=3Dboth][CONVERTWORDS table=3DjsonS= plitConversionsBack][word][/CONVERTWORDS][/GETCHARS][/GREP][/TEXT][!]
>>>=C2=A0 =C2=A0 =C2=A0[/!][HIDEIF [url][THISVAL][/url]=3D][!]
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][text]JSON-= [THISVAL][/TEXT][!]
>>>=C2=A0 =C2=A0 =C2=A0[/!][/HIDEIF][!]
>>> [/!][/LISTWORDS]
>>>
>>>
>>>
>>>
>>>
>>> Kind regards
>>>
>>> Stuart Tremain
>>> Pharoah Lane Software
>>> AUSTRALIA
>>> = webdna@plsoftware.com.au
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>> On 1 May 2020, at 08:10, talk@webdna.us wrote:
>>>>
>>>> Hi Stuart,
>>>>
>>>> I appreciate your answer and have a similar kludge (creati= ve solution) for my application.=C2=A0 I was actually hoping to hear from C= hris on this, in hopes that the underlying JSON parser he is using can be p= assed dot notation in a similar way that Javascript uses to parse JSON obje= cts.
>>>>
>>>> Chris, are there any parameters we can send that are not i= n the documentation?
>>>>
>>>>
>>>>
>>>> Thanks,
>>>> Mike Davis
>>>>
>>>>> On Apr 22, 2020, at 5:05 PM, talk@webdna.us wrote:
>>>>>
>>>>> Hi MD
>>>>>
>>>>> As we don=E2=80=99t know the email address of the send= er anymore it would be nice for us to know who we are addressing.
>>>>>
>>>>> The JSONStore tag is a little confusing and what is al= so 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]][!]
>>>>>=C2=A0 =C2=A0[/!][founditems][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][text]ERRO= R-TYPE=3D[ERROR:TYPE][/TEXT][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][text]ERRO= R-MESSAGE=3D[ERROR:MESSAGE][/TEXT][!]
>>>>>=C2=A0 =C2=A0[/!][/FOUNDITEMS][!]
>>>>> [/!][/SEARCH]
>>>>>
>>>>>
>>>>> What I found to be a useful exercise was to write to m= y 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
>>>>>=C2=A0 =C2=A0+ Description: Pull out a value from a JSO= Nobject
>>>>>=C2=A0 =C2=A0+ Input:
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0JSONobject =3D (the j= son to be parsed) - required
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0JSONnode =3D (the nod= e that we want the value of) - required
>>>>>=C2=A0 =C2=A0+ usage: [WC-JSONvalue JSONobject=3D[url]&= lt;the-json-object>[/url]&JSONnode=3D<the-json-node>]
>>>>>=C2=A0 =C2=A0+Note: This function MUST receive valid JS= ONobject, make sure that there are no line breaks before beginning of JSON,= test your JSON validity here: https://jsonlint.com
>>>>> ------------------------------------------------------= ----------------
>>>>> [/!][function name=3DWC-JSONvalue][!]
>>>>>=C2=A0 =C2=A0[/!][text]rRETURN=3D[/text][!]
>>>>>=C2=A0 =C2=A0[/!][text]rJSONobject=3D[/text][!]
>>>>>=C2=A0 =C2=A0[/!][text]rJSONnode=3Dnull[/text][!]
>>>>>=C2=A0 =C2=A0[/!][showif [url][params_string][/url]^JSO= Nobject][text]rJSONobject=3D[JSONobject][/text][/showif][!]
>>>>>=C2=A0 =C2=A0[/!][showif [url][params_string][/url]^JSO= Nnode][text]rJSONnode=3D[JSONnode][/text][/showif][!]
>>>>>=C2=A0 =C2=A0--------------------=C2=A0 Store the JSONo= bject in a table=C2=A0 --------------------
>>>>>=C2=A0 =C2=A0[/!][JSONstore table=3DJSONdata][rJSONobje= ct][/jsonstore][!]
>>>>>=C2=A0 =C2=A0--------------------=C2=A0 Search the tabl= e=C2=A0 --------------------
>>>>>=C2=A0 =C2=A0[/!][SEARCH table=3DJSONdata&ne[rJSONn= ode]data=3Dfind_all][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][founditem= s][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0[/!][text]rRETURN=3D[interpret][[rJSONnode]][/interpret][/tex= t][!]
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[/!][/foundite= ms][!]
>>>>>=C2=A0 =C2=A0[/!][/SEARCH][!]
>>>>>=C2=A0 =C2=A0--------------------=C2=A0 Return the valu= e=C2=A0 --------------------
>>>>>=C2=A0 =C2=A0[/!][return][rRETURN][/return][!]
>>>>> [/!][/function]
>>>>>
>>>>> You man need to play around with the json object to en= sure 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:
>>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> I=E2=80=99m looking at the docs for the JSONStore = context.=C2=A0 It seems that either the context is lacking functionality or= the documentation is.=C2=A0 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.=C2=A0 S= eems like there should be a way to use dot notation to get at nested data w= ithout storing each array in a temp db, then reparsing each level with JSON= Store into another temp db, etc.
>>>>>>
>>>>>> For example:=C2=A0 I want to iterate the data sets= in the =E2=80=9Cresults=E2=80=9D array into a database.=C2=A0 I can use JS= ONStore to populate a table with the fields: page, total_results, total_pag= es and results.=C2=A0 =C2=A0Then I can search that table and run JSONStore = on the results field using another database, but this gets a bit complicate= d 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?
>>>>>>
>>>>>> {
>>>>>>=C2=A0 =C2=A0 "page":1,
>>>>>>=C2=A0 =C2=A0 "total_results":21,
>>>>>>=C2=A0 =C2=A0 "total_pages":1,
>>>>>>=C2=A0 =C2=A0 "results=E2=80=9D:[
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity":1.936,"vote_count=E2=80=9D:7
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:2.732,"vote_count=E2=80=9D:23
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:12.088,"vote_count=E2=80=9D:75
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:53.221,"vote_count=E2=80=9D:5
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:7.001,"vote_count=E2=80=9D:31
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 },
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "pop= ularity=E2=80=9D:22.223,"vote_count=E2=80=9D:88
>>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 }
>>>>>>=C2=A0 =C2=A0 ]
>>>>>> }
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> MD------------------------------------------------= ---------
>>>>>> This message is sent to you because you are subscr= ibed to
>>>>>> the mailing list talk@webdna.us
>>>>>> To unsubscribe, E-mail to: talk-leave@webdna.us
>>>>>> archives: http://www.webdna.us/pag= e.dna?numero=3D55
>>>>>> Bug Reporting: support@webdna.us
>>>>>
>>>>> ------------------------------------------------------= --- This message is sent to you because you are subscribed to the mailing l= ist talk@webdna.us = To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.w= ebdna.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 u= nsubscribe, 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 unsub= scribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.us/p= age.dna?numero=3D55 Bug Reporting: support@webdna.us
>>
>> --------------------------------------------------------- This mes= sage is sent to you because you are subscribed to the mailing list talk@webdna.us To unsubscr= ibe, E-mail to: t= alk-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-l= eave@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@w= ebdna.us
To unsubscribe, E-mail to: talk-leave@webdna.us
archives: http://www.webdna.us/page.dna?numero=3D55
Bug Reporting: suppo= rt@webdna.us
--------------------------------------------------------- This message is sent to you because you are subscribed to the mailing list talk@w= ebdna.us To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.us/page.dna?numero=3D55 Bug Reporting: suppo= rt@webdna.us

--------------------------------------------------------- This message is sent to you because you are subscribed to the mailing list talk@w= ebdna.us To unsubscribe, E-mail to: talk-leave@webdna.us archives: http://www.webdna.us/page.dna?numero=3D55 Bug Reporting: suppo= rt@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 --0000000000005bc7a705a50a9d61-- . Tom Duke

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:

Who is doing sign-ups-got it (1998) [shownext max=?] armed (1997) can WC render sites out? (1997) [WebDNA] Talklist Archive & Twitter (2009) Online reference (1997) Help! WebCat2 bug (1997) Search Via a drop down menu? (2000) Bad suffix error (1997) I think WebDNA-Talk died ... :( (1997) OLD ORDERS (1998) WebSTAR 2.1 freezes my Mac (1997) Multiple prices (1997) Showing unopened cart (1997) WebCatalog 4.0.1 has been released! (2000) [OT] Imagemagick (2004) PCS Frames (1997) Help with Shipping Costs (1997) Changing buttons (1999) verify online (1997) quick setheader questions... (2000)