
extJSON
=======

This extension provides JSON support from multiple vendors. The vendors are listed below.

Dependencies
------------

* Core
* Network

Using it in your App
--------------------

Add the `extThree20JSON.xcodeproj` file to your project. Add `extThree20JSON+<vendor>.a` to your
"Link Binary With Libraries" phase, and add `extThree20JSON+<vendor>` as a dependency.

Import the following into your precompiled header or wherever you need access to
`TTURLJSONResponse`.

    #import "extThree20JSON/extThree20JSON.h"

Provided Vendors
----------------

* SBJSON 2.2.3 (March 7, 2010) [http://code.google.com/p/json-framework/](http://code.google.com/p/json-framework/)
* YAJL 0.2.16 (April 15, 2010) [http://lloyd.github.com/yajl/](http://lloyd.github.com/yajl/)

Breakdown
---------

This library provides targets for each supported vendor. When you include extJSON in your app,
you can choose which library you want to build against by adding the specific lib to your
linking phase as well as adding the lib's target to your dependencies.

Once you have selected a vendor, you may use `TTURLJSONResponse` to handle JSON responses. All
vendors expose a `TTURLJSONResponse` object for use so that you can seamlessly switch vendors
without breaking any of your code.

Troubleshooting
---------------

### What if I'm already using one of the vendors in my project?

Solution 1) Remove the vendor from your project and use the version included
in Three20 (which will generally be up-to-date). You can access your vendor's header files using

    #import "extThree20JSON/<vendor headers>"

For example, with SBJSON:

    #import "extThree20JSON/SBJSON.h"

Solution 2) Take a look at `TTURLJSONResponse` and copy the implementation into your
own project. It's pretty simple.

You'd likely want to use this solution if you strictly depend on an older version of one of
the above vendors.
