EnablingJSONIN: Difference between revisions

From DataFlex Wiki
Jump to navigationJump to search
m (Created page with "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 wor...")
 
mNo edit summary
Line 43: Line 43:


<code lang="vdf">
<code lang="vdf">
Struct meta
  Struct meta
     Boolean success
     Boolean success
     String msg  
     String msg    
End_Struct
  End_Struct


Struct tReview
  Struct tReview
     Integer id
     Integer id
     Integer productId
     Integer productId
     String comment
     String comment
     String author
     String author
End_Struct
  End_Struct


Struct tProduct
  Struct tProduct
     Integer id
     Integer id
     String name
     String name
     String company     
     String company     
     tReview[] reviews
     tReview[] reviews
End_Struct
  End_Struct


Struct tAddProductRequest
  Struct tAddProductRequest
     String token
     String token
     tProduct product
     tProduct product
End_Struct
  End_Struct


Struct tGetProductResponse
  Struct tGetProductResponse
     Meta meta
     Meta meta
     tProduct product
     tProduct product
End_Struct
  End_Struct


Struct tRequest
  Struct tRequest
     String token
     String token
     Integer identifier
     Integer identifier
End_Struct
  End_Struct


Struct tResponse
  Struct tResponse
     Meta meta
     Meta meta
     Integer id   
     Integer id   
End_Struct
  End_Struct
 
</code>
 
Then you will be able to communicate with ExtJS 4 using the following model definition:
 
<code lang="javascript">
  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'
});
 
</code>
 


</pre>


You will be able to send tAddProductRequest as JSON from the client side as the request parameter
You will be able to send tAddProductRequest as JSON from the client side as the request parameter

Revision as of 14:26, 15 April 2011

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:

 ...

 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

Then you will be able to communicate with ExtJS 4 using 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'
});


You will be able to send tAddProductRequest as JSON from the client side as the request parameter