I'm coming in this late and I'm confused. I made a JSON library a couple years ago (not an external) and I have been encouraged to make it available, but with JSON now being built-in, I didn't bother. Now, there is MergJSON?
> On Jun 29, 2016, at 9:06 AM, Mark Waddingham <m...@livecode.com> wrote: > > On 2016-06-29 16:58, Lagi Pittas wrote: >> Hi Mark, >> Thanks for the replies. But your second response I don't understand and the >> whole point of what I was getting at. >> "I suppose there could be an option to choose a 'number of decimal places' >> option passed to the library - however, you will then potentially lose >> information in your numbers. Therefore, it is probably better to do the >> rounding in script after loading the JSON file." >> If "reals" are returned as strings anyway then if the real says 2.30 how >> can I be losing any precision if 2.30 is what's in the file?. The option >> though would be a good idea but in the calling routine to MergJSON.. If it >> is left blank or false then it uses the current setting of number format >> or if there is a string then that will be the format it uses. > > Ah - this is the critical point... > > MergJSON uses a C library which converts the text of a JSON input into a tree > of values - these values are arrays, objects, numbers, strings, booleans etc. > i.e. The output of this library is then processed by the external to convert > it to a LiveCode array and string values... > > This means that the external gets numbers from the JSON as IEEE754 doubles, > and then has to format them for return as strings. As the original string has > already been converted to a number at this point, the external must format > the numbers with enough decimal places so that you don't lose any > information. Hence why you are probably best off processing the output of the > external in LiveCode Script, rounding any numbers you know need to be rounded. > >> If I look at the Arrays using the variable display in the debugger they are >> all showing as 2 decimals so I would expect them to export in the same >> format - or am I again missing something about the debugger? > >> If added global variable xx in the debugger with value 1.3456 and that is >> how it shows and ll 2 decimal place prices still show the same so LC >> "knows" how I want to see them. > > The debugger displayed values using the numberFormat settings - usually 6 > decimal places. > > However, an important thing to remember about LiveCode Script is that if > something is a string, then it will remain a string. You only get actually > numbers internally when you perform operations on values which need to be > numbers. So: > > put 1.43858239402803492304 > > will display: > > 1.43858239402803492304 > > But: > > put 1.43858239402803492304 + 0 > > will display: > > 1.438582 > > As numbers are rounded using numberFormat when converted to strings. > > Warmest Regards, > > Mark. > > -- > Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/ > LiveCode: Everyone can create apps > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode > _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode