EnablingJSONIN
From DataFlex Wiki
Jump to navigationJump to search
EnablingJSONIN page under construction
Here's how to generate there required files for enabling JSON in your webservice.
- Know where your project files are.
- Grab DBXRay here : ftp://ftp.stureaps.dk/
- Choose the workspace using workspace selector
- select Functions|Generate Struct Packages for project
Now you can write code like the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ... Use StructPkg\Struct_tReview . pkg Use StructPkg\Struct_tProduct . pkg Use StructPkg\Struct_tAddProductRequest . pkg Use Product . wo Use Structures . pkg Object oProductJSON is a cWebService ... Procedure CreateProduct String Request tAddProductRequest stRequest tJsonNode stJson If (StringToDoc(oJsonFunctions, &request, &stJson)) Begin Send JsonToStruct of oStructHandler_tAddProductRequest stJson (&stRequest) Function_Return (CreateProduct(oProduct, stRequest)) End Else Begin Error 666 "String parameter does not contain a valid JSON object" End End_Procedure |
oProduct is a traditional webservice using SOAP.
Now . Given the following structure definitions:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | Struct meta Boolean success String msg End_Struct Struct tReview Integer id Integer productId String comment String author End_Struct Struct tProduct Integer id String name String company tReview[] reviews End_Struct Struct tAddProductRequest String token tProduct product End_Struct Struct tGetProductResponse Meta meta tProduct product End_Struct Struct tRequest String token Integer identifier End_Struct Struct tResponse Meta meta Integer id End_Struct |
You will be able to send tAddProductRequest as JSON from the client side as the request parameter
To parse the incoming request from ExtJS 4 you could use the following model definition:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Ext.regModel( 'Acme.Product' , { idProperty: 'id' , successProperty: 'meta.success' , fields: [ {name: 'id' , type: 'int' }, {name: "name" , type: "string" }, {name: "company" , type: "string" } ], hasMany: {model: 'Acme.Review' , name: 'reviews' , associationKey: 'reviews' } }); Ext.regModel( 'Acme.Review' , { idProperty: 'id' , fields: [ 'id' , 'product_id' , 'comment' , 'author' ], belongsTo: 'Acme.Product' }); |