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 <[email protected]> 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 <[email protected]>
> 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
>
>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture