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'
});