Skip to content
This repository

JsonObject which allows dot notation access to JSON.parse'd objects. Read the article on http://www.dartlang.org/articles/json-web-service/

branch: master

Doc fixes

latest commit 615b4ceb14
Chris Buckett authored
Octocat-spinner-32 lib Updated for latest sdk November 07, 2013
Octocat-spinner-32 test Updated for latest sdk November 07, 2013
Octocat-spinner-32 .gitignore Fixed tests to work with build 12758 September 24, 2012
Octocat-spinner-32 .project Fixed tests to work with build 12758 September 24, 2012
Octocat-spinner-32 CHANGELOG.md Doc fixes November 07, 2013
Octocat-spinner-32 LICENSE Renamed LICENCE > LICENSE January 23, 2013
Octocat-spinner-32 README.md Doc fixes November 07, 2013
Octocat-spinner-32 pubspec.yaml Doc fixes November 07, 2013
README.md

JsonObject for DART (http://www.dartlang.org)

Version 1.0.18

Usage: Add to pubspec.yaml:

dependencies:
  json_object: any    

Now M7 (Dart Beta) compatible.

All tests passing with SDK 0.8.10.3_r29803

See Changelog.

You can use JsonObject in two different ways.

1 Accessing JSON Maps in a class-based fashion

Read the article about using this on the dartlang website: http://www.dartlang.org/articles/json-web-service/

JsonObject takes a json string representation, and uses the dart:json library to parse it back into a map. JsonObject then takes the parsed output, and converts any maps (recursively) into JsonObjects, which allow use of dot notation for property access (via noSuchMethod).

Examples:

// create from existing JSON
var person = new JsonObject.fromJsonString('{"name":"Chris"}');
print(person.name);
person.name = "Chris B";
person.namz = "Bob"; //throws an exception, as it wasn't in the original json
                     //good for catching typos

person.isExtendable = true;
person.namz = "Bob" //this is allowed now
String jsonString = JSON.encode(person); // convert back to JSON

It implements Map, so you can convert it back to Json using JSON.encode():

// starting from an empty map
var animal = new JsonObject();  
animal.legs = 4;  // equivalent to animal["legs"] = 4;
animal.name = "Fido"; // equivalent to animal["name"] = "Fido";
String jsonString = JSON.encode(animal); // convert to JSON

Take a look at the unit tests to get an idea of how you can use it.


2. Experimental Using reflection to serialize from a real class instance to JSON

(Requires use of a the experimental mirrors branch)

Use objectToJson(myObj) to return a future containing the serialized string.

Example: import 'package:json_object/json_object.dart';

class Other {
    String name = "My Name";
}

class Basic {
   String myString = "foo";
   int myInt = 42;
   Other name = new Other();
}

main() {
  var basic = new Basic();
  objectToJson(basic).then((jsonStr) => print(jsonStr));
}

TODO:

  • I still feel that there aren't enough tests - let me know if it works for you.

Many of the unit tests are based around specific questions from users, either here or on stack overflow.

Something went wrong with that request. Please try again.