[WIZwiki_W7500ECO] HTTPClient with JSON parser

JSON is easy for machines to parse and generate which is based on a subset of the JavaScript Programming Language. Currently many Web Services allow to access data in JSON format. However, JSON parser is too big for low-end device as like a ARMmbed platform which has limited-resource. This post shows how to use HTTPClient parse Json data in ARMmbed platform.

Preparation materials

  1. Software

* JSON Parser: MbedJSONValue libs
* Ethernet Networking : WIZnetInterface
* HTTP Server with JSON : Fraka6 Blog – No Free Lunch: The simplest python server example 😉
2. Hardware
* WIZwiki-W7500ECONET: WIZwiki-W7500 + ECO Shield Ethernet

Simplest python JSON server on PC

def run(port=8000): #set port

print('http server is starting...')
#ip and port of server
#server_address = ('', port)
server_address = ('', port)#set port
httpd = HTTPServer(server_address, Handler)
print('http server is running...listening on port %s' %port)
  • Modify JSON form in do_GET handler
#handle GET command
def do_GET(self):
if format == 'html':
self.send_header("Content-type", "text/plain")
elif format == 'json':
self.request.sendall(json.dumps({'name':'John snow', 'age': 30, 'gender':'male'}))
self.request.sendall("%s\t%s" %('path', self.path))

Make main.cc

// Enter a MAC address for your controller below.
uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};

printf("initializing Ethernet\r\n");
// initializing MAC address
eth.init(mac_addr, "", "", "");

// Check Ethenret Link
if(eth.link() == true) printf("- Ethernet PHY Link-Done \r\n");
else printf("- Ethernet PHY Link- Fail\r\n");

// Start Ethernet connecting: Trying to get an IP address using DHCP
if (eth.connect() 0) {
http_rx_msg[returnCode] = '\0';
printf("Received %d chars from server:\n\r%s\n", returnCode, http_rx_msg);
  • Do JSON parse
parse(parser, http_rx_msg);
  • Output the parsed data
// parsing "string" in string type
printf("name =%s\r\n" , parser["name"].get().c_str());
// parsing "age" in integer type
printf("age =%d\r\n" , parser["age"].get());
// parsing "gender" in string type
printf("gender =%s\r\n" , parser["gender"].get().c_str());

Demo. HTTPClient with JSON parser

  1. Network config.
  2. Confirm Received JSON data
  3. Print-out the pasing data

Packet Capture

  1. TCP-Connection
  2. Target board sends GET Form to simple python JSON server
  3. simple python JSON server sends JSON data to Target board