MQL4 JSON Parser Library
Info
The MQL4 JSON Parser Library is a Library for MetaTrader 4 that mql4 json parserthis tool parses mql4 strings containing json code, creating a `jsonvalue` object that allows retrieval of fields within the json structure. It also includes a `jsoniterator` class for looping over object keys.
Usage
This tool is typically used for enhancing chart analysis and decision making.
Platform
This Library works exclusively on MetaTrader 4 (both build 600+ and newer versions).
Setup
Place the downloaded file in MQL4/Libraries folder via File ? Open Data Folder in MetaTrader 4.
How to Install and Use MQL4 JSON Parser Library
1. Storage: Place library files in the MQL/Libraries directory to ensure they are accessible to your projects.
2. Implementation: Include the library in your code using the #import directive, ensuring you match the exact function names and parameters.
3. Compilation: Ensure the library is present in the directory before you compile your main EA or script, as the compiler links them during this phase.
4. Management: Keep libraries organized in sub-folders if you manage many custom functions to maintain a clean project structure.
Frequently Asked Questions
Q: What is a library file used for? A: Libraries store reusable code modules, allowing you to centralize common logic used by multiple EAs or indicators.
Q: Is a library executable? A: No, libraries are non-executable files containing functions; they must be imported into an EA, indicator, or script to function.
Q: Can I update a library while the platform is running? A: You should compile your EA or script after updating a library to ensure the latest code changes are integrated.
What this tool does
MQL4 JSON ParserThis tool parses MQL4 strings containing JSON code, creating a `jsonvalue` object that allows retrieval of fields within the JSON structure.
Typical Use Case
This Library excels in automated trading and technical analysis on MetaTrader 4.
Compatible Platform & Setup
This Library works on MetaTrader 4. Place the file in the MQL4/Libraries folder and restart the terminal.
Description & Settings
Related: Simple Unit Test Include Library for MQL4 - another powerful library for MetaTrader 4 traders.
MQL4 JSON ParserThis tool parses MQL4 strings containing JSON code, creating a `jsonvalue` object that allows retrieval of fields within the JSON structure. It also includes a `jsoniterator` class for looping over object keys.
Also recommended: mt4r for MQL4: A Compatibility Update - similar library with strong performance on MetaTrader 4.
The parser utilizes a simple recursive descent approach and requires the `hash` class.
Note: Parsing of unicode escaped characters is not yet implemented. The codebase version may not be the most recent. The latest version can be found here.
Documentation:
jsonparser class
jsonvalue class
Example:
#include "hash.mqh" #include "json.mqh" string s = "{ \"firstname\": \"john\", \"lastname\": \"smith\", \"age\": 25, "+"\"address\": { \"streetaddress\": \"21 2nd street\", \"city\": \"new york\", \"state\": \"ny\", \"postalcode\": \"10021\" },"+"\"phonenumber\": [ { \"type\": \"home\", \"number\": \"212 555-1234\" }, { \"type\": \"fax\", \"number\": \"646 555-4567\" } ],"+"\"gender\":{ \"type\":\"male\" } }"; jsonparser *parser = new jsonparser(); jsonvalue *jv = parser.parse(s); if (jv == null) { print("error:"+(string)parser.geterrorcode()+parser.geterrormessage()); } else { print("parsed:"+jv.tostring()); if (jv.isobject()) { jsonobject *jo = jv; // direct access - will throw null pointer if wrong getter used. print("firstname:" + jo.getstring("firstname")); print("city:" + jo.getobject("address").getstring("city")); print("phone:" + jo.getarray("phonenumber").getobject(0).getstring("number")); // safe access in case json data is missing or different. if (jo.getstring("firstname",s) ) print("firstname = "+s); // loop over object keys jsoniterator *it = new jsoniterator(jo); for( ; it.hasnext() ; it.next()) { print("loop:"+it.key()+" = "+it.val().tostring()); } delete it; } delete jv; } delete parser;
The latest version can also be found here.
You may also like: MQL4 MySQL Connector for Builds 600+ - excellent alternative for library users on MetaTrader 4.
Source Code
#ifndef ydrol_json_mqh
#define ydrol_json_mqh
/*
todo the constants true|false|null could be represented as fixed objects.
to do this the deleting of _hash and _array must skip these objects.
todo test null
todo parse unicode escape
*/
/*
see json_demo for examples.
.......
⚠ Limitations & Risk Warning
- This tool is provided for educational and testing purposes only.
- Past performance does not guarantee future results.
- Trading involves substantial risk of loss. Use on a demo account first.
- Results may vary depending on market conditions, broker, and settings.
- We recommend thorough backtesting and forward testing before using with real funds.