EnablingJSONIN
From DataFlex Wiki
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:
...
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:
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:
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'
});