Introduction to JSON in Dataflex

Introduction to JSON in Dataflex

Introduction to JSON in DataFlex Harm Wibier Data Access Worldwide 1 JavaScript Object Notation • JSON is a lightweight data-interchange format. • JSON is a text format. • JSON is completely language independent. • JSON is based on a subset of JavaScript. • JSON is easy for humans tor read and write. • JSON is easy for machines parse and generate. • JSON is familiar to programmers of C-family languages like C++, Java, Phyton, JavaScript. 2 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 The JSON Format • Objects { • Arrays "name" : "John", "details" : { • Strings "age" : 31, • Booleans "male" : true • Numbers }, "ratings" : [ 8, 7.5, 8, 5.5 ] } 3 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 JSON XML { <?xml version="1.0" encoding="UTF-8" ?> "name" : "John", <student> "details" : { <name>John</name> "age" : 31, <details> "male" : true, <age>31</age> }, <male>true</male> "ratings" : [ </details> 8, <ratings> 7.5, <rate>8</rate> 8, <rate>7.5</rate> 5.5 <rate>8</rate> ] <rate>5.5</rate> } </ratings> </student> 4 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 JSON XML • Human readable • Human readable • Hierachical • Hierachical • Quicker • Better standardized – Shorter • More extensive • No end tags – Attributes – Easier to parse – Namespaces • Can be evaluated in some languges – XML Schema • Has arrays – XSL – XPath • Lighter and native to JavaScript • Heavier but wider supported 5 Usage • Interchange data – REST JSON API’s – JavaScript WebApps • Like the WebApp Framework • Store data – Serialize data from memory 6 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 JSON in DataFlex http://localhost/WebOrder_19/CustomerAndOrderInfo.wso • Web Services – Built in JSON support – Every DataFlex Web-Service can be called using JSON – JSON parsing & generation happens in ISAPI handler • cJsonObject – Manually parse & generate JSON – Serialize / deserialize structs and arrays • cJsonHttpTransfer – Communicate with JSON Services 7 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 cJsonObject • Parse JSON • Generate JSON • Manipulate JSON like a DOM structure • Convert DataFlex structs and arrays into JSON • Convert JSON into DataFlex structs and arrays 8 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 Parsing Examples 9 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 Handle parsing errors • ParseString returns false indicating error • ReportParseError – Generates a DataFlex error Get ParseString of hoJson sData to bSuccess • psParseError If (bSuccess) Begin – Provides the error text // Do your thing! End Else Begin // Handle errors how you prefer Send ReportParseError of hoJson End Send Destroy of hoJson 10 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 Struct tStudentDetail JSON <> Struct Integer age Boolean male { End_Struct "name": "Troy Umstead", "details": { Struct tStudent "age": 20, String name "male": true tStudentDetail details }, Number[] ratings "ratings": [ End_Struct 2.3, 5.2, 4.0, 9.4 ] } 11 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 Structs with JSON • Parse JSON into Struct – Parse JSON using cJsonObject – Use JsonToDataType function • Fills a struct using JSON data – pbRequireAllMembers • If set to false missing members will just be ignored and are left empty • Serialize Struct to JSON – Use DataTypeToJson procedure • Generates JSON objects based on the struct data – Stringify into a JSON string 12 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 Struct Examples 13 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 API Overview • cJsonObject – ParseString, ParseUtf8 • Parses a JSON string into the JSON DOM – Stringify, StringifyUtf8 • Generates the JSON string from the JSON DOM – DataTypeToJson, JsonToDataType • Convert JSON DOM to structs / arrays – Member, MemberByIndex, MemberCount, MemberNameByIndex, HasMember, JsonType • Traverse JSON DOM – AddMember, SetMember, SetMemberValue, InitializeJsonType • Manipulate JSON 14 Working with JSON by John Tuohy and Harm Wibier 2017/04/05 ParseUtf8 and StringifyUtf8 • UChar array as parameter / argument – No argument-size limitations – Supported by Read_Block, Write_Block, Set_Field_Value, Get_Field_Value, Field_Current_UCAValue • Expected encoding is UTF-8 – Default format when transmitting JSON object the web • Convert manually if needed UChar[] uData – ConvertUCharArray Direct_Input "FileWithJsonData.json" of cChartTranslate Read_Block uData -1 Close_Input Get Create (RefClass(cJsonObject)) to hoJsonDom Get ParseUtf8 of hoJsonDom uData to bParsed 15 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 peWhitespace • jpWhitespace_Plain {"name":"John","details":{"age":31,"male":true},"ratings":[8,7.5,8]} • jpWhitespace_Spaced { "name": "John", "details": { "age": 31, "male": true }, "ratings": [ 8, 7.5, 8 ] } • jpWhitespace_Pretty { "name": "John", "details": { "age": 31, "male": true }, "ratings": [ 8, 7.5, 8 ] 16 Working with JSON by John Tuohy and Harm Wibier 2017/04/05 } cJsonObject Instances • Multiple instances of the same JSON object are possible • Internally reference counting is used – Once a handle is obtained it will point to that piece of JSON until it is destroyed or reinitialized • Obtaining as in Create, Member, MemberByIndex • Destroying as in Destroy, RemoveMember • Reinitializing means calling Parse, ParseUtf8, DataTypeToJson or InitializeJsonType • One piece of JSON could part of two structures – AddMember and SetMember work by reference (they do not clone the objects) • Every JSON object needs to be destroyed individually 17 Working with JSON by John Tuohy and Harm Wibier 2017/04/05 cJsonHttpTransfer • Easily communicate with Restfull JSON Services • HTTP Verbs: – POST, GET, DELETE, PUT, PATCH • Directly parses into cJsonObject John Tuohy will discuss this tomorrow in depth… 18 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018 Thank you for your time Have a nice day! 19 Introduction to JSON in DataFlex by Harm Wibier 3/9/2018.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    19 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us