Hi All, Please note that if an element contains attributes or properties we are considering it as an object and if it only holds a value then it will be considered as a primitive type
eg: <person> <firstName>sample</firstName> <phone>0112655655</phone> <phone >0112655656</phone> </person> phone will treat as a primitive array and the schema would be as follows { "$schema": "http://json-schema.org/draft-04/schema#", "title": "person", "id": "http://wso2jsonschema.org", "type": "object", "properties": { "firstName": { "id": "http://wso2jsonschema.org/firstName", "type": "string" }, "phone": { "id": "http://wso2jsonschema.org/phone", "type": "array", "items": [{ *"id": "http://wso2jsonschema.org/phone/phone <http://wso2jsonschema.org/phone/phone>",* *"type" :"number"* }] } } } <person> <firstName>sample</firstName> <phone primary="true">071655339</phone> </person> Since phone has an attribute, phone will be treated as an object and the schema would be as follows { "$schema": "http://json-schema.org/draft-04/schema#", "title": "person", "id": "http://wso2jsonschema.org", "type": "object", "properties": { "firstName": { "id": "http://wso2jsonschema.org/firstName", "type": "string" }, "phone": { "id": "http://wso2jsonschema.org/phone", *"type":"object",* *"value":{* * "type": "number"* *}* "attributes": { "primary": { "id": "http://wso2jsonschema.org/primary", "type": "boolean" } } } } } Thanks, Sohani Sohani Weerasinghe Software Engineer WSO2, Inc: http://wso2.com Mobile : +94 716439774 Blog :http://christinetechtips.blogspot.com/ Twitter : https://twitter.com/sohanichristine On Tue, Apr 12, 2016 at 4:51 PM, Susinda Perera <susi...@wso2.com> wrote: > Implemented above scenarios (also mentioned in [1]) in schema generation. > > [1] - > https://docs.google.com/a/wso2.com/document/d/1s820PSZlhRYq8kGc9GFwJaMcpQX8X4jz9sFvo1bK6rI/edit?usp=sharing > > > On Tue, Apr 12, 2016 at 3:06 PM, Sohani Weerasinghe <soh...@wso2.com> > wrote: > >> Hi All, >> >> Please find below details on the support provided in defining the data >> types for objects( when holding values) in JSON schema. >> >> Problem: >> >> When an object array or a primitive array or an object holds a value, >> there should be a way to define the data type of that value in the schema. >> >> <h:person xmlns:h="http://www.w3.org/TR/html4/"> >> <firstName>sample</firstName> >> <phone primary="true">*0717777771* <0717777771><ext> >> 01</ext></phone> >> <phone primary="false">*0112655655* <0112655655><ext>01</ext></phone> >> </h:person> >> >> Solution: >> >> We have introduced an object called "value" as below in defining the data >> type >> >> "value":{ >> "type": "number" >> } >> >> 1. An object array with attributes, properties and values >> >> <h:person xmlns:h="http://www.w3.org/TR/html4/"> >> <firstName>sample</firstName> >> <phone primary="false"> >> 0112655655 >> <ext>01</ext> >> </phone> >> <phone primary="false"> >> 0112655655 >> <ext>01</ext> >> </phone> >> </h:person> >> >> { >> "$schema":"http://json-schema.org/draft-04/schema#", >> "title":"person", >> "id":"http://wso2jsonschema.org", >> "type":"object", >> "properties":{ >> "firstName":{ >> "id":"http://wso2jsonschema.org/firstName", >> "type":"string" >> }, >> "phone":{ >> "id":"http://wso2jsonschema.org/phone", >> "type":"array", >> "items":[ >> { >> "id":"http://wso2jsonschema.org/phone/0", >> "type":"object", >> * "value":{ * >> * "type":"number"* >> * },* >> "properties":{ >> "ext":{ >> "id":"http://wso2jsonschema.org/phone/0/ext", >> "type":"number" >> } >> }, >> "attributes":{ >> "primary":{ >> "id":"http://wso2jsonschema.org/phone/0/primary", >> "type":"boolean" >> } >> } >> } >> ] >> } >> } >> } >> >> 2. Primitive array with values >> >> <person> >> <firstName>sample</firstName> >> <phone>0112655655</phone> >> <phone>0112655656</phone> >> </person> >> >> { >> "$schema":"http://json-schema.org/draft-04/schema#", >> "title":"person", >> "id":"http://wso2jsonschema.org", >> "type":"object", >> "properties":{ >> "firstName":{ >> "id":"http://wso2jsonschema.org/firstName", >> "type":"string" >> }, >> "phone":{ >> "id":"http://wso2jsonschema.org/phone", >> "type":"array", >> "items":[ >> { >> * "id":"http://wso2jsonschema.org/phone/phone >> <http://wso2jsonschema.org/phone/phone>",* >> * "type":"number"* >> } >> ] >> } >> } >> } >> >> 3. Object with values >> >> <person> >> <firstName>sample</firstName> >> <phone primary="true">071655339</phone> >> </person> >> >> { >> "$schema":"http://json-schema.org/draft-04/schema#", >> "title":"person", >> "id":"http://wso2jsonschema.org", >> "type":"object", >> "properties":{ >> "firstName":{ >> "id":"http://wso2jsonschema.org/firstName", >> "type":"string" >> }, >> "phone":{ >> "id":"http://wso2jsonschema.org/phone", >> "type":"object", >> * "value":{ * >> * "type":"number"* >> * },* >> "attributes":{ >> "primary":{ >> "id":"http://wso2jsonschema.org/primary", >> "type":"boolean" >> } >> } >> } >> } >> >> Thanks, >> Sohani >> Sohani Weerasinghe >> Software Engineer >> WSO2, Inc: http://wso2.com >> >> Mobile : +94 716439774 >> Blog :http://christinetechtips.blogspot.com/ >> Twitter : https://twitter.com/sohanichristine >> > > > > -- > *Susinda Perera* > Software Engineer > B.Sc.(Eng), M.Sc(Computer Science), AMIE(SL) > Mobile:(+94)716049075 > Blog: susinda.blogspot.com > WSO2 Inc. http://wso2.com/ > Tel : 94 11 214 5345 Fax :94 11 2145300 > >
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev