std.json

Ali Çehreli acehreli at yahoo.com
Mon Mar 26 00:14:49 PDT 2012


On 03/25/2012 08:26 AM, AaronP wrote:
> Could I get a "hello, world" example of parsing json? The docs look
> simple enough, but I could still use an example.

For what it's worth, I've just sent the following program to a friend 
before seeing this thread.

1) Save this sample text to a file named "json_file"

{
   "employees": [
      { "firstName":"John" , "lastName":"Doe" },
      { "firstName":"Anna" , "lastName":"Smith" },
      { "firstName":"Peter" , "lastName":"Jones" }
   ]
}

2) The following program makes struct Employee objects from that file:

import std.stdio;
import std.json;
import std.conv;
import std.file;

struct Employee
{
     string firstName;
     string lastName;
}

void main()
{
     // Assumes UTF-8 file
     auto content = to!string(read("json_file"));

     JSONValue[string] document = parseJSON(content).object;
     JSONValue[] employees = document["employees"].array;

     foreach (employeeJson; employees) {
         JSONValue[string] employee = employeeJson.object;

         string firstName = employee["firstName"].str;
         string lastName = employee["lastName"].str;

         auto e = Employee(firstName, lastName);
         writeln("Constructed: ", e);
     }
}

The output of the program:

Constructed: Employee("John", "Doe")
Constructed: Employee("Anna", "Smith")
Constructed: Employee("Peter", "Jones")

Ali


More information about the Digitalmars-d-learn mailing list