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.

  1. Know where your project files are.
  2. Grab DBXRay here : ftp://ftp.stureaps.dk/
  3. Choose the workspace using workspace selector
  4. 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'
});