RE: Type Coercion question

On Wednesday, May 01, 2013 6:37 AM, Rob Hoare wrote:
> On Sun, Apr 28, 2013, at 01:41 AM, Markus Lanthaler wrote:
> 
> > Please keep in mind however that type coercion just assigns
> > datatypes, it does not do any type conversions or transformations at
> all.
> 
> That's the bit I wasn't really understanding.  I read "coercion" as
> meaning "forcing" (as that's what the word means).  In reality it seems
> to be a "Type Hint" instead, which is useful, but different.

Think of is as an unchecked type cast (a reinterpret_cast in C++).


> > Type coercion doesn't validate the values. It assumes
> > you know what you are doing.
> 
> Or, to put it another way, it assumes you are originating the data.
>  Not
> really useful for data from an external source until it has been
> validated unfortunately.

You have to validate external data anyway.


> > So you just walk over your JSON tree and whenever you find an object
> having
> > both an @value and @type member, you would look in your
> datatype/service
> > map and run the transformation.
> >
> > It might also make sense to have a look at Antonio's JSON-LD macros:
> > https://github.com/antoniogarrote/json-ld-macros
> >
> > AFAICT they are not intended for the transformations that you need
> but
> > might provide some code that you could reuse
> 
> That is actually very close to what I'm trying to do.  The way it uses
> another json document to specify the "transformation" is interesting.
> After a first read of the documentation I may simply need to add
> another
> function (or set of functions) using the @declare. The rest of what it
> does is very useful as well (for renaming keys, adding namespaces,
> etc).
>  I'll try out some ideas using it later this week.
> 
> Thanks Markus (and Antonio), you've been very helpful and its become
> clearer to me what is possible.  I'll let you know if/when I have a
> working example online.

Great! Thanks


Cheers,
Markus



--
Markus Lanthaler
@markuslanthaler

Received on Wednesday, 1 May 2013 12:27:04 UTC