Nice work! Thanks!

Doru

> On Nov 22, 2018, at 5:56 PM, Norbert Hartl <norb...@hartl.name> wrote:
> 
> JSONSchema
> ===========
> 
> This is an implementation of JSON Schema for the pharo language. It is used 
> to define the structure and values of a JSON string and to validate it. The 
> schema itself can be externalized for being consumed by a third party.
> 
> I like to announce the availability of a JSON schema implementation for 
> pharo. As part of my implementation of OpenAPI (which is to be released a bit 
> later) I factored out the JSON schema part into its own repository because I 
> think it is useful. I release it even it is not really finished. Code is 
> mostly undocumented and a lot of features are missing from the full spec. I 
> will improve it slowly and add features as I need them or they being requested
> 
> Hope you like it!
> 
> Norbert 
> 
> ====
> 
> The documentation so far (from https://github.com/zweidenker/JSONSchema)
> 
> It can be loaded by downloading it in pharo via
> 
>   Metacello new
>     repository: 'github://zweidenker/JSONSchema';
>     baseline: #JSONSchema;
>     load
> 
> Defining a schema
> -------------------------
> 
> These are the expression to create a schema model inside pharo.
> 
> schema := {
>   #name -> JSONSchema string.
>   #dateAndTime -> (JSONSchema stringWithFormat: 'date-time').
>   #numberOfPets -> JSONSchema number } asJSONSchema.
> 
> 
> defines as schema that can parse the following JSON:
> 
> jsonString := '{
>   "name" : "John Doe",
>   "dateAndTime" : "1970-01-01T14:00:00",
>   "numberOfPets" : 3
> }'.
> 
> Reading/Writing a value using a schema
> ------------------------------------------------------
> 
> To parse the value from JSON we only need to invoke:
> 
> value := schema read: jsonString
> 
> The object in value will have name as a string, dateAndTime as a DateAndTime 
> object and numberOfPets as a SmallInteger object.
> 
> The schema can also be used to write out the value as JSON. This is 
> especially useful if we want to ensure that only valid JSON is written. For 
> this invoke
> 
> jsonString := schema write: value.
> 
> Serialize/Materialize a schema
> ----------------------------------------
> 
> Addtionally to reading and writing objects a schema can be serialized to 
> string.
> 
> schemaString := NeoJSONWriter toStringPretty: schema.
> 
> gives
> 
> {
>       "type" : "object",
>       "properties" : {
>               "name" : {
>                       "type" : "string"
>               },
>               "numberOfPets" : {
>                       "type" : "number"
>               },
>               "dateAndTime" : {
>                       "type" : "string",
>                       "format" : "date-time"
>               }
>       }
> }
> 
> 
> If we would get a schema as string we can instantiate by invoking
> 
> schema := JSONSchema fromString: schemaString.
> 
> Nested schemas
> -----------------------
> 
> Schemas can be nested in any depth. And it can be specified by using the 
> literal Array syntax.
> 
> schema := {
>   #name -> JSONSchema string.
>   #address -> {
>     #street -> JSONSchema string.
>     #number -> JSONSchema number
>   } } asJSONSchema
> 
> Constraints
> ---------------
> 
> JSON Schema has a defined set of constraints that can be specified. E.g. for 
> a number the inerval of the value can be specified by
> 
> numberSchema := JSONSchema number.
> numberSchema interval
>   minimum: 1;
>   exclusiveMaximum: 100
> 
> constraining the number value to be greater or equal to 1 and smaller than 
> 100.
> 

--
www.feenk.com

"What is more important: To be happy, or to make happy?"


Reply via email to