EnablingJSONIN: Difference between revisions

From DataFlex Wiki
Jump to navigationJump to search
mNo edit summary
m (fix code tags, add category)
 
Line 12: Line 12:
Now you can write code like the following:
Now you can write code like the following:


<code lang="vdf">
<source lang="dataflex">
   ...
   ...
   
   
Line 38: Line 38:
         End
         End
     End_Procedure
     End_Procedure
</code>
</source>


oProduct is a traditional webservice using SOAP.
oProduct is a traditional webservice using SOAP.
Line 45: Line 45:
Now . Given the following structure definitions:
Now . Given the following structure definitions:


<code lang="vdf">
<source lang="dataflex">
   Struct meta
   Struct meta
     Boolean success
     Boolean success
Line 85: Line 85:
   End_Struct
   End_Struct


</code>
</source>


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
Line 92: Line 92:
To parse the incoming request from  ExtJS 4  you could use the following model definition:
To parse the incoming request from  ExtJS 4  you could use the following model definition:


<code lang="javascript">
<source lang="javascript">
   Ext.regModel('Acme.Product', {
   Ext.regModel('Acme.Product', {
     idProperty: 'id',
     idProperty: 'id',
Line 115: Line 115:
  });
  });


</code>
</source>
 
[[Category:JSON]]

Latest revision as of 13:08, 13 August 2019

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:

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