April 24, 2014
I have a json string saved in a file ( example of json tweeter answer: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline ). I am trying to read the whole json answer and print specific data ("created_at", "retweet_count", ..) . I am new at D Programming language and i was wondering if someone can help me or post some example that show how to parse json strings using std.json library. Thanks in advance.
April 24, 2014
On Thursday, 24 April 2014 at 12:17:42 UTC, Nicolas wrote:
> I have a json string saved in a file ( example of json tweeter answer: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline ). I am trying to read the whole json answer and print specific data ("created_at", "retweet_count", ..) . I am new at D Programming language and i was wondering if someone can help me or post some example that show how to parse json strings using std.json library. Thanks in advance.

Here is something to get you started.  The initial version of this code was from Ali Cehreli, I can't remember what modifications are mine, or if this is all straight form Ali.

If you intend to do any serious work with Json, I highly recommend you check out Vibe.d (www.vibed.org) - more stuff to learn but its JSON capabilities are awesome compared to what std.json gives you.

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

/**
  Ali's example.
*/
struct Employee
{
	string firstName;
	string lastName;
}

void readEmployees( string employee_json_string )
{

	JSONValue[string] document = parseJSON(employee_json_string).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);
	}	
}

void main()
{
	// Assumes UTF-8 file
	auto content =
		`{
		  "employees": [
		    { "firstName":"Walter" , "lastName":"Bright" },
		    { "firstName":"Andrei" , "lastName":"Alexandrescu" },
		    { "firstName":"Celine" , "lastName":"Dion" }
		  ]
		}`;
	
	readEmployees( content );
	
	//Or to read the same thing from a file
	readEmployees( readText( "employees.json" ) );

}