master f739f0b2924b cached
112 files
1.8 MB
401.5k tokens
443 symbols
1 requests
Download .txt
Showing preview only (1,866K chars total). Download the full file or copy to clipboard to get everything.
Repository: facebook-csharp-sdk/simple-json
Branch: master
Commit: f739f0b2924b
Files: 112
Total size: 1.8 MB

Directory structure:
gitextract_9s43uv8o/

├── .gitattributes
├── .gitignore
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── VERSION
├── jakefile.js
└── src/
    ├── JsonViewer/
    │   ├── JsonViewer.Designer.cs
    │   ├── JsonViewer.cs
    │   ├── JsonViewer.csproj
    │   ├── JsonViewer.resx
    │   ├── Program.cs
    │   └── Properties/
    │       ├── AssemblyInfo.cs
    │       ├── Resources.Designer.cs
    │       ├── Resources.resx
    │       ├── Settings.Designer.cs
    │       └── Settings.settings
    ├── SimpleJson/
    │   ├── EscapeToJavascriptStringTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── SimpleJson-Net20.csproj
    │   ├── SimpleJson-Net35.csproj
    │   ├── SimpleJson-Net40.csproj
    │   ├── SimpleJson-Net45.csproj
    │   ├── SimpleJson-Portable-NoLinqExpression.csproj
    │   ├── SimpleJson-Portable-WP8WinStoreNet45.csproj
    │   ├── SimpleJson-Portable.csproj
    │   ├── SimpleJson-SL4.csproj
    │   ├── SimpleJson-SL5.csproj
    │   ├── SimpleJson-WP7.csproj
    │   ├── SimpleJson-WP71.csproj
    │   ├── SimpleJson-WindowsStore.csproj
    │   └── SimpleJson.cs
    ├── SimpleJson.Tests/
    │   ├── DataContractTests/
    │   │   ├── DataContractSampleClassess.cs
    │   │   ├── PrivateFieldsSerializeTests.cs
    │   │   ├── PrivateGetterSettersSerializeTests.cs
    │   │   ├── PrivateGettersSerializeTests.cs
    │   │   ├── PrivateReadonlySerializeTests.cs
    │   │   ├── PrivateSettersSerializeTests.cs
    │   │   ├── PublicFieldsSerializeTests.cs
    │   │   ├── PublicGetterSetterDeserializeTests.cs
    │   │   ├── PublicGetterSettersSerializeTests.cs
    │   │   ├── PublicGettersSerializeTests.cs
    │   │   ├── PublicReadonlySerializeTests.cs
    │   │   └── PublicSettersSerializeTests.cs
    │   ├── DeserializeGenericListTests.cs
    │   ├── DeserializeObjectTests.cs
    │   ├── EscapeToJavascriptStringTests.cs
    │   ├── JsonArrayTests.cs
    │   ├── JsonDataContractSerializeObjectTests.cs
    │   ├── JsonDecodeTypeTests.cs
    │   ├── Package.appxmanifest
    │   ├── PocoDeserializerTests/
    │   │   ├── ArrayTests.cs
    │   │   ├── DateTimeDeserializeTests.cs
    │   │   ├── DictionaryDeserializeTests.cs
    │   │   ├── ListOfPocoDeserializeTests.cs
    │   │   ├── NullableTypeDeserializeTests.cs
    │   │   └── PrimitiveDeserializeTest.cs
    │   ├── PocoJsonSerializerTests/
    │   │   ├── DateTimeSerializeTests.cs
    │   │   ├── NullableSerializeTests.cs
    │   │   ├── PrivateFieldsDeserializeTests.cs
    │   │   ├── PrivateFieldsSerializeTests.cs
    │   │   ├── PrivateGetterSettersDeserializeTests.cs
    │   │   ├── PrivateGetterSettersSerializeTests.cs
    │   │   ├── PrivateGettersSerializeTests.cs
    │   │   ├── PrivateReadonlySerializeTests.cs
    │   │   ├── PrivateSettersSerializeTests.cs
    │   │   ├── PublicFieldsDeserializeTests.cs
    │   │   ├── PublicFieldsSerializeTests.cs
    │   │   ├── PublicGetterDeserializeTests.cs
    │   │   ├── PublicGetterSetterDeserializeTests.cs
    │   │   ├── PublicGetterSettersSerializeTests.cs
    │   │   ├── PublicGettersSerializeTests.cs
    │   │   ├── PublicReadonlySerializeTests.cs
    │   │   ├── PublicSettersSerializeTests.cs
    │   │   └── ToStringTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── SerializeObject.KnownNonPrimitive.Tests.cs
    │   ├── SerializeObject.Primitive.Tests.cs
    │   ├── SerializeObject.UnknownNonPrimitive.Tests.cs
    │   ├── SimleJson.Tests-WindowsStore.csproj
    │   ├── SimleJson.Tests-WindowsStore_TemporaryKey.pfx
    │   ├── SimpleJson.Tests.csproj
    │   └── packages.config
    ├── SimpleJson.nuspec
    ├── SimpleJson.sln
    ├── njake.js
    ├── packages/
    │   ├── NUnit.2.5.10.11092/
    │   │   ├── NUnit.2.5.10.11092.nupkg
    │   │   ├── NUnitFitTests.html
    │   │   ├── fit-license.txt
    │   │   ├── lib/
    │   │   │   └── nunit.framework.xml
    │   │   ├── license.txt
    │   │   └── tools/
    │   │       ├── NUnitTests.VisualState.xml
    │   │       ├── NUnitTests.config
    │   │       ├── NUnitTests.nunit
    │   │       ├── TestResult.xml
    │   │       ├── agent.conf
    │   │       ├── agent.log.conf
    │   │       ├── launcher.log.conf
    │   │       ├── nunit-agent-x86.exe.config
    │   │       ├── nunit-agent.exe.config
    │   │       ├── nunit-console-x86.exe.config
    │   │       ├── nunit-console.exe.config
    │   │       ├── nunit-x86.exe.config
    │   │       ├── nunit.exe.config
    │   │       ├── pnunit-agent.exe.config
    │   │       ├── pnunit-launcher.exe.config
    │   │       ├── runFile.exe.config
    │   │       ├── runpnunit.bat
    │   │       └── test.conf
    │   ├── NuGet.CommandLine.1.7.0/
    │   │   └── NuGet.CommandLine.1.7.0.nupkg
    │   └── repositories.config
    └── simplejson.script.ps1

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
*.doc  diff=astextplain
*.DOC	diff=astextplain
*.docx	diff=astextplain
*.DOCX	diff=astextplain
*.dot	diff=astextplain
*.DOT	diff=astextplain
*.pdf	diff=astextplain
*.PDF	diff=astextplain
*.rtf	diff=astextplain
*.RTF	diff=astextplain

*.jpg  	binary
*.png 	binary
*.gif 	binary

*.cs -text diff=csharp 
*.vb -text
*.c -text
*.cpp -text
*.cxx -text
*.h -text
*.hxx -text
*.py -text
*.rb -text
*.java -text
*.html -text
*.htm -text
*.css -text
*.scss -text
*.sass -text
*.less -text
*.js -text
*.lisp -text
*.clj -text
*.sql -text
*.php -text
*.lua -text
*.m -text
*.asm -text
*.erl -text
*.fs -text
*.fsx -text
*.hs -text

*.csproj -text merge=union 
*.vbproj -text merge=union 
*.fsproj -text merge=union 
*.dbproj -text merge=union 
*.sln -text eol=crlf merge=union 


================================================
FILE: .gitignore
================================================
# Visual Studio Ignores
[Bb]in/
obj/
App_Data/

*.sln.cache
*.suo
*.user
*.build.csdef
*.ncb
*.docstates

# Visual Studio 11+ Unit Test ignores
*.UTests.ldf
*.UTests.mdf

*.xap
!*StatLight.Client.For.*.xap

*.userprefs # Mono develop

# Visual Studio Extensions Ignores
.vs10x
*.vs10x

# Resharper Ignores
_ReSharper.*/
*.resharper.user

# StyleCop cache ignores
*StyleCop.Cache

# Ignore TypeMock TestLint Cache
lint.db

# vim Ignore
*.swp

# kdiff3 Ignore
*.orig

# LATEX Ignores
*.tex.undo

# Misc Ignores
Thumbs.db
!libs/*/[Bb]in/
working/
src/TestResults/
dist/

================================================
FILE: LICENSE.txt
================================================
Copyright (c) 2011, The Outercurve Foundation

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

================================================
FILE: NOTICE.txt
================================================
Copyright (c) 2011, The Outercurve Foundation. 
This software is released under the MIT License (the "License"); 
you may not use the software except in compliance with the License. You 
can find a copy of the License in the file LICENSE.TXT accompanying this 
file. 

Additional Copyrights:
This library was derived from code created by Procuriouis (procurios.nl), 
Copyright (c) 2008, Procurios.

Additional Libraries:
This software includes or is derivative of works distributed under the 
licenses listed below. The full text for most of the licenses listed below 
can be found in the LICENSE.txt file accompanying each work. The original 
copyright notices have been preserved within the respective files and or 
packages. Please refer to the specific files and/or packages for more 
detailed information about the authors, copyright notices, and licenses. 


njake
-----------------
Website: https://github.com/prabirshrestha/njake
Copyright: N/A
License: Apache 2.0 License


JSON.cs
-----------------
Website: http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html
Copyright: Copyright (c) 2008, Procurios
License: MIT License


Additional Notices:
The software was originally conceived and created by Nathan Totten,
Prabir Shersha, and Jim Zimmerman.

Other contributors to the project include:
N/A

================================================
FILE: README.md
================================================
# SimpleJson
Small and fast JSON library for .NET 2.0+/SL4+/WP7+/Windows Store Apps/Portable Class Library and powershell.
Includes support for dynamic in .NET 4.0+/SL4+/Windows Store Apps. Also includes support for DataContract and DataMember. 

# Using SimpleJson

SimpleJson is not distributed as a compiled binary .dll file but rather as a single .cs file or a powershell module .psm1.

**Use nuget to add SimpleJson.cs file to your project.**

```powershell
Install-Package SimpleJson
```

## Supported Platforms
* .NET 2.0
* .NET 3.0
* .NET 3.5 (Client Profile and Full Profile)
* .NET 4.0 (Client Profile and Full Profile)
* .NET 4.5
* Windows 8 Store Apps
* Silverlight 4
* Silverlight 5
* Windows Phone 7.0
* Windows Phone 7.1 (Mango)
* Windows Phone 8
* Portable Class Libraries (PCL)

**Note:** By default SimpleJson expects `System.Linq`. If you are targeting older version of .NET framework (.net < 3.0 or WP7.0) you will need to add `#define SIMPLE_JSON_NO_LINQ_EXPRESSION`.

If you want to use `[DataContract]`, `[DataMember(Name = "name")]` or `[IgnoreDataMember]` make sure to add `#define SIMPLE_JSON_DATACONTRACT`.

If you want to use `IReadOnlyCollection<T>` and `IReadOnlyList<T>` make sure to add `#define SIMPLE_JSON_READONLY_COLLECTIONS`.


================================================
FILE: VERSION
================================================
0.38.0

================================================
FILE: jakefile.js
================================================
var fs = require('fs'),
	njake = require('./src/njake'),
	msbuild = njake.msbuild,
	nunit = njake.nunit,
	nuget = njake.nuget,
	config = {
		version: fs.readFileSync('VERSION', 'utf-8')
	};

console.log('SimpleJson v' + config.version)

msbuild.setDefaults({
	properties: { Configuration: 'Release' },
	processor: 'x86',
	version: 'net4.0'
})

nunit.setDefaults({
	_exe: 'src/packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe'
})

nuget.setDefaults({
	_exe: 'src/packages/NuGet.CommandLine.1.7.0/tools/NuGet.exe',
	verbose: true
})

desc('Build all')
task('default', ['clean', 'build', 'test', 'nuget:pack'])

namespace('build', function () {

    desc('Build Portble Class Library (with LINQ Expression)')
    task('pcl', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Portable.csproj',
            targets: ['Build']
        })
    }, { async: true })

    desc('Build Portble Class Library (without LINQ Expression)')
    task('pclnolinq', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Portable-NoLinqExpression.csproj',
            targets: ['Build']
        })
    }, { async: true })

    desc('Build Portble Class Library (WP8,WinStore,NET4.5)')
    task('pclnet45', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Portable-WP8WinStoreNet45.csproj',
            targets: ['Build']
        })
    }, { async: true })

    desc('Build .NET 4.5')
    task('net45', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Net45.csproj',
            targets: ['Build']
        })
    }, { async: true })

	desc('Build .NET 4.0')
	task('net40', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-Net40.csproj',
			targets: ['Build']
		})
	}, { async: true })

	desc('Build .NET 3.5')
	task('net35', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-Net35.csproj',
			targets: ['Build']
		})
	}, { async: true })

	desc('Build .NET 2.0')
	task('net20', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-Net20.csproj',
			targets: ['Build']
		})
	}, { async: true })

	desc('Build Silverlight 5')
	task('sl5', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-SL5.csproj',
			targets: ['Build']
		})
	}, { async: true })

	desc('Build Silverlight 4')
	task('sl4', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-SL4.csproj',
			targets: ['Build']
		})
	}, { async: true })

	desc('Build Windows Phone 7.0')
	task('wp70', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-WP7.csproj',
			targets: ['Build']
		})
	}, { async: true })

	desc('Build Windows Phone 7.1')
	task('wp71', function () {
	    msbuild({
	        file: 'src/SimpleJson/SimpleJson-WP71.csproj',
	        targets: ['Build']
	    })
	}, { async: true })

	desc('Build Windows Store')
	task('store', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-WindowsStore.csproj',
			targets: ['Build']
		})
	}, { async: true })

	task('all', ['build:net40', 'build:net35', 'build:net20', 'build:sl5', 'build:sl4', 'build:wp70', 'build:wp71', 'build:net45', 'build:store', 'build:pcl', 'build:pclnolinq', 'build:pclnet45'])

})

task('build', ['build:all'])

namespace('clean', function () {

    task('pcl', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Portable.csproj',
            targets: ['Clean']
        })
    }, { async: true })

    task('pclnolinq', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Portable-NoLinqExpression.csproj',
            targets: ['Clean']
        })
    }, { async: true })

    task('pclnet45', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Portable-WP8WinStoreNet45.csproj',
            targets: ['Clean']
        })
    }, { async: true })

    task('net45', function () {
        msbuild({
            file: 'src/SimpleJson/SimpleJson-Net45.csproj',
            targets: ['Clean']
        })
    }, { async: true })

	task('net40', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-Net40.csproj',
			targets: ['Clean']
		})
	}, { async: true })

	task('net35', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-Net35.csproj',
			targets: ['Clean']
		})
	}, { async: true })

	task('net20', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-Net20.csproj',
			targets: ['Clean']
		})
	}, { async: true })

	task('sl5', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-SL5.csproj',
			targets: ['Clean']
		})
	}, { async: true })

	task('sl4', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-SL4.csproj',
			targets: ['Clean']
		})
	}, { async: true })

	task('wp70', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-WP7.csproj',
			targets: ['Clean']
		})
	}, { async: true })

	task('wp71', function () {
	    msbuild({
	        file: 'src/SimpleJson/SimpleJson-WP71.csproj',
	        targets: ['Clean']
	    })
	}, { async: true })

	task('store', function () {
		msbuild({
			file: 'src/SimpleJson/SimpleJson-WindowsStore.csproj',
			targets: ['Clean']
		})
	}, { async: true })

	task('all', ['clean:net40', 'clean:net35', 'clean:net20', 'clean:sl5', 'clean:sl4', 'clean:wp70', 'clean:wp71', 'clean:net45', 'clean:store', 'clean:pcl', 'clean:pclnolinq', 'clean:pclnet45'])

})

desc('Clean')
task('clean', ['clean:all'], function () {
	jake.rmRf('working/')
	jake.rmRf('bin/')
	jake.rmRf('dist/')
})

namespace('test-build', function () {
		
	task('net40', ['build:net40'], function () {
		msbuild({
			file: 'src/SimpleJson.Tests/SimpleJson.Tests.csproj',
			targets: ['Build']
		})
	}, { async: true })

	task('all', ['test-build:net40'])

})

namespace('test', function () {
	
	task('net40', ['test-build:net40'], function () {
		nunit({
			assemblies: ['bin/Tests/Net40/Release/SimpleJson.Tests.dll'],
			xml: 'bin/Tests/Net40/Release/SimpleJson.Tests.nunit.xml'
		})
	}, { async: true })

	task('all', ['test:net40'])

})

desc('test')
task('test', ['test:all'])

directory('working/')

namespace('generate', function () {
	
	desc('Generate SimpleJson.cs.pp at working/SimpleJson.cs.pp')
	task('csharp', ['working/'], function () {
		console.log('Generating working/SimpleJson.cs');

		var csFile = fs
			.readFileSync('src/SimpleJson/SimpleJson.cs', 'utf-8')
			.replace('// VERSION:', '// VERSION: ' + config.version)
			.replace('namespace SimpleJson', 'namespace $rootnamespace$')
			.replace('namespace SimpleJson', 'namespace $rootnamespace$')
			.replace('using SimpleJson.Reflection;', 'using $rootnamespace$.Reflection;')

		fs.writeFileSync('working/SimpleJson.cs.pp', csFile);
	})

	desc('Generate SimpleJson.psm1 at working/SimpleJson.psm1')
	task('powershell', ['working/'], function () {
		console.log('Generating working/SimpleJson.psm1');

		var psFile = fs
			.readFileSync('src/simplejson.script.ps1', 'utf-8')
			.replace('# Version:', '# Version: ' + config.version) + 
			'\r\n$source = @\"\r\n\r\n' + 
			'#define SIMPLE_JSON_DATACONTRACT\r\n' +
			'#define SIMPLE_JSON_REFLECTIONEMIT\r\n\r\n' +
			fs.readFileSync('src/SimpleJson/SimpleJson.cs', 'utf-8').replace('// VERSION:', '// VERSION: ' + config.version) +
			'\r\n\"@\r\n' + 
			'Export-ModuleMember ConvertFrom-Json\r\n' +
			'Export-ModuleMember ConvertTo-Json\r\n' + 
			'Add-Type -ReferencedAssemblies System.Runtime.Serialization -TypeDefinition $source -Language CSharp';

		fs.writeFileSync('working/SimpleJson.psm1', psFile);
	})

	task('all', ['generate:csharp', 'generate:powershell'])

})

directory('dist/')

namespace('nuget', function () {

	desc('Create nuget package')
	task('pack', ['generate:all', 'dist/'], function () {
		nuget.pack({
			nuspec: 'src/SimpleJson.nuspec',
			version: config.version,
			outputDirectory: 'dist/'
		})
	}, { async: true })

})


================================================
FILE: src/JsonViewer/JsonViewer.Designer.cs
================================================
namespace JsonViewer
{
    partial class JsonViewer
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(JsonViewer));
            this.txtInput = new System.Windows.Forms.TextBox();
            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
            this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
            this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
            this.mnuClear = new System.Windows.Forms.ToolStripButton();
            this.tvJson = new System.Windows.Forms.TreeView();
            this.txtJson = new System.Windows.Forms.TextBox();
            this.toolStrip1.SuspendLayout();
            this.SuspendLayout();
            // 
            // txtInput
            // 
            this.txtInput.Location = new System.Drawing.Point(12, 28);
            this.txtInput.Multiline = true;
            this.txtInput.Name = "txtInput";
            this.txtInput.Size = new System.Drawing.Size(774, 141);
            this.txtInput.TabIndex = 0;
            this.txtInput.TextChanged += new System.EventHandler(this.txtInput_TextChanged);
            // 
            // toolStrip1
            // 
            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.toolStripButton2,
            this.toolStripButton3,
            this.toolStripSeparator1,
            this.mnuClear});
            this.toolStrip1.Location = new System.Drawing.Point(0, 0);
            this.toolStrip1.Name = "toolStrip1";
            this.toolStrip1.Size = new System.Drawing.Size(798, 25);
            this.toolStrip1.TabIndex = 1;
            this.toolStrip1.Text = "toolStrip1";
            // 
            // toolStripButton2
            // 
            this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
            this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
            this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButton2.Name = "toolStripButton2";
            this.toolStripButton2.Size = new System.Drawing.Size(39, 22);
            this.toolStripButton2.Text = "Copy";
            // 
            // toolStripButton3
            // 
            this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
            this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
            this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButton3.Name = "toolStripButton3";
            this.toolStripButton3.Size = new System.Drawing.Size(39, 22);
            this.toolStripButton3.Text = "Paste";
            // 
            // toolStripSeparator1
            // 
            this.toolStripSeparator1.Name = "toolStripSeparator1";
            this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
            // 
            // mnuClear
            // 
            this.mnuClear.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
            this.mnuClear.Image = ((System.Drawing.Image)(resources.GetObject("mnuClear.Image")));
            this.mnuClear.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.mnuClear.Name = "mnuClear";
            this.mnuClear.Size = new System.Drawing.Size(38, 22);
            this.mnuClear.Text = "Clear";
            this.mnuClear.Click += new System.EventHandler(this.mnuClear_Click);
            // 
            // tvJson
            // 
            this.tvJson.Location = new System.Drawing.Point(12, 175);
            this.tvJson.Name = "tvJson";
            this.tvJson.Size = new System.Drawing.Size(521, 339);
            this.tvJson.TabIndex = 2;
            // 
            // txtJson
            // 
            this.txtJson.Location = new System.Drawing.Point(539, 175);
            this.txtJson.Multiline = true;
            this.txtJson.Name = "txtJson";
            this.txtJson.ReadOnly = true;
            this.txtJson.Size = new System.Drawing.Size(247, 339);
            this.txtJson.TabIndex = 3;
            this.txtJson.TextChanged += new System.EventHandler(this.txtJson_TextChanged);
            // 
            // JsonViewer
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(798, 526);
            this.Controls.Add(this.txtJson);
            this.Controls.Add(this.tvJson);
            this.Controls.Add(this.toolStrip1);
            this.Controls.Add(this.txtInput);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.MaximizeBox = false;
            this.Name = "JsonViewer";
            this.Text = "JsonViewer - powered by Simple Json (http://simplejson.codeplex.com)";
            this.toolStrip1.ResumeLayout(false);
            this.toolStrip1.PerformLayout();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.TextBox txtInput;
        private System.Windows.Forms.ToolStrip toolStrip1;
        private System.Windows.Forms.ToolStripButton toolStripButton2;
        private System.Windows.Forms.ToolStripButton toolStripButton3;
        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
        private System.Windows.Forms.ToolStripButton mnuClear;
        private System.Windows.Forms.TreeView tvJson;
        private System.Windows.Forms.TextBox txtJson;
    }
}



================================================
FILE: src/JsonViewer/JsonViewer.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="JsonViewer.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace JsonViewer
{
    public partial class JsonViewer : Form
    {
        private Color defaultColor;

        public JsonViewer()
        {
            InitializeComponent();
            defaultColor = txtJson.BackColor;
        }

        private void mnuClear_Click(object sender, EventArgs e)
        {
            txtInput.Text = string.Empty;
        }

        private void txtInput_TextChanged(object sender, EventArgs e)
        {
            txtJson.Text = txtInput.Text;
        }

        private void txtJson_TextChanged(object sender, EventArgs e)
        {
            object obj;
            tvJson.Nodes.Clear();
            if (SimpleJson.SimpleJson.TryDeserializeObject(txtJson.Text, out obj))
            {
                var rootNode = new TreeNode("JSON");
                tvJson.Nodes.Add(rootNode);
                AddNode(obj, rootNode);
                txtJson.BackColor = this.defaultColor;
            }
            else if (txtJson.Text.Trim().Length != 0)
            {
                txtJson.BackColor = Color.IndianRed;
            }
        }

        #region Node Helpers

        private void AddNode(object obj, TreeNode node)
        {
            if (obj is IList<object>)
            {
                AddNode((IList<object>)obj, node);
            }
            else if (obj is IDictionary<string, object>)
            {
                AddNode((IDictionary<string, object>)obj, node);
            }
            else
            {
                if (obj == null)
                {
                    node.Nodes.Add("null");
                }
                else
                {
                    node.Nodes.Add(obj.ToString());
                }

                node.ExpandAll();
            }
        }

        private void AddNode(IDictionary<string, object> dictionary, TreeNode node)
        {
            if (dictionary.Count == 0)
            {
                node.Nodes.Add("{}");
            }
            else
            {
                foreach (var pair in dictionary)
                {
                    var key = pair.Key;
                    if (pair.Value is IDictionary<string, object>)
                    {
                        var n = new TreeNode(pair.Key);
                        node.Nodes.Add(n);
                        AddNode(pair.Value, n);
                    }
                    else if (pair.Value is IList<object>)
                    {
                        var n = new TreeNode("[] " + pair.Key);
                        node.Nodes.Add(n);
                        AddNode((IList<object>)pair.Value, n);
                    }
                    else
                    {
                        // todo: differentiate null
                        node.Nodes.Add(string.Format("{0} : {1}", pair.Key, pair.Value));
                    }

                    node.ExpandAll();
                }
            }
        }

        private void AddNode(IList<object> list, TreeNode node)
        {
            foreach (var o in list)
            {
                AddNode(o, node);
            }
        }

        #endregion

    }
}


================================================
FILE: src/JsonViewer/JsonViewer.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{47BE12D4-634F-4ABC-BFEE-81DE3D40A639}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>JsonViewer</RootNamespace>
    <AssemblyName>JsonViewer</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <PlatformTarget>x86</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\JsonViewer\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SIMPLE_JSON_DYNAMIC</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <PlatformTarget>x86</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\JsonViewer\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="..\SimpleJson\SimpleJson.cs">
      <Link>SimpleJson.cs</Link>
    </Compile>
    <Compile Include="JsonViewer.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="JsonViewer.Designer.cs">
      <DependentUpon>JsonViewer.cs</DependentUpon>
    </Compile>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <EmbeddedResource Include="JsonViewer.resx">
      <DependentUpon>JsonViewer.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
    <None Include="Properties\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    </None>
    <Compile Include="Properties\Settings.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    </Compile>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/JsonViewer/JsonViewer.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
</value>
  </data>
  <data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
</value>
  </data>
  <data name="mnuClear.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
</value>
  </data>
  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>25</value>
  </metadata>
</root>

================================================
FILE: src/JsonViewer/Program.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="Program.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace JsonViewer
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new JsonViewer());
        }
    }
}


================================================
FILE: src/JsonViewer/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("JsonViewer")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("The Outercurve Foundation")]
[assembly: AssemblyProduct("JsonViewer")]
[assembly: AssemblyCopyright("Copyright © The Outercurve Foundation 2011")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("49995661-8835-4e5a-9863-95ebf1f74cd2")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]


================================================
FILE: src/JsonViewer/Properties/Resources.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace JsonViewer.Properties
{


    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources
    {

        private static global::System.Resources.ResourceManager resourceMan;

        private static global::System.Globalization.CultureInfo resourceCulture;

        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources()
        {
        }

        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager
        {
            get
            {
                if ((resourceMan == null))
                {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JsonViewer.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }

        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture
        {
            get
            {
                return resourceCulture;
            }
            set
            {
                resourceCulture = value;
            }
        }
    }
}


================================================
FILE: src/JsonViewer/Properties/Resources.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>

================================================
FILE: src/JsonViewer/Properties/Settings.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace JsonViewer.Properties
{


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
    {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default
        {
            get
            {
                return defaultInstance;
            }
        }
    }
}


================================================
FILE: src/JsonViewer/Properties/Settings.settings
================================================
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>


================================================
FILE: src/SimpleJson/EscapeToJavascriptStringTests.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="<file>.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

namespace SimpleJsonTests
{

#if NUNIT
    using TestClass = NUnit.Framework.TestFixtureAttribute;
    using TestMethod = NUnit.Framework.TestAttribute;
    using TestCleanup = NUnit.Framework.TearDownAttribute;
    using TestInitialize = NUnit.Framework.SetUpAttribute;
    using ClassCleanup = NUnit.Framework.TestFixtureTearDownAttribute;
    using ClassInitialize = NUnit.Framework.TestFixtureSetUpAttribute;
    using NUnit.Framework;
#else
#if NETFX_CORE
    using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
#else
    using Microsoft.VisualStudio.TestTools.UnitTesting;
#endif
#endif

    using SimpleJson;

    [TestClass]
    public class EscapeToJavascriptStringTests
    {
        [TestMethod]
        public void BackSlash()
        {
            var serialized = SimpleJson.SerializeObject("c:\\haha.pl");
            var result = SimpleJson.EscapeToJavascriptString(serialized);

            Assert.AreEqual("\"c:\\haha.pl\"", result);
        }

        [TestMethod]
        public void BackSlashWithT()
        {
            var serialized = SimpleJson.SerializeObject("c:\\taha.pl");
            var result = SimpleJson.EscapeToJavascriptString(serialized);

            Assert.AreEqual("\"c:\\taha.pl\"", result);
        }
    }
}

================================================
FILE: src/SimpleJson/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SimpleJson")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("The Outercurve Foundation")]
[assembly: AssemblyProduct("SimpleJson")]
[assembly: AssemblyCopyright("Copyright © 2011, The Outercurve Foundation")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
//[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
//[assembly: Guid("77870c51-c5f2-4c33-891e-1a2f1777bb09")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.1.0.0")]
[assembly: AssemblyFileVersion("0.1.0.0")]

[assembly: InternalsVisibleTo("SimpleJson.Tests")]


================================================
FILE: src/SimpleJson/SimpleJson-Net20.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{02523326-C4CA-45B1-9C1B-2438D218A5C0}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson</AssemblyName>
    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\Net20\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SIMPLE_JSON_NO_LINQ_EXPRESSION;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <LangVersion>ISO-2</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\Net20\Release\</OutputPath>
    <DefineConstants>TRACE;SIMPLE_JSON_NO_LINQ_EXPRESSION;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="EscapeToJavascriptStringTests.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-Net35.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{5033CD0A-483B-4E41-87A2-D0F65905B5D3}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\Net35\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\Net35\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Runtime.Serialization" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-Net40.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{4EE1BC6A-D96B-4BD6-A6F3-2E2135AA9B99}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\Net40\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_DYNAMIC;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\Net40\Release\</OutputPath>
    <DefineConstants>TRACE;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_DYNAMIC;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Runtime.Serialization" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-Net45.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{19F83E93-3679-4A93-8E3B-707050A96E85}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson-Net45</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\Net45\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_DYNAMIC;SIMPLE_JSON_READONLY_COLLECTIONS</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\Net45\Release\</OutputPath>
    <DefineConstants>TRACE;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_DYNAMIC;SIMPLE_JSON_READONLY_COLLECTIONS</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Runtime.Serialization" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-Portable-NoLinqExpression.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{EC4EAFB1-A0A3-4C7B-8B38-CFEED0D6FC0A}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson-Portable-NoLinqExpression</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <TargetFrameworkProfile>Profile136</TargetFrameworkProfile>
    <FileAlignment>512</FileAlignment>
    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <FileUpgradeFlags>
    </FileUpgradeFlags>
    <UpgradeBackupLocation>
    </UpgradeBackupLocation>
    <OldToolsVersion>4.0</OldToolsVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\PCL-NOLINQ\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SIMPLE_JSON_NO_LINQ_EXPRESSION;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <LangVersion>ISO-2</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\PCL-NOLINQ\Release\</OutputPath>
    <DefineConstants>TRACE;SIMPLE_JSON_NO_LINQ_EXPRESSION;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <LangVersion>ISO-2</LangVersion>
  </PropertyGroup>
  <ItemGroup>
    <!-- A reference to the entire .NET Framework is automatically included -->
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-Portable-WP8WinStoreNet45.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{EC52A094-1CDB-4F5D-8A8A-86F501FC601C}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson_Portable_WP8WinStoreNet45</RootNamespace>
    <AssemblyName>SimpleJson-Portable-WP8WinStoreNet45</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
    <FileAlignment>512</FileAlignment>
    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\PCLiWP8WinStoreNet45\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SIMPLE_JSON_TYPEINFO;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_READONLY_COLLECTIONS</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\PCLiWP8WinStoreNet45\Release\</OutputPath>
    <DefineConstants>TRACE;SIMPLE_JSON_TYPEINFO;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_READONLY_COLLECTIONS</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <!-- A reference to the entire .NET Framework is automatically included -->
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-Portable.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{8264C25C-4195-4D37-B848-DE6A5C4F27CC}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson-Portable</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <TargetFrameworkProfile>Profile136</TargetFrameworkProfile>
    <FileAlignment>512</FileAlignment>
    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <FileUpgradeFlags>
    </FileUpgradeFlags>
    <UpgradeBackupLocation>
    </UpgradeBackupLocation>
    <OldToolsVersion>4.0</OldToolsVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\PCL\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <LangVersion>ISO-2</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\PCL\Release\</OutputPath>
    <DefineConstants>TRACE;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <!-- A reference to the entire .NET Framework is automatically included -->
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-SL4.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.50727</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{4A93FDBA-28DD-4737-B0DF-72CF0C42D962}</ProjectGuid>
    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson</AssemblyName>
    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
    <SilverlightApplication>false</SilverlightApplication>
    <ValidateXaml>true</ValidateXaml>
    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
  </PropertyGroup>
  <!-- This property group is only here to support building this project using the 
       MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs 
       to set the TargetFrameworkVersion to v3.5 -->
  <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\SL4\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SIMPLE_JSON_DYNAMIC;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\SL4\Release\</OutputPath>
    <DefineConstants>TRACE;SILVERLIGHT;SIMPLE_JSON_DYNAMIC;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="mscorlib" />
    <Reference Include="system" />
    <Reference Include="System.Runtime.Serialization" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
        <SilverlightProjectProperties />
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-SL5.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.50727</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{F918711A-6A76-488E-8990-0F0B73E1F532}</ProjectGuid>
    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson</AssemblyName>
    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
    <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
    <SilverlightApplication>false</SilverlightApplication>
    <ValidateXaml>true</ValidateXaml>
    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <!-- This property group is only here to support building this project using the 
       MSBuild 3.5 toolset. In order to work correctly with this older toolset, it needs 
       to set the TargetFrameworkVersion to v3.5 -->
  <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\SL5\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SILVERLIGHT;SIMPLE_JSON_DYNAMIC;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\SL5\Release\</OutputPath>
    <DefineConstants>TRACE;SILVERLIGHT;SIMPLE_JSON_DYNAMIC;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="mscorlib" />
    <Reference Include="system" />
    <Reference Include="System.Runtime.Serialization" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
        <SilverlightProjectProperties />
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-WP7.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>10.0.20506</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{A1116A6E-B599-4AB0-87ED-ED0F3452A7F6}</ProjectGuid>
    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
    <TargetFrameworkProfile>WindowsPhone</TargetFrameworkProfile>
    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
    <SilverlightApplication>false</SilverlightApplication>
    <ValidateXaml>true</ValidateXaml>
    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\WP7\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SILVERLIGHT;WINDOWS_PHONE;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_NO_LINQ_EXPRESSION;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\WP7\Release\</OutputPath>
    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE;SIMPLE_JSON_DATACONTRACT;SIMPLE_JSON_NO_LINQ_EXPRESSION;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="system" />
    <Reference Include="System.Runtime.Serialization" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
  <ProjectExtensions />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-WP71.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>10.0.20506</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{954977A1-6134-4F60-A0B7-FF041828E267}</ProjectGuid>
    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson_WP71</RootNamespace>
    <AssemblyName>SimpleJson-WP71</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
    <TargetFrameworkProfile>WindowsPhone71</TargetFrameworkProfile>
    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
    <SilverlightApplication>false</SilverlightApplication>
    <ValidateXaml>true</ValidateXaml>
    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>..\..\bin\WP71\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;SILVERLIGHT;WINDOWS_PHONE;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\bin\WP71\Release\</OutputPath>
    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <NoStdLib>true</NoStdLib>
    <NoConfig>true</NoConfig>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System.Runtime.Serialization" />
    <Reference Include="System.Windows" />
    <Reference Include="system" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Net" />
    <Reference Include="mscorlib.extensions" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
  <ProjectExtensions />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson-WindowsStore.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{95427DE1-88B5-4679-9D96-B7AC4739A7FA}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SimpleJson</RootNamespace>
    <AssemblyName>SimpleJson-WindowsStore</AssemblyName>
    <DefaultLanguage>en-US</DefaultLanguage>
    <FileAlignment>512</FileAlignment>
    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\ARM\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
    <NoWarn>;2008</NoWarn>
    <DebugType>full</DebugType>
    <PlatformTarget>ARM</PlatformTarget>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
    <OutputPath>bin\ARM\Release\</OutputPath>
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
    <Optimize>true</Optimize>
    <NoWarn>;2008</NoWarn>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>ARM</PlatformTarget>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x64\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
    <NoWarn>;2008</NoWarn>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <OutputPath>bin\x64\Release\</OutputPath>
    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
    <Optimize>true</Optimize>
    <NoWarn>;2008</NoWarn>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>..\..\bin\WindowsStore\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG;NETFX_CORE;SIMPLE_JSON_DYNAMIC;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <NoWarn>;2008</NoWarn>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
    <OutputPath>..\..\bin\WindowsStore\Release\</OutputPath>
    <DefineConstants>TRACE;NETFX_CORE;SIMPLE_JSON_DYNAMIC;SIMPLE_JSON_DATACONTRACT;</DefineConstants>
    <Optimize>true</Optimize>
    <NoWarn>;2008</NoWarn>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <ItemGroup>
    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="SimpleJson.cs" />
  </ItemGroup>
  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '12.0' ">
    <VisualStudioVersion>12.0</VisualStudioVersion>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: src/SimpleJson/SimpleJson.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="SimpleJson.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

// VERSION:

// NOTE: uncomment the following line to make SimpleJson class internal.
//#define SIMPLE_JSON_INTERNAL

// NOTE: uncomment the following line to make JsonArray and JsonObject class internal.
//#define SIMPLE_JSON_OBJARRAYINTERNAL

// NOTE: uncomment the following line to enable dynamic support.
//#define SIMPLE_JSON_DYNAMIC

// NOTE: uncomment the following line to enable DataContract support.
//#define SIMPLE_JSON_DATACONTRACT

// NOTE: uncomment the following line to enable IReadOnlyCollection<T> and IReadOnlyList<T> support.
//#define SIMPLE_JSON_READONLY_COLLECTIONS

// NOTE: uncomment the following line to disable linq expressions/compiled lambda (better performance) instead of method.invoke().
// define if you are using .net framework <= 3.0 or < WP7.5
//#define SIMPLE_JSON_NO_LINQ_EXPRESSION

// NOTE: uncomment the following line if you are compiling under Window Metro style application/library.
// usually already defined in properties
//#define NETFX_CORE;

// If you are targetting WinStore, WP8 and NET4.5+ PCL make sure to #define SIMPLE_JSON_TYPEINFO;

// original json parsing code from http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html

#if NETFX_CORE
#define SIMPLE_JSON_TYPEINFO
#endif

using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
#if !SIMPLE_JSON_NO_LINQ_EXPRESSION
using System.Linq.Expressions;
#endif
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
#if SIMPLE_JSON_DYNAMIC
using System.Dynamic;
#endif
using System.Globalization;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using SimpleJson.Reflection;

// ReSharper disable LoopCanBeConvertedToQuery
// ReSharper disable RedundantExplicitArrayCreation
// ReSharper disable SuggestUseVarKeywordEvident
namespace SimpleJson
{
    /// <summary>
    /// Represents the json array.
    /// </summary>
    [GeneratedCode("simple-json", "1.0.0")]
    [EditorBrowsable(EditorBrowsableState.Never)]
    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")]
#if SIMPLE_JSON_OBJARRAYINTERNAL
    internal
#else
    public
#endif
 class JsonArray : List<object>
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="JsonArray"/> class. 
        /// </summary>
        public JsonArray() { }

        /// <summary>
        /// Initializes a new instance of the <see cref="JsonArray"/> class. 
        /// </summary>
        /// <param name="capacity">The capacity of the json array.</param>
        public JsonArray(int capacity) : base(capacity) { }

        /// <summary>
        /// The json representation of the array.
        /// </summary>
        /// <returns>The json representation of the array.</returns>
        public override string ToString()
        {
            return SimpleJson.SerializeObject(this) ?? string.Empty;
        }
    }

    /// <summary>
    /// Represents the json object.
    /// </summary>
    [GeneratedCode("simple-json", "1.0.0")]
    [EditorBrowsable(EditorBrowsableState.Never)]
    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")]
#if SIMPLE_JSON_OBJARRAYINTERNAL
    internal
#else
    public
#endif
 class JsonObject :
#if SIMPLE_JSON_DYNAMIC
 DynamicObject,
#endif
 IDictionary<string, object>
    {
        /// <summary>
        /// The internal member dictionary.
        /// </summary>
        private readonly Dictionary<string, object> _members;

        /// <summary>
        /// Initializes a new instance of <see cref="JsonObject"/>.
        /// </summary>
        public JsonObject()
        {
            _members = new Dictionary<string, object>();
        }

        /// <summary>
        /// Initializes a new instance of <see cref="JsonObject"/>.
        /// </summary>
        /// <param name="comparer">The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> implementation to use when comparing keys, or null to use the default <see cref="T:System.Collections.Generic.EqualityComparer`1"/> for the type of the key.</param>
        public JsonObject(IEqualityComparer<string> comparer)
        {
            _members = new Dictionary<string, object>(comparer);
        }

        /// <summary>
        /// Gets the <see cref="System.Object"/> at the specified index.
        /// </summary>
        /// <value></value>
        public object this[int index]
        {
            get { return GetAtIndex(_members, index); }
        }

        internal static object GetAtIndex(IDictionary<string, object> obj, int index)
        {
            if (obj == null)
                throw new ArgumentNullException("obj");
            if (index >= obj.Count)
                throw new ArgumentOutOfRangeException("index");
            int i = 0;
            foreach (KeyValuePair<string, object> o in obj)
                if (i++ == index) return o.Value;
            return null;
        }

        /// <summary>
        /// Adds the specified key.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <param name="value">The value.</param>
        public void Add(string key, object value)
        {
            _members.Add(key, value);
        }

        /// <summary>
        /// Determines whether the specified key contains key.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <returns>
        ///     <c>true</c> if the specified key contains key; otherwise, <c>false</c>.
        /// </returns>
        public bool ContainsKey(string key)
        {
            return _members.ContainsKey(key);
        }

        /// <summary>
        /// Gets the keys.
        /// </summary>
        /// <value>The keys.</value>
        public ICollection<string> Keys
        {
            get { return _members.Keys; }
        }

        /// <summary>
        /// Removes the specified key.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <returns></returns>
        public bool Remove(string key)
        {
            return _members.Remove(key);
        }

        /// <summary>
        /// Tries the get value.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <param name="value">The value.</param>
        /// <returns></returns>
        public bool TryGetValue(string key, out object value)
        {
            return _members.TryGetValue(key, out value);
        }

        /// <summary>
        /// Gets the values.
        /// </summary>
        /// <value>The values.</value>
        public ICollection<object> Values
        {
            get { return _members.Values; }
        }

        /// <summary>
        /// Gets or sets the <see cref="System.Object"/> with the specified key.
        /// </summary>
        /// <value></value>
        public object this[string key]
        {
            get { return _members[key]; }
            set { _members[key] = value; }
        }

        /// <summary>
        /// Adds the specified item.
        /// </summary>
        /// <param name="item">The item.</param>
        public void Add(KeyValuePair<string, object> item)
        {
            _members.Add(item.Key, item.Value);
        }

        /// <summary>
        /// Clears this instance.
        /// </summary>
        public void Clear()
        {
            _members.Clear();
        }

        /// <summary>
        /// Determines whether [contains] [the specified item].
        /// </summary>
        /// <param name="item">The item.</param>
        /// <returns>
        /// 	<c>true</c> if [contains] [the specified item]; otherwise, <c>false</c>.
        /// </returns>
        public bool Contains(KeyValuePair<string, object> item)
        {
            return _members.ContainsKey(item.Key) && _members[item.Key] == item.Value;
        }

        /// <summary>
        /// Copies to.
        /// </summary>
        /// <param name="array">The array.</param>
        /// <param name="arrayIndex">Index of the array.</param>
        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)
        {
            if (array == null) throw new ArgumentNullException("array");
            int num = Count;
            foreach (KeyValuePair<string, object> kvp in this)
            {
                array[arrayIndex++] = kvp;
                if (--num <= 0)
                    return;
            }
        }

        /// <summary>
        /// Gets the count.
        /// </summary>
        /// <value>The count.</value>
        public int Count
        {
            get { return _members.Count; }
        }

        /// <summary>
        /// Gets a value indicating whether this instance is read only.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is read only; otherwise, <c>false</c>.
        /// </value>
        public bool IsReadOnly
        {
            get { return false; }
        }

        /// <summary>
        /// Removes the specified item.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <returns></returns>
        public bool Remove(KeyValuePair<string, object> item)
        {
            return _members.Remove(item.Key);
        }

        /// <summary>
        /// Gets the enumerator.
        /// </summary>
        /// <returns></returns>
        public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
        {
            return _members.GetEnumerator();
        }

        /// <summary>
        /// Returns an enumerator that iterates through a collection.
        /// </summary>
        /// <returns>
        /// An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
        /// </returns>
        IEnumerator IEnumerable.GetEnumerator()
        {
            return _members.GetEnumerator();
        }

        /// <summary>
        /// Returns a json <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
        /// </summary>
        /// <returns>
        /// A json <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
        /// </returns>
        public override string ToString()
        {
            return SimpleJson.SerializeObject(this);
        }

#if SIMPLE_JSON_DYNAMIC
        /// <summary>
        /// Provides implementation for type conversion operations. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations that convert an object from one type to another.
        /// </summary>
        /// <param name="binder">Provides information about the conversion operation. The binder.Type property provides the type to which the object must be converted. For example, for the statement (String)sampleObject in C# (CType(sampleObject, Type) in Visual Basic), where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, binder.Type returns the <see cref="T:System.String"/> type. The binder.Explicit property provides information about the kind of conversion that occurs. It returns true for explicit conversion and false for implicit conversion.</param>
        /// <param name="result">The result of the type conversion operation.</param>
        /// <returns>
        /// Alwasy returns true.
        /// </returns>
        public override bool TryConvert(ConvertBinder binder, out object result)
        {
            // <pex>
            if (binder == null)
                throw new ArgumentNullException("binder");
            // </pex>
            Type targetType = binder.Type;

            if ((targetType == typeof(IEnumerable)) ||
                (targetType == typeof(IEnumerable<KeyValuePair<string, object>>)) ||
                (targetType == typeof(IDictionary<string, object>)) ||
                (targetType == typeof(IDictionary)))
            {
                result = this;
                return true;
            }

            return base.TryConvert(binder, out result);
        }

        /// <summary>
        /// Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic.
        /// </summary>
        /// <param name="binder">Provides information about the deletion.</param>
        /// <returns>
        /// Alwasy returns true.
        /// </returns>
        public override bool TryDeleteMember(DeleteMemberBinder binder)
        {
            // <pex>
            if (binder == null)
                throw new ArgumentNullException("binder");
            // </pex>
            return _members.Remove(binder.Name);
        }

        /// <summary>
        /// Provides the implementation for operations that get a value by index. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for indexing operations.
        /// </summary>
        /// <param name="binder">Provides information about the operation.</param>
        /// <param name="indexes">The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, <paramref name="indexes"/> is equal to 3.</param>
        /// <param name="result">The result of the index operation.</param>
        /// <returns>
        /// Alwasy returns true.
        /// </returns>
        public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
        {
            if (indexes == null) throw new ArgumentNullException("indexes");
            if (indexes.Length == 1)
            {
                result = ((IDictionary<string, object>)this)[(string)indexes[0]];
                return true;
            }
            result = null;
            return true;
        }

        /// <summary>
        /// Provides the implementation for operations that get member values. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations such as getting a value for a property.
        /// </summary>
        /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive.</param>
        /// <param name="result">The result of the get operation. For example, if the method is called for a property, you can assign the property value to <paramref name="result"/>.</param>
        /// <returns>
        /// Alwasy returns true.
        /// </returns>
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            object value;
            if (_members.TryGetValue(binder.Name, out value))
            {
                result = value;
                return true;
            }
            result = null;
            return true;
        }

        /// <summary>
        /// Provides the implementation for operations that set a value by index. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations that access objects by a specified index.
        /// </summary>
        /// <param name="binder">Provides information about the operation.</param>
        /// <param name="indexes">The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, <paramref name="indexes"/> is equal to 3.</param>
        /// <param name="value">The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, <paramref name="value"/> is equal to 10.</param>
        /// <returns>
        /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.
        /// </returns>
        public override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value)
        {
            if (indexes == null) throw new ArgumentNullException("indexes");
            if (indexes.Length == 1)
            {
                ((IDictionary<string, object>)this)[(string)indexes[0]] = value;
                return true;
            }
            return base.TrySetIndex(binder, indexes, value);
        }

        /// <summary>
        /// Provides the implementation for operations that set member values. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations such as setting a value for a property.
        /// </summary>
        /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive.</param>
        /// <param name="value">The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, the <paramref name="value"/> is "Test".</param>
        /// <returns>
        /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.)
        /// </returns>
        public override bool TrySetMember(SetMemberBinder binder, object value)
        {
            // <pex>
            if (binder == null)
                throw new ArgumentNullException("binder");
            // </pex>
            _members[binder.Name] = value;
            return true;
        }

        /// <summary>
        /// Returns the enumeration of all dynamic member names.
        /// </summary>
        /// <returns>
        /// A sequence that contains dynamic member names.
        /// </returns>
        public override IEnumerable<string> GetDynamicMemberNames()
        {
            foreach (var key in Keys)
                yield return key;
        }
#endif
    }
}

namespace SimpleJson
{
    /// <summary>
    /// This class encodes and decodes JSON strings.
    /// Spec. details, see http://www.json.org/
    /// 
    /// JSON uses Arrays and Objects. These correspond here to the datatypes JsonArray(IList&lt;object>) and JsonObject(IDictionary&lt;string,object>).
    /// All numbers are parsed to doubles.
    /// </summary>
    [GeneratedCode("simple-json", "1.0.0")]
#if SIMPLE_JSON_INTERNAL
    internal
#else
    public
#endif
 static class SimpleJson
    {
        private const int TOKEN_NONE = 0;
        private const int TOKEN_CURLY_OPEN = 1;
        private const int TOKEN_CURLY_CLOSE = 2;
        private const int TOKEN_SQUARED_OPEN = 3;
        private const int TOKEN_SQUARED_CLOSE = 4;
        private const int TOKEN_COLON = 5;
        private const int TOKEN_COMMA = 6;
        private const int TOKEN_STRING = 7;
        private const int TOKEN_NUMBER = 8;
        private const int TOKEN_TRUE = 9;
        private const int TOKEN_FALSE = 10;
        private const int TOKEN_NULL = 11;
        private const int BUILDER_CAPACITY = 2000;

        private static readonly char[] EscapeTable;
        private static readonly char[] EscapeCharacters = new char[] { '"', '\\', '\b', '\f', '\n', '\r', '\t' };
        private static readonly string EscapeCharactersString = new string(EscapeCharacters);

        static SimpleJson()
        {
            EscapeTable = new char[93];
            EscapeTable['"']  = '"';
            EscapeTable['\\'] = '\\';
            EscapeTable['\b'] = 'b';
            EscapeTable['\f'] = 'f';
            EscapeTable['\n'] = 'n';
            EscapeTable['\r'] = 'r';
            EscapeTable['\t'] = 't';
        }

        /// <summary>
        /// Parses the string json into a value
        /// </summary>
        /// <param name="json">A JSON string.</param>
        /// <returns>An IList&lt;object>, a IDictionary&lt;string,object>, a double, a string, null, true, or false</returns>
        public static object DeserializeObject(string json)
        {
            object obj;
            if (TryDeserializeObject(json, out obj))
                return obj;
            throw new SerializationException("Invalid JSON string");
        }

        /// <summary>
        /// Try parsing the json string into a value.
        /// </summary>
        /// <param name="json">
        /// A JSON string.
        /// </param>
        /// <param name="obj">
        /// The object.
        /// </param>
        /// <returns>
        /// Returns true if successfull otherwise false.
        /// </returns>
        [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification="Need to support .NET 2")]
        public static bool TryDeserializeObject(string json, out object obj)
        {
            bool success = true;
            if (json != null)
            {
                char[] charArray = json.ToCharArray();
                int index = 0;
                obj = ParseValue(charArray, ref index, ref success);
            }
            else
                obj = null;

            return success;
        }

        public static object DeserializeObject(string json, Type type, IJsonSerializerStrategy jsonSerializerStrategy)
        {
            object jsonObject = DeserializeObject(json);
            return type == null || jsonObject != null && ReflectionUtils.IsAssignableFrom(jsonObject.GetType(), type)
                       ? jsonObject
                       : (jsonSerializerStrategy ?? CurrentJsonSerializerStrategy).DeserializeObject(jsonObject, type);
        }

        public static object DeserializeObject(string json, Type type)
        {
            return DeserializeObject(json, type, null);
        }

        public static T DeserializeObject<T>(string json, IJsonSerializerStrategy jsonSerializerStrategy)
        {
            return (T)DeserializeObject(json, typeof(T), jsonSerializerStrategy);
        }

        public static T DeserializeObject<T>(string json)
        {
            return (T)DeserializeObject(json, typeof(T), null);
        }

        /// <summary>
        /// Converts a IDictionary&lt;string,object> / IList&lt;object> object into a JSON string
        /// </summary>
        /// <param name="json">A IDictionary&lt;string,object> / IList&lt;object></param>
        /// <param name="jsonSerializerStrategy">Serializer strategy to use</param>
        /// <returns>A JSON encoded string, or null if object 'json' is not serializable</returns>
        public static string SerializeObject(object json, IJsonSerializerStrategy jsonSerializerStrategy)
        {
            StringBuilder builder = new StringBuilder(BUILDER_CAPACITY);
            bool success = SerializeValue(jsonSerializerStrategy, json, builder);
            return (success ? builder.ToString() : null);
        }

        public static string SerializeObject(object json)
        {
            return SerializeObject(json, CurrentJsonSerializerStrategy);
        }

        public static string EscapeToJavascriptString(string jsonString)
        {
            if (string.IsNullOrEmpty(jsonString))
                return jsonString;

            StringBuilder sb = new StringBuilder();
            char c;

            for (int i = 0; i < jsonString.Length; )
            {
                c = jsonString[i++];

                if (c == '\\')
                {
                    int remainingLength = jsonString.Length - i;
                    if (remainingLength >= 2)
                    {
                        char lookahead = jsonString[i];
                        if (lookahead == '\\')
                        {
                            sb.Append('\\');
                            ++i;
                        }
                        else if (lookahead == '"')
                        {
                            sb.Append("\"");
                            ++i;
                        }
                        else if (lookahead == 't')
                        {
                            sb.Append('\t');
                            ++i;
                        }
                        else if (lookahead == 'b')
                        {
                            sb.Append('\b');
                            ++i;
                        }
                        else if (lookahead == 'n')
                        {
                            sb.Append('\n');
                            ++i;
                        }
                        else if (lookahead == 'r')
                        {
                            sb.Append('\r');
                            ++i;
                        }
                    }
                }
                else
                {
                    sb.Append(c);
                }
            }
            return sb.ToString();
        }

        static IDictionary<string, object> ParseObject(char[] json, ref int index, ref bool success)
        {
            IDictionary<string, object> table = new JsonObject();
            int token;

            // {
            NextToken(json, ref index);

            bool done = false;
            while (!done)
            {
                token = LookAhead(json, index);
                if (token == TOKEN_NONE)
                {
                    success = false;
                    return null;
                }
                else if (token == TOKEN_COMMA)
                    NextToken(json, ref index);
                else if (token == TOKEN_CURLY_CLOSE)
                {
                    NextToken(json, ref index);
                    return table;
                }
                else
                {
                    // name
                    string name = ParseString(json, ref index, ref success);
                    if (!success)
                    {
                        success = false;
                        return null;
                    }
                    // :
                    token = NextToken(json, ref index);
                    if (token != TOKEN_COLON)
                    {
                        success = false;
                        return null;
                    }
                    // value
                    object value = ParseValue(json, ref index, ref success);
                    if (!success)
                    {
                        success = false;
                        return null;
                    }
                    table[name] = value;
                }
            }
            return table;
        }

        static JsonArray ParseArray(char[] json, ref int index, ref bool success)
        {
            JsonArray array = new JsonArray();

            // [
            NextToken(json, ref index);

            bool done = false;
            while (!done)
            {
                int token = LookAhead(json, index);
                if (token == TOKEN_NONE)
                {
                    success = false;
                    return null;
                }
                else if (token == TOKEN_COMMA)
                    NextToken(json, ref index);
                else if (token == TOKEN_SQUARED_CLOSE)
                {
                    NextToken(json, ref index);
                    break;
                }
                else
                {
                    object value = ParseValue(json, ref index, ref success);
                    if (!success)
                        return null;
                    array.Add(value);
                }
            }
            return array;
        }

        static object ParseValue(char[] json, ref int index, ref bool success)
        {
            switch (LookAhead(json, index))
            {
                case TOKEN_STRING:
                    return ParseString(json, ref index, ref success);
                case TOKEN_NUMBER:
                    return ParseNumber(json, ref index, ref success);
                case TOKEN_CURLY_OPEN:
                    return ParseObject(json, ref index, ref success);
                case TOKEN_SQUARED_OPEN:
                    return ParseArray(json, ref index, ref success);
                case TOKEN_TRUE:
                    NextToken(json, ref index);
                    return true;
                case TOKEN_FALSE:
                    NextToken(json, ref index);
                    return false;
                case TOKEN_NULL:
                    NextToken(json, ref index);
                    return null;
                case TOKEN_NONE:
                    break;
            }
            success = false;
            return null;
        }

        static string ParseString(char[] json, ref int index, ref bool success)
        {
            StringBuilder s = new StringBuilder(BUILDER_CAPACITY);
            char c;

            EatWhitespace(json, ref index);

            // "
            c = json[index++];
            bool complete = false;
            while (!complete)
            {
                if (index == json.Length)
                    break;

                c = json[index++];
                if (c == '"')
                {
                    complete = true;
                    break;
                }
                else if (c == '\\')
                {
                    if (index == json.Length)
                        break;
                    c = json[index++];
                    if (c == '"')
                        s.Append('"');
                    else if (c == '\\')
                        s.Append('\\');
                    else if (c == '/')
                        s.Append('/');
                    else if (c == 'b')
                        s.Append('\b');
                    else if (c == 'f')
                        s.Append('\f');
                    else if (c == 'n')
                        s.Append('\n');
                    else if (c == 'r')
                        s.Append('\r');
                    else if (c == 't')
                        s.Append('\t');
                    else if (c == 'u')
                    {
                        int remainingLength = json.Length - index;
                        if (remainingLength >= 4)
                        {
                            // parse the 32 bit hex into an integer codepoint
                            uint codePoint;
                            if (!(success = UInt32.TryParse(new string(json, index, 4), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out codePoint)))
                                return "";

                            // convert the integer codepoint to a unicode char and add to string
                            if (0xD800 <= codePoint && codePoint <= 0xDBFF)  // if high surrogate
                            {
                                index += 4; // skip 4 chars
                                remainingLength = json.Length - index;
                                if (remainingLength >= 6)
                                {
                                    uint lowCodePoint;
                                    if (new string(json, index, 2) == "\\u" && UInt32.TryParse(new string(json, index + 2, 4), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out lowCodePoint))
                                    {
                                        if (0xDC00 <= lowCodePoint && lowCodePoint <= 0xDFFF)    // if low surrogate
                                        {
                                            s.Append((char)codePoint);
                                            s.Append((char)lowCodePoint);
                                            index += 6; // skip 6 chars
                                            continue;
                                        }
                                    }
                                }
                                success = false;    // invalid surrogate pair
                                return "";
                            }
                            s.Append(ConvertFromUtf32((int)codePoint));
                            // skip 4 chars
                            index += 4;
                        }
                        else
                            break;
                    }
                }
                else
                    s.Append(c);
            }
            if (!complete)
            {
                success = false;
                return null;
            }
            return s.ToString();
        }

        private static string ConvertFromUtf32(int utf32)
        {
            // http://www.java2s.com/Open-Source/CSharp/2.6.4-mono-.net-core/System/System/Char.cs.htm
            if (utf32 < 0 || utf32 > 0x10FFFF)
                throw new ArgumentOutOfRangeException("utf32", "The argument must be from 0 to 0x10FFFF.");
            if (0xD800 <= utf32 && utf32 <= 0xDFFF)
                throw new ArgumentOutOfRangeException("utf32", "The argument must not be in surrogate pair range.");
            if (utf32 < 0x10000)
                return new string((char)utf32, 1);
            utf32 -= 0x10000;
            return new string(new char[] { (char)((utf32 >> 10) + 0xD800), (char)(utf32 % 0x0400 + 0xDC00) });
        }

        static object ParseNumber(char[] json, ref int index, ref bool success)
        {
            EatWhitespace(json, ref index);
            int lastIndex = GetLastIndexOfNumber(json, index);
            int charLength = (lastIndex - index) + 1;
            object returnNumber;
            string str = new string(json, index, charLength);
            if (str.IndexOf(".", StringComparison.OrdinalIgnoreCase) != -1 || str.IndexOf("e", StringComparison.OrdinalIgnoreCase) != -1)
            {
                double number;
                success = double.TryParse(new string(json, index, charLength), NumberStyles.Any, CultureInfo.InvariantCulture, out number);
                returnNumber = number;
            }
            else
            {
                long number;
                success = long.TryParse(new string(json, index, charLength), NumberStyles.Any, CultureInfo.InvariantCulture, out number);
                returnNumber = number;
            }
            index = lastIndex + 1;
            return returnNumber;
        }

        static int GetLastIndexOfNumber(char[] json, int index)
        {
            int lastIndex;
            for (lastIndex = index; lastIndex < json.Length; lastIndex++)
                if ("0123456789+-.eE".IndexOf(json[lastIndex]) == -1) break;
            return lastIndex - 1;
        }

        static void EatWhitespace(char[] json, ref int index)
        {
            for (; index < json.Length; index++)
                if (" \t\n\r\b\f".IndexOf(json[index]) == -1) break;
        }

        static int LookAhead(char[] json, int index)
        {
            int saveIndex = index;
            return NextToken(json, ref saveIndex);
        }

        [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
        static int NextToken(char[] json, ref int index)
        {
            EatWhitespace(json, ref index);
            if (index == json.Length)
                return TOKEN_NONE;
            char c = json[index];
            index++;
            switch (c)
            {
                case '{':
                    return TOKEN_CURLY_OPEN;
                case '}':
                    return TOKEN_CURLY_CLOSE;
                case '[':
                    return TOKEN_SQUARED_OPEN;
                case ']':
                    return TOKEN_SQUARED_CLOSE;
                case ',':
                    return TOKEN_COMMA;
                case '"':
                    return TOKEN_STRING;
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                case '-':
                    return TOKEN_NUMBER;
                case ':':
                    return TOKEN_COLON;
            }
            index--;
            int remainingLength = json.Length - index;
            // false
            if (remainingLength >= 5)
            {
                if (json[index] == 'f' && json[index + 1] == 'a' && json[index + 2] == 'l' && json[index + 3] == 's' && json[index + 4] == 'e')
                {
                    index += 5;
                    return TOKEN_FALSE;
                }
            }
            // true
            if (remainingLength >= 4)
            {
                if (json[index] == 't' && json[index + 1] == 'r' && json[index + 2] == 'u' && json[index + 3] == 'e')
                {
                    index += 4;
                    return TOKEN_TRUE;
                }
            }
            // null
            if (remainingLength >= 4)
            {
                if (json[index] == 'n' && json[index + 1] == 'u' && json[index + 2] == 'l' && json[index + 3] == 'l')
                {
                    index += 4;
                    return TOKEN_NULL;
                }
            }
            return TOKEN_NONE;
        }

        static bool SerializeValue(IJsonSerializerStrategy jsonSerializerStrategy, object value, StringBuilder builder)
        {
            bool success = true;
            string stringValue = value as string;
            if (stringValue != null)
                success = SerializeString(stringValue, builder);
            else
            {
                IDictionary<string, object> dict = value as IDictionary<string, object>;
                if (dict != null)
                {
                    success = SerializeObject(jsonSerializerStrategy, dict.Keys, dict.Values, builder);
                }
                else
                {
                    IDictionary<string, string> stringDictionary = value as IDictionary<string, string>;
                    if (stringDictionary != null)
                    {
                        success = SerializeObject(jsonSerializerStrategy, stringDictionary.Keys, stringDictionary.Values, builder);
                    }
                    else
                    {
                        IEnumerable enumerableValue = value as IEnumerable;
                        if (enumerableValue != null)
                            success = SerializeArray(jsonSerializerStrategy, enumerableValue, builder);
                        else if (IsNumeric(value))
                            success = SerializeNumber(value, builder);
                        else if (value is bool)
                            builder.Append((bool)value ? "true" : "false");
                        else if (value == null)
                            builder.Append("null");
                        else
                        {
                            object serializedObject;
                            success = jsonSerializerStrategy.TrySerializeNonPrimitiveObject(value, out serializedObject);
                            if (success)
                                SerializeValue(jsonSerializerStrategy, serializedObject, builder);
                        }
                    }
                }
            }
            return success;
        }

        static bool SerializeObject(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable keys, IEnumerable values, StringBuilder builder)
        {
            builder.Append("{");
            IEnumerator ke = keys.GetEnumerator();
            IEnumerator ve = values.GetEnumerator();
            bool first = true;
            while (ke.MoveNext() && ve.MoveNext())
            {
                object key = ke.Current;
                object value = ve.Current;
                if (!first)
                    builder.Append(",");
                string stringKey = key as string;
                if (stringKey != null)
                    SerializeString(stringKey, builder);
                else
                    if (!SerializeValue(jsonSerializerStrategy, value, builder)) return false;
                builder.Append(":");
                if (!SerializeValue(jsonSerializerStrategy, value, builder))
                    return false;
                first = false;
            }
            builder.Append("}");
            return true;
        }

        static bool SerializeArray(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable anArray, StringBuilder builder)
        {
            builder.Append("[");
            bool first = true;
            foreach (object value in anArray)
            {
                if (!first)
                    builder.Append(",");
                if (!SerializeValue(jsonSerializerStrategy, value, builder))
                    return false;
                first = false;
            }
            builder.Append("]");
            return true;
        }

        static bool SerializeString(string aString, StringBuilder builder)
        {
            // Happy path if there's nothing to be escaped. IndexOfAny is highly optimized (and unmanaged)
            if (aString.IndexOfAny(EscapeCharacters) == -1)
            {
                builder.Append('"');
                builder.Append(aString);
                builder.Append('"');

                return true;
            }

            builder.Append('"');
            int safeCharacterCount = 0;
            char[] charArray = aString.ToCharArray();

            for (int i = 0; i < charArray.Length; i++)
            {
                char c = charArray[i];

                // Non ascii characters are fine, buffer them up and send them to the builder
                // in larger chunks if possible. The escape table is a 1:1 translation table
                // with \0 [default(char)] denoting a safe character.
                if (c >= EscapeTable.Length || EscapeTable[c] == default(char))
                {
                    safeCharacterCount++;
                }
                else
                {
                    if (safeCharacterCount > 0)
                    {
                        builder.Append(charArray, i - safeCharacterCount, safeCharacterCount);
                        safeCharacterCount = 0;
                    }

                    builder.Append('\\');
                    builder.Append(EscapeTable[c]);
                }
            }

            if (safeCharacterCount > 0)
            {
                builder.Append(charArray, charArray.Length - safeCharacterCount, safeCharacterCount);
            }

            builder.Append('"');
            return true;
        }

        static bool SerializeNumber(object number, StringBuilder builder)
        {
            if (number is long)
                builder.Append(((long)number).ToString(CultureInfo.InvariantCulture));
            else if (number is ulong)
                builder.Append(((ulong)number).ToString(CultureInfo.InvariantCulture));
            else if (number is int)
                builder.Append(((int)number).ToString(CultureInfo.InvariantCulture));
            else if (number is uint)
                builder.Append(((uint)number).ToString(CultureInfo.InvariantCulture));
            else if (number is decimal)
                builder.Append(((decimal)number).ToString(CultureInfo.InvariantCulture));
            else if (number is float)
                builder.Append(((float)number).ToString(CultureInfo.InvariantCulture));
            else
                builder.Append(Convert.ToDouble(number, CultureInfo.InvariantCulture).ToString("r", CultureInfo.InvariantCulture));
            return true;
        }

        /// <summary>
        /// Determines if a given object is numeric in any way
        /// (can be integer, double, null, etc).
        /// </summary>
        static bool IsNumeric(object value)
        {
            if (value is sbyte) return true;
            if (value is byte) return true;
            if (value is short) return true;
            if (value is ushort) return true;
            if (value is int) return true;
            if (value is uint) return true;
            if (value is long) return true;
            if (value is ulong) return true;
            if (value is float) return true;
            if (value is double) return true;
            if (value is decimal) return true;
            return false;
        }

        private static IJsonSerializerStrategy _currentJsonSerializerStrategy;
        public static IJsonSerializerStrategy CurrentJsonSerializerStrategy
        {
            get
            {
                return _currentJsonSerializerStrategy ??
                    (_currentJsonSerializerStrategy =
#if SIMPLE_JSON_DATACONTRACT
 DataContractJsonSerializerStrategy
#else
 PocoJsonSerializerStrategy
#endif
);
            }
            set
            {
                _currentJsonSerializerStrategy = value;
            }
        }

        private static PocoJsonSerializerStrategy _pocoJsonSerializerStrategy;
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        public static PocoJsonSerializerStrategy PocoJsonSerializerStrategy
        {
            get
            {
                return _pocoJsonSerializerStrategy ?? (_pocoJsonSerializerStrategy = new PocoJsonSerializerStrategy());
            }
        }

#if SIMPLE_JSON_DATACONTRACT

        private static DataContractJsonSerializerStrategy _dataContractJsonSerializerStrategy;
        [System.ComponentModel.EditorBrowsable(EditorBrowsableState.Advanced)]
        public static DataContractJsonSerializerStrategy DataContractJsonSerializerStrategy
        {
            get
            {
                return _dataContractJsonSerializerStrategy ?? (_dataContractJsonSerializerStrategy = new DataContractJsonSerializerStrategy());
            }
        }

#endif
    }
    
    [GeneratedCode("simple-json", "1.0.0")]
#if SIMPLE_JSON_INTERNAL
    internal
#else
    public
#endif
 interface IJsonSerializerStrategy
    {
        [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification="Need to support .NET 2")]
        bool TrySerializeNonPrimitiveObject(object input, out object output);
        object DeserializeObject(object value, Type type);
    }

    [GeneratedCode("simple-json", "1.0.0")]
#if SIMPLE_JSON_INTERNAL
    internal
#else
    public
#endif
 class PocoJsonSerializerStrategy : IJsonSerializerStrategy
    {
        internal IDictionary<Type, ReflectionUtils.ConstructorDelegate> ConstructorCache;
        internal IDictionary<Type, IDictionary<string, ReflectionUtils.GetDelegate>> GetCache;
        internal IDictionary<Type, IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>> SetCache;

        internal static readonly Type[] EmptyTypes = new Type[0];
        internal static readonly Type[] ArrayConstructorParameterTypes = new Type[] { typeof(int) };

        private static readonly string[] Iso8601Format = new string[]
                                                             {
                                                                 @"yyyy-MM-dd\THH:mm:ss.FFFFFFF\Z",
                                                                 @"yyyy-MM-dd\THH:mm:ss\Z",
                                                                 @"yyyy-MM-dd\THH:mm:ssK"
                                                             };

        public PocoJsonSerializerStrategy()
        {
            ConstructorCache = new ReflectionUtils.ThreadSafeDictionary<Type, ReflectionUtils.ConstructorDelegate>(ContructorDelegateFactory);
            GetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, ReflectionUtils.GetDelegate>>(GetterValueFactory);
            SetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>>(SetterValueFactory);
        }

        protected virtual string MapClrMemberNameToJsonFieldName(string clrPropertyName)
        {
            return clrPropertyName;
        }

        internal virtual ReflectionUtils.ConstructorDelegate ContructorDelegateFactory(Type key)
        {
            return ReflectionUtils.GetContructor(key, key.IsArray ? ArrayConstructorParameterTypes : EmptyTypes);
        }

        internal virtual IDictionary<string, ReflectionUtils.GetDelegate> GetterValueFactory(Type type)
        {
            IDictionary<string, ReflectionUtils.GetDelegate> result = new Dictionary<string, ReflectionUtils.GetDelegate>();
            foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type))
            {
                if (propertyInfo.CanRead)
                {
                    MethodInfo getMethod = ReflectionUtils.GetGetterMethodInfo(propertyInfo);
                    if (getMethod.IsStatic || !getMethod.IsPublic)
                        continue;
                    result[MapClrMemberNameToJsonFieldName(propertyInfo.Name)] = ReflectionUtils.GetGetMethod(propertyInfo);
                }
            }
            foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type))
            {
                if (fieldInfo.IsStatic || !fieldInfo.IsPublic)
                    continue;
                result[MapClrMemberNameToJsonFieldName(fieldInfo.Name)] = ReflectionUtils.GetGetMethod(fieldInfo);
            }
            return result;
        }

        internal virtual IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> SetterValueFactory(Type type)
        {
            IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> result = new Dictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>();
            foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type))
            {
                if (propertyInfo.CanWrite)
                {
                    MethodInfo setMethod = ReflectionUtils.GetSetterMethodInfo(propertyInfo);
                    if (setMethod.IsStatic || !setMethod.IsPublic)
                        continue;
                    result[MapClrMemberNameToJsonFieldName(propertyInfo.Name)] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(propertyInfo.PropertyType, ReflectionUtils.GetSetMethod(propertyInfo));
                }
            }
            foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type))
            {
                if (fieldInfo.IsInitOnly || fieldInfo.IsStatic || !fieldInfo.IsPublic)
                    continue;
                result[MapClrMemberNameToJsonFieldName(fieldInfo.Name)] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(fieldInfo.FieldType, ReflectionUtils.GetSetMethod(fieldInfo));
            }
            return result;
        }

        public virtual bool TrySerializeNonPrimitiveObject(object input, out object output)
        {
            return TrySerializeKnownTypes(input, out output) || TrySerializeUnknownTypes(input, out output);
        }

        [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
        public virtual object DeserializeObject(object value, Type type)
        {
            if (type == null) throw new ArgumentNullException("type");
            string str = value as string;

            if (type == typeof (Guid) && string.IsNullOrEmpty(str))
                return default(Guid);

            if (value == null)
                return null;
            
            object obj = null;

            if (str != null)
            {
                if (str.Length != 0) // We know it can't be null now.
                {
                    if (type == typeof(DateTime) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTime)))
                        return DateTime.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
                    if (type == typeof(DateTimeOffset) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTimeOffset)))
                        return DateTimeOffset.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
                    if (type == typeof(Guid) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid)))
                        return new Guid(str);
                    if (type == typeof(Uri))
                    {
                        bool isValid =  Uri.IsWellFormedUriString(str, UriKind.RelativeOrAbsolute);

                        Uri result;
                        if (isValid && Uri.TryCreate(str, UriKind.RelativeOrAbsolute, out result))
                            return result;

												return null;
                    }
                  
									if (type == typeof(string))  
										return str;

									return Convert.ChangeType(str, type, CultureInfo.InvariantCulture);
                }
                else
                {
                    if (type == typeof(Guid))
                        obj = default(Guid);
                    else if (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid))
                        obj = null;
                    else
                        obj = str;
                }
                // Empty string case
                if (!ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid))
                    return str;
            }
            else if (value is bool)
                return value;
            
            bool valueIsLong = value is long;
            bool valueIsDouble = value is double;
            if ((valueIsLong && type == typeof(long)) || (valueIsDouble && type == typeof(double)))
                return value;
            if ((valueIsDouble && type != typeof(double)) || (valueIsLong && type != typeof(long)))
            {
                obj = type == typeof(int) || type == typeof(long) || type == typeof(double) || type == typeof(float) || type == typeof(bool) || type == typeof(decimal) || type == typeof(byte) || type == typeof(short)
                            ? Convert.ChangeType(value, type, CultureInfo.InvariantCulture)
                            : value;
            }
            else
            {
                IDictionary<string, object> objects = value as IDictionary<string, object>;
                if (objects != null)
                {
                    IDictionary<string, object> jsonObject = objects;

                    if (ReflectionUtils.IsTypeDictionary(type))
                    {
                        // if dictionary then
                        Type[] types = ReflectionUtils.GetGenericTypeArguments(type);
                        Type keyType = types[0];
                        Type valueType = types[1];

                        Type genericType = typeof(Dictionary<,>).MakeGenericType(keyType, valueType);

                        IDictionary dict = (IDictionary)ConstructorCache[genericType]();

                        foreach (KeyValuePair<string, object> kvp in jsonObject)
                            dict.Add(kvp.Key, DeserializeObject(kvp.Value, valueType));

                        obj = dict;
                    }
                    else
                    {
                        if (type == typeof(object))
                            obj = value;
                        else
                        {
                            obj = ConstructorCache[type]();
                            foreach (KeyValuePair<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> setter in SetCache[type])
                            {
                                object jsonValue;
                                if (jsonObject.TryGetValue(setter.Key, out jsonValue))
                                {
                                    jsonValue = DeserializeObject(jsonValue, setter.Value.Key);
                                    setter.Value.Value(obj, jsonValue);
                                }
                            }
                        }
                    }
                }
                else
                {
                    IList<object> valueAsList = value as IList<object>;
                    if (valueAsList != null)
                    {
                        IList<object> jsonObject = valueAsList;
                        IList list = null;

                        if (type.IsArray)
                        {
                            list = (IList)ConstructorCache[type](jsonObject.Count);
                            int i = 0;
                            foreach (object o in jsonObject)
                                list[i++] = DeserializeObject(o, type.GetElementType());
                        }
                        else if (ReflectionUtils.IsTypeGenericeCollectionInterface(type) || ReflectionUtils.IsAssignableFrom(typeof(IList), type))
                        {
                            Type innerType = ReflectionUtils.GetGenericListElementType(type);
                            list = (IList)(ConstructorCache[type] ?? ConstructorCache[typeof(List<>).MakeGenericType(innerType)])(jsonObject.Count);
                            foreach (object o in jsonObject)
                                list.Add(DeserializeObject(o, innerType));
                        }
                        obj = list;
                    }
                }
                return obj;
            }
            if (ReflectionUtils.IsNullableType(type))
                return ReflectionUtils.ToNullableType(obj, type);
            return obj;
        }

        protected virtual object SerializeEnum(Enum p)
        {
            return Convert.ToDouble(p, CultureInfo.InvariantCulture);
        }

        [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification="Need to support .NET 2")]
        protected virtual bool TrySerializeKnownTypes(object input, out object output)
        {
            bool returnValue = true;
            if (input is DateTime)
                output = ((DateTime)input).ToUniversalTime().ToString(Iso8601Format[0], CultureInfo.InvariantCulture);
            else if (input is DateTimeOffset)
                output = ((DateTimeOffset)input).ToUniversalTime().ToString(Iso8601Format[0], CultureInfo.InvariantCulture);
            else if (input is Guid)
                output = ((Guid)input).ToString("D");
            else if (input is Uri)
                output = input.ToString();
            else
            {
                Enum inputEnum = input as Enum;
                if (inputEnum != null)
                    output = SerializeEnum(inputEnum);
                else
                {
                    returnValue = false;
                    output = null;
                }
            }
            return returnValue;
        }
        [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification="Need to support .NET 2")]
        protected virtual bool TrySerializeUnknownTypes(object input, out object output)
        {
            if (input == null) throw new ArgumentNullException("input");
            output = null;
            Type type = input.GetType();
            if (type.FullName == null)
                return false;
            IDictionary<string, object> obj = new JsonObject();
            IDictionary<string, ReflectionUtils.GetDelegate> getters = GetCache[type];
            foreach (KeyValuePair<string, ReflectionUtils.GetDelegate> getter in getters)
            {
                if (getter.Value != null)
                    obj.Add(MapClrMemberNameToJsonFieldName(getter.Key), getter.Value(input));
            }
            output = obj;
            return true;
        }
    }

#if SIMPLE_JSON_DATACONTRACT
    [GeneratedCode("simple-json", "1.0.0")]
#if SIMPLE_JSON_INTERNAL
    internal
#else
    public
#endif
 class DataContractJsonSerializerStrategy : PocoJsonSerializerStrategy
    {
        public DataContractJsonSerializerStrategy()
        {
            GetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, ReflectionUtils.GetDelegate>>(GetterValueFactory);
            SetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>>(SetterValueFactory);
        }

        internal override IDictionary<string, ReflectionUtils.GetDelegate> GetterValueFactory(Type type)
        {
            bool hasDataContract = ReflectionUtils.GetAttribute(type, typeof(DataContractAttribute)) != null;
            if (!hasDataContract)
                return base.GetterValueFactory(type);
            string jsonKey;
            IDictionary<string, ReflectionUtils.GetDelegate> result = new Dictionary<string, ReflectionUtils.GetDelegate>();
            foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type))
            {
                if (propertyInfo.CanRead)
                {
                    MethodInfo getMethod = ReflectionUtils.GetGetterMethodInfo(propertyInfo);
                    if (!getMethod.IsStatic && CanAdd(propertyInfo, out jsonKey))
                        result[jsonKey] = ReflectionUtils.GetGetMethod(propertyInfo);
                }
            }
            foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type))
            {
                if (!fieldInfo.IsStatic && CanAdd(fieldInfo, out jsonKey))
                    result[jsonKey] = ReflectionUtils.GetGetMethod(fieldInfo);
            }
            return result;
        }

        internal override IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> SetterValueFactory(Type type)
        {
            bool hasDataContract = ReflectionUtils.GetAttribute(type, typeof(DataContractAttribute)) != null;
            if (!hasDataContract)
                return base.SetterValueFactory(type);
            string jsonKey;
            IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> result = new Dictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>();
            foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type))
            {
                if (propertyInfo.CanWrite)
                {
                    MethodInfo setMethod = ReflectionUtils.GetSetterMethodInfo(propertyInfo);
                    if (!setMethod.IsStatic && CanAdd(propertyInfo, out jsonKey))
                        result[jsonKey] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(propertyInfo.PropertyType, ReflectionUtils.GetSetMethod(propertyInfo));
                }
            }
            foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type))
            {
                if (!fieldInfo.IsInitOnly && !fieldInfo.IsStatic && CanAdd(fieldInfo, out jsonKey))
                    result[jsonKey] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(fieldInfo.FieldType, ReflectionUtils.GetSetMethod(fieldInfo));
            }
            // todo implement sorting for DATACONTRACT.
            return result;
        }

        private static bool CanAdd(MemberInfo info, out string jsonKey)
        {
            jsonKey = null;
            if (ReflectionUtils.GetAttribute(info, typeof(IgnoreDataMemberAttribute)) != null)
                return false;
            DataMemberAttribute dataMemberAttribute = (DataMemberAttribute)ReflectionUtils.GetAttribute(info, typeof(DataMemberAttribute));
            if (dataMemberAttribute == null)
                return false;
            jsonKey = string.IsNullOrEmpty(dataMemberAttribute.Name) ? info.Name : dataMemberAttribute.Name;
            return true;
        }
    }

#endif

    namespace Reflection
    {
        // This class is meant to be copied into other libraries. So we want to exclude it from Code Analysis rules
 	    // that might be in place in the target project.
        [GeneratedCode("reflection-utils", "1.0.0")]
#if SIMPLE_JSON_REFLECTION_UTILS_PUBLIC
        public
#else
        internal
#endif
 class ReflectionUtils
        {
            private static readonly object[] EmptyObjects = new object[] { };

            public delegate object GetDelegate(object source);
            public delegate void SetDelegate(object source, object value);
            public delegate object ConstructorDelegate(params object[] args);

            public delegate TValue ThreadSafeDictionaryValueFactory<TKey, TValue>(TKey key);

#if SIMPLE_JSON_TYPEINFO
            public static TypeInfo GetTypeInfo(Type type)
            {
                return type.GetTypeInfo();
            }
#else
            public static Type GetTypeInfo(Type type)
            {
                return type;
            }
#endif

            public static Attribute GetAttribute(MemberInfo info, Type type)
            {
#if SIMPLE_JSON_TYPEINFO
                if (info == null || type == null || !info.IsDefined(type))
                    return null;
                return info.GetCustomAttribute(type);
#else
                if (info == null || type == null || !Attribute.IsDefined(info, type))
                    return null;
                return Attribute.GetCustomAttribute(info, type);
#endif
            }

            public static Type GetGenericListElementType(Type type)
            {
                IEnumerable<Type> interfaces;
#if SIMPLE_JSON_TYPEINFO
                interfaces = type.GetTypeInfo().ImplementedInterfaces;
#else
                interfaces = type.GetInterfaces();
#endif
                foreach (Type implementedInterface in interfaces)
                {
                    if (IsTypeGeneric(implementedInterface) &&
                        implementedInterface.GetGenericTypeDefinition() == typeof (IList<>))
                    {
                        return GetGenericTypeArguments(implementedInterface)[0];
                    }
                }
                return GetGenericTypeArguments(type)[0];
            }

            public static Attribute GetAttribute(Type objectType, Type attributeType)
            {

#if SIMPLE_JSON_TYPEINFO
                if (objectType == null || attributeType == null || !objectType.GetTypeInfo().IsDefined(attributeType))
                    return null;
                return objectType.GetTypeInfo().GetCustomAttribute(attributeType);
#else
                if (objectType == null || attributeType == null || !Attribute.IsDefined(objectType, attributeType))
                    return null;
                return Attribute.GetCustomAttribute(objectType, attributeType);
#endif
            }

            public static Type[] GetGenericTypeArguments(Type type)
            {
#if SIMPLE_JSON_TYPEINFO
                return type.GetTypeInfo().GenericTypeArguments;
#else
                return type.GetGenericArguments();
#endif
            }

            public static bool IsTypeGeneric(Type type)
            {
                return GetTypeInfo(type).IsGenericType;
            }

            public static bool IsTypeGenericeCollectionInterface(Type type)
            {
                if (!IsTypeGeneric(type))
                    return false;

                Type genericDefinition = type.GetGenericTypeDefinition();

                return (genericDefinition == typeof(IList<>)
                    || genericDefinition == typeof(ICollection<>)
                    || genericDefinition == typeof(IEnumerable<>)
#if SIMPLE_JSON_READONLY_COLLECTIONS
                    || genericDefinition == typeof(IReadOnlyCollection<>)
                    || genericDefinition == typeof(IReadOnlyList<>)
#endif
                    );
            }

            public static bool IsAssignableFrom(Type type1, Type type2)
            {
                return GetTypeInfo(type1).IsAssignableFrom(GetTypeInfo(type2));
            }

            public static bool IsTypeDictionary(Type type)
            {
#if SIMPLE_JSON_TYPEINFO
                if (typeof(IDictionary<,>).GetTypeInfo().IsAssignableFrom(type.GetTypeInfo()))
                    return true;
#else
                if (typeof(System.Collections.IDictionary).IsAssignableFrom(type))
                    return true;
#endif
                if (!GetTypeInfo(type).IsGenericType)
                    return false;

                Type genericDefinition = type.GetGenericTypeDefinition();
                return genericDefinition == typeof(IDictionary<,>);
            }

            public static bool IsNullableType(Type type)
            {
                return GetTypeInfo(type).IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>);
            }

            public static object ToNullableType(object obj, Type nullableType)
            {
                return obj == null ? null : Convert.ChangeType(obj, Nullable.GetUnderlyingType(nullableType), CultureInfo.InvariantCulture);
            }

            public static bool IsValueType(Type type)
            {
                return GetTypeInfo(type).IsValueType;
            }

            public static IEnumerable<ConstructorInfo> GetConstructors(Type type)
            {
#if SIMPLE_JSON_TYPEINFO
                return type.GetTypeInfo().DeclaredConstructors;
#else
                return type.GetConstructors();
#endif
            }

            public static ConstructorInfo GetConstructorInfo(Type type, params Type[] argsType)
            {
                IEnumerable<ConstructorInfo> constructorInfos = GetConstructors(type);
                int i;
                bool matches;
                foreach (ConstructorInfo constructorInfo in constructorInfos)
                {
                    ParameterInfo[] parameters = constructorInfo.GetParameters();
                    if (argsType.Length != parameters.Length)
                        continue;

                    i = 0;
                    matches = true;
                    foreach (ParameterInfo parameterInfo in constructorInfo.GetParameters())
                    {
                        if (parameterInfo.ParameterType != argsType[i])
                        {
                            matches = false;
                            break;
                        }
                    }

                    if (matches)
                        return constructorInfo;
                }

                return null;
            }

            public static IEnumerable<PropertyInfo> GetProperties(Type type)
            {
#if SIMPLE_JSON_TYPEINFO
                return type.GetRuntimeProperties();
#else
                return type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
#endif
            }

            public static IEnumerable<FieldInfo> GetFields(Type type)
            {
#if SIMPLE_JSON_TYPEINFO
                return type.GetRuntimeFields();
#else
                return type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
#endif
            }

            public static MethodInfo GetGetterMethodInfo(PropertyInfo propertyInfo)
            {
#if SIMPLE_JSON_TYPEINFO
                return propertyInfo.GetMethod;
#else
                return propertyInfo.GetGetMethod(true);
#endif
            }

            public static MethodInfo GetSetterMethodInfo(PropertyInfo propertyInfo)
            {
#if SIMPLE_JSON_TYPEINFO
                return propertyInfo.SetMethod;
#else
                return propertyInfo.GetSetMethod(true);
#endif
            }

            public static ConstructorDelegate GetContructor(ConstructorInfo constructorInfo)
            {
#if SIMPLE_JSON_NO_LINQ_EXPRESSION
                return GetConstructorByReflection(constructorInfo);
#else
                return GetConstructorByExpression(constructorInfo);
#endif
            }

            public static ConstructorDelegate GetContructor(Type type, params Type[] argsType)
            {
#if SIMPLE_JSON_NO_LINQ_EXPRESSION
                return GetConstructorByReflection(type, argsType);
#else
                return GetConstructorByExpression(type, argsType);
#endif
            }

            public static ConstructorDelegate GetConstructorByReflection(ConstructorInfo constructorInfo)
            {
                return delegate(object[] args) { return constructorInfo.Invoke(args); };
            }

            public static ConstructorDelegate GetConstructorByReflection(Type type, params Type[] argsType)
            {
                ConstructorInfo constructorInfo = GetConstructorInfo(type, argsType);
                return constructorInfo == null ? null : GetConstructorByReflection(constructorInfo);
            }

#if !SIMPLE_JSON_NO_LINQ_EXPRESSION

            public static ConstructorDelegate GetConstructorByExpression(ConstructorInfo constructorInfo)
            {
                ParameterInfo[] paramsInfo = constructorInfo.GetParameters();
                ParameterExpression param = Expression.Parameter(typeof(object[]), "args");
                Expression[] argsExp = new Expression[paramsInfo.Length];
                for (int i = 0; i < paramsInfo.Length; i++)
                {
                    Expression index = Expression.Constant(i);
                    Type paramType = paramsInfo[i].ParameterType;
                    Expression paramAccessorExp = Expression.ArrayIndex(param, index);
                    Expression paramCastExp = Expression.Convert(paramAccessorExp, paramType);
                    argsExp[i] = paramCastExp;
                }
                NewExpression newExp = Expression.New(constructorInfo, argsExp);
                Expression<Func<object[], object>> lambda = Expression.Lambda<Func<object[], object>>(newExp, param);
                Func<object[], object> compiledLambda = lambda.Compile();
                return delegate(object[] args) { return compiledLambda(args); };
            }

            public static ConstructorDelegate GetConstructorByExpression(Type type, params Type[] argsType)
            {
                ConstructorInfo constructorInfo = GetConstructorInfo(type, argsType);
                return constructorInfo == null ? null : GetConstructorByExpression(constructorInfo);
            }

#endif

            public static GetDelegate GetGetMethod(PropertyInfo propertyInfo)
            {
#if SIMPLE_JSON_NO_LINQ_EXPRESSION
                return GetGetMethodByReflection(propertyInfo);
#else
                return GetGetMethodByExpression(propertyInfo);
#endif
            }

            public static GetDelegate GetGetMethod(FieldInfo fieldInfo)
            {
#if SIMPLE_JSON_NO_LINQ_EXPRESSION
                return GetGetMethodByReflection(fieldInfo);
#else
                return GetGetMethodByExpression(fieldInfo);
#endif
            }

            public static GetDelegate GetGetMethodByReflection(PropertyInfo propertyInfo)
            {
                MethodInfo methodInfo = GetGetterMethodInfo(propertyInfo);
                return delegate(object source) { return methodInfo.Invoke(source, EmptyObjects); };
            }

            public static GetDelegate GetGetMethodByReflection(FieldInfo fieldInfo)
            {
                return delegate(object source) { return fieldInfo.GetValue(source); };
            }

#if !SIMPLE_JSON_NO_LINQ_EXPRESSION

            public static GetDelegate GetGetMethodByExpression(PropertyInfo propertyInfo)
            {
                MethodInfo getMethodInfo = GetGetterMethodInfo(propertyInfo);
                ParameterExpression instance = Expression.Parameter(typeof(object), "instance");
                UnaryExpression instanceCast = (!IsValueType(propertyInfo.DeclaringType)) ? Expression.TypeAs(instance, propertyInfo.DeclaringType) : Expression.Convert(instance, propertyInfo.DeclaringType);
                Func<object, object> compiled = Expression.Lambda<Func<object, object>>(Expression.TypeAs(Expression.Call(instanceCast, getMethodInfo), typeof(object)), instance).Compile();
                return delegate(object source) { return compiled(source); };
            }

            public static GetDelegate GetGetMethodByExpression(FieldInfo fieldInfo)
            {
                ParameterExpression instance = Expression.Parameter(typeof(object), "instance");
                MemberExpression member = Expression.Field(Expression.Convert(instance, fieldInfo.DeclaringType), fieldInfo);
                GetDelegate compiled = Expression.Lambda<GetDelegate>(Expression.Convert(member, typeof(object)), instance).Compile();
                return delegate(object source) { return compiled(source); };
            }

#endif

            public static SetDelegate GetSetMethod(PropertyInfo propertyInfo)
            {
#if SIMPLE_JSON_NO_LINQ_EXPRESSION
                return GetSetMethodByReflection(propertyInfo);
#else
                return GetSetMethodByExpression(propertyInfo);
#endif
            }

            public static SetDelegate GetSetMethod(FieldInfo fieldInfo)
            {
#if SIMPLE_JSON_NO_LINQ_EXPRESSION
                return GetSetMethodByReflection(fieldInfo);
#else
                return GetSetMethodByExpression(fieldInfo);
#endif
            }

            public static SetDelegate GetSetMethodByReflection(PropertyInfo propertyInfo)
            {
                MethodInfo methodInfo = GetSetterMethodInfo(propertyInfo);
                return delegate(object source, object value) { methodInfo.Invoke(source, new object[] { value }); };
            }

            public static SetDelegate GetSetMethodByReflection(FieldInfo fieldInfo)
            {
                return delegate(object source, object value) { fieldInfo.SetValue(source, value); };
            }

#if !SIMPLE_JSON_NO_LINQ_EXPRESSION

            public static SetDelegate GetSetMethodByExpression(PropertyInfo propertyInfo)
            {
                MethodInfo setMethodInfo = GetSetterMethodInfo(propertyInfo);
                ParameterExpression instance = Expression.Parameter(typeof(object), "instance");
                ParameterExpression value = Expression.Parameter(typeof(object), "value");
                UnaryExpression instanceCast = (!IsValueType(propertyInfo.DeclaringType)) ? Expression.TypeAs(instance, propertyInfo.DeclaringType) : Expression.Convert(instance, propertyInfo.DeclaringType);
                UnaryExpression valueCast = (!IsValueType(propertyInfo.PropertyType)) ? Expression.TypeAs(value, propertyInfo.PropertyType) : Expression.Convert(value, propertyInfo.PropertyType);
                Action<object, object> compiled = Expression.Lambda<Action<object, object>>(Expression.Call(instanceCast, setMethodInfo, valueCast), new ParameterExpression[] { instance, value }).Compile();
                return delegate(object source, object val) { compiled(source, val); };
            }

            public static SetDelegate GetSetMethodByExpression(FieldInfo fieldInfo)
            {
                ParameterExpression instance = Expression.Parameter(typeof(object), "instance");
                ParameterExpression value = Expression.Parameter(typeof(object), "value");
                Action<object, object> compiled = Expression.Lambda<Action<object, object>>(
                    Assign(Expression.Field(Expression.Convert(instance, fieldInfo.DeclaringType), fieldInfo), Expression.Convert(value, fieldInfo.FieldType)), instance, value).Compile();
                return delegate(object source, object val) { compiled(source, val); };
            }

            public static BinaryExpression Assign(Expression left, Expression right)
            {
#if SIMPLE_JSON_TYPEINFO
                return Expression.Assign(left, right);
#else
                MethodInfo assign = typeof(Assigner<>).MakeGenericType(left.Type).GetMethod("Assign");
                BinaryExpression assignExpr = Expression.Add(left, right, assign);
                return assignExpr;
#endif
            }

            private static class Assigner<T>
            {
                public static T Assign(ref T left, T right)
                {
                    return (left = right);
                }
            }

#endif

            public sealed class ThreadSafeDictionary<TKey, TValue> : IDictionary<TKey, TValue>
            {
                private readonly object _lock = new object();
                private readonly ThreadSafeDictionaryValueFactory<TKey, TValue> _valueFactory;
                private Dictionary<TKey, TValue> _dictionary;

                public ThreadSafeDictionary(ThreadSafeDictionaryValueFactory<TKey, TValue> valueFactory)
                {
                    _valueFactory = valueFactory;
                }

                private TValue Get(TKey key)
                {
                    if (_dictionary == null)
                        return AddValue(key);
                    TValue value;
                    if (!_dictionary.TryGetValue(key, out value))
                        return AddValue(key);
                    return value;
                }

                private TValue AddValue(TKey key)
                {
                    TValue value = _valueFactory(key);
                    lock (_lock)
                    {
                        if (_dictionary == null)
                        {
                            _dictionary = new Dictionary<TKey, TValue>();
                            _dictionary[key] = value;
                        }
                        else
                        {
                            TValue val;
                            if (_dictionary.TryGetValue(key, out val))
                                return val;
                            Dictionary<TKey, TValue> dict = new Dictionary<TKey, TValue>(_dictionary);
                            dict[key] = value;
                            _dictionary = dict;
                        }
                    }
                    return value;
                }

                public void Add(TKey key, TValue value)
                {
                    throw new NotImplementedException();
                }

                public bool ContainsKey(TKey key)
                {
                    return _dictionary.ContainsKey(key);
                }

                public ICollection<TKey> Keys
                {
                    get { return _dictionary.Keys; }
                }

                public bool Remove(TKey key)
                {
                    throw new NotImplementedException();
                }

                public bool TryGetValue(TKey key, out TValue value)
                {
                    value = this[key];
                    return true;
                }

                public ICollection<TValue> Values
                {
                    get { return _dictionary.Values; }
                }

                public TValue this[TKey key]
                {
                    get { return Get(key); }
                    set { throw new NotImplementedException(); }
                }

                public void Add(KeyValuePair<TKey, TValue> item)
                {
                    throw new NotImplementedException();
                }

                public void Clear()
                {
                    throw new NotImplementedException();
                }

                public bool Contains(KeyValuePair<TKey, TValue> item)
                {
                    throw new NotImplementedException();
                }

                public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
                {
                    throw new NotImplementedException();
                }

                public int Count
                {
                    get { return _dictionary.Count; }
                }

                public bool IsReadOnly
                {
                    get { throw new NotImplementedException(); }
                }

                public bool Remove(KeyValuePair<TKey, TValue> item)
                {
                    throw new NotImplementedException();
                }

                public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
                {
                    return _dictionary.GetEnumerator();
                }

                System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
                {
                    return _dictionary.GetEnumerator();
                }
            }

        }
    }
}
// ReSharper restore LoopCanBeConvertedToQuery
// ReSharper restore RedundantExplicitArrayCreation
// ReSharper restore SuggestUseVarKeywordEvident


================================================
FILE: src/SimpleJson.Tests/DataContractTests/DataContractSampleClassess.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="<file>.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir ShresTha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

namespace SimpleJsonTests.DataContractTests
{
    using System.Runtime.Serialization;

    #region Fields

    [DataContract]
    public class DataContractPublicReadOnlyFields
    {
        [DataMember]
        public readonly string DataMemberWithoutName = "dmv";

        [DataMember(Name = "name")]
        public readonly string DatMemberWithName = "dmnv";

        [IgnoreDataMember]
        public readonly string IgnoreDataMember = "idm";

        public readonly string NoDataMember = "ndm";
    }

    [DataContract]
    public class DataContractPublicFields
    {
        [DataMember]
        public string DataMemberWithoutName = "dmv";

        [DataMember(Name = "name")]
        public string DatMemberWithName = "dmnv";

        [IgnoreDataMember]
        public string IgnoreDataMember = "idm";

        public string NoDataMember = "ndm";
    }

    // Supress is assigned by its value is never used
#pragma warning disable 0414
    [DataContract]
    public class DataContractPrivateReadOnlyFields
    {
        [DataMember]
        private readonly string DataMemberWithoutName = "dmv";

        [DataMember(Name = "name")]
        private readonly string DatMemberWithName = "dmnv";

        [IgnoreDataMember]
        private readonly string IgnoreDataMember = "idm";

        private readonly string NoDataMember = "ndm";
    }

    [DataContract]
    public class DataContractPrivateFields
    {
        [DataMember]
        private string DataMemberWithoutName = "dmv";

        [DataMember(Name = "name")]
        private string DatMemberWithName = "dmnv";

        [IgnoreDataMember]
        private string IgnoreDataMember = "idm";

        private string NoDataMember = "ndm";
    }

#pragma warning restore 0414
    #endregion

    #region Getter

    [DataContract]
    public class DataContractPublicGetters
    {
        [DataMember]
        public string DataMemberWithoutName { get { return "dmv"; } }

        [DataMember(Name = "name")]
        public string DatMemberWithName { get { return "dmnv"; } }

        [IgnoreDataMember]
        public string IgnoreDataMember { get { return "idm"; } }

        public string NoDataMember { get { return "ndm"; } }
    }

    [DataContract]
    public class DataContractPrivateGetters
    {
        [DataMember]
        private string DataMemberWithoutName { get { return "dmv"; } }

        [DataMember(Name = "name")]
        private string DatMemberWithName { get { return "dmnv"; } }

        [IgnoreDataMember]
        private string IgnoreDataMember { get { return "idm"; } }

        private string NoDataMember { get { return "ndm"; } }
    }

    #endregion

    #region Setter

    [DataContract]
    public class DataContractPublicSetters
    {
        [DataMember]
        public string DataMemberWithoutName { set { } }

        [DataMember(Name = "name")]
        public string DatMemberWithName { set { } }

        [IgnoreDataMember]
        public string IgnoreDataMember { set { } }

        public string NoDataMember { set { } }
    }

    [DataContract]
    public class DataContractPrivateSetters
    {
        [DataMember]
        private string DataMemberWithoutName { set { } }

        [DataMember(Name = "name")]
        private string DatMemberWithName { set { } }

        [IgnoreDataMember]
        private string IgnoreDataMember { set { } }

        private string NoDataMember { set { } }
    }

    #endregion

    #region Getter/Setters

    [DataContract]
    public class DataContractPublicGetterSetters
    {
        public DataContractPublicGetterSetters()
        {
            DataMemberWithoutName = "dmv";
            DatMemberWithName = "dmnv";
            IgnoreDataMember = "idm";
            NoDataMember = "ndm";
        }

        [DataMember]
        public string DataMemberWithoutName { get; set; }

        [DataMember(Name = "name")]
        public string DatMemberWithName { get; set; }

        [IgnoreDataMember]
        public string IgnoreDataMember { get; set; }

        public string NoDataMember { get; set; }
    }

    [DataContract]
    public class DataContractPrivateGetterSetters
    {
        public DataContractPrivateGetterSetters()
        {
            DataMemberWithoutName = "dmv";
            DatMemberWithName = "dmnv";
            IgnoreDataMember = "idm";
            NoDataMember = "ndm";
        }

        [DataMember]
        private string DataMemberWithoutName { get; set; }

        [DataMember(Name = "name")]
        private string DatMemberWithName { get; set; }

        [IgnoreDataMember]
        private string IgnoreDataMember { get; set; }

        private string NoDataMember { get; set; }
    }

    #endregion
}

================================================
FILE: src/SimpleJson.Tests/DataContractTests/PrivateFieldsSerializeTests.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="<file>.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

namespace SimpleJsonTests.DataContractTests
{
#if NUNIT
    using TestClass = NUnit.Framework.TestFixtureAttribute;
    using TestMethod = NUnit.Framework.TestAttribute;
    using TestCleanup = NUnit.Framework.TearDownAttribute;
    using TestInitialize = NUnit.Framework.SetUpAttribute;
    using ClassCleanup = NUnit.Framework.TestFixtureTearDownAttribute;
    using ClassInitialize = NUnit.Framework.TestFixtureSetUpAttribute;
    using NUnit.Framework;
#else
#if NETFX_CORE
    using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
#else
    using Microsoft.VisualStudio.TestTools.UnitTesting;
#endif
#endif

    using SimpleJson;

    [TestClass]
    public class PrivateFieldsSerializeTests
    {

        private DataContractPrivateFields _dataContractPrivateFields;

        public PrivateFieldsSerializeTests()
        {
            _dataContractPrivateFields = new DataContractPrivateFields();
        }

        [TestMethod]
        public void SerializesCorrectly()
        {
            var result = SimpleJson.SerializeObject(_dataContractPrivateFields,
                                                    SimpleJson.DataContractJsonSerializerStrategy);

            Assert.AreEqual("{\"DataMemberWithoutName\":\"dmv\",\"name\":\"dmnv\"}", result);
        }
    }
}

================================================
FILE: src/SimpleJson.Tests/DataContractTests/PrivateGetterSettersSerializeTests.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="<file>.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

namespace SimpleJsonTests.DataContractTests
{
#if NUNIT
    using TestClass = NUnit.Framework.TestFixtureAttribute;
    using TestMethod = NUnit.Framework.TestAttribute;
    using TestCleanup = NUnit.Framework.TearDownAttribute;
    using TestInitialize = NUnit.Framework.SetUpAttribute;
    using ClassCleanup = NUnit.Framework.TestFixtureTearDownAttribute;
    using ClassInitialize = NUnit.Framework.TestFixtureSetUpAttribute;
    using NUnit.Framework;
#else
#if NETFX_CORE
    using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
#else
    using Microsoft.VisualStudio.TestTools.UnitTesting;
#endif
#endif

    using SimpleJson;

    [TestClass]
    public class PrivateGetterSettersSerializeTests
    {
        private DataContractPrivateGetterSetters _dataContractPrivateGetterSetters;

        public PrivateGetterSettersSerializeTests()
        {
            _dataContractPrivateGetterSetters = new DataContractPrivateGetterSetters();
        }

        [TestMethod]
        public void SerializesCorrectly()
        {
            var result = SimpleJson.SerializeObject(_dataContractPrivateGetterSetters,
                                                    SimpleJson.DataContractJsonSerializerStrategy);

            Assert.AreEqual("{\"DataMemberWithoutName\":\"dmv\",\"name\":\"dmnv\"}", result);
        }
    }
}

================================================
FILE: src/SimpleJson.Tests/DataContractTests/PrivateGettersSerializeTests.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="<file>.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author>
// <website>https://github.com/facebook-csharp-sdk/simple-json</website>
//-----------------------------------------------------------------------

namespace SimpleJsonTests.DataContractTests
{
    #if NUNIT
    using TestClass = NUnit.Framework.TestFixtureAttribute;
    using TestMethod = NUnit.Framework.TestAttribute;
    using TestCleanup = NUnit.Framework.TearDownAttribute;
    using TestInitialize = NUnit.Framework.SetUpAttribute;
    using ClassCleanup = NUnit.Framework.TestFixtureTearDownAttribute;
    using ClassInitialize = NUnit.Framework.TestFixtureSetUpAttribute;
    using NUnit.Framework;
#else
#if NETFX_CORE
    using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
#else
    using Microsoft.VisualStudio.TestTools.UnitTesting;
#endif
#endif

    using SimpleJson;

    [TestClass]
    public class PrivateGettersSerializeTests
    {
        private DataContractPrivateGetters _dataContractPrivateGetters;

        public PrivateGettersSerializeTests()
        {
            _dataContractPrivateGetters = new DataContractPrivateGetters();
        }

        [TestMethod]
        public void SerializesCorrectly()
        {
            var result = SimpleJson.SerializeObject(_dataContractPrivateGetters,
                                                    SimpleJson.DataContractJsonSerializerStrategy);

            Assert.AreEqual("{\"DataMemberWithoutName\":\"dmv\",\"name\":\"dmnv\"}", result);
        }
    }
}

================================================
FILE: src/SimpleJson.Tests/DataContractTests/PrivateReadonlySerializeTests.cs
================================================
//-----------------------------------------------------------------------
// <copyright file="<file>.cs" company="The Outercurve Foundation">
//    Copyright (c) 2011, The Outercurve Foundation.
//
//    Licensed under the MIT License (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//      http://www.opensource.org/licenses/mit-license.php
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS I
Download .txt
gitextract_9s43uv8o/

├── .gitattributes
├── .gitignore
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── VERSION
├── jakefile.js
└── src/
    ├── JsonViewer/
    │   ├── JsonViewer.Designer.cs
    │   ├── JsonViewer.cs
    │   ├── JsonViewer.csproj
    │   ├── JsonViewer.resx
    │   ├── Program.cs
    │   └── Properties/
    │       ├── AssemblyInfo.cs
    │       ├── Resources.Designer.cs
    │       ├── Resources.resx
    │       ├── Settings.Designer.cs
    │       └── Settings.settings
    ├── SimpleJson/
    │   ├── EscapeToJavascriptStringTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── SimpleJson-Net20.csproj
    │   ├── SimpleJson-Net35.csproj
    │   ├── SimpleJson-Net40.csproj
    │   ├── SimpleJson-Net45.csproj
    │   ├── SimpleJson-Portable-NoLinqExpression.csproj
    │   ├── SimpleJson-Portable-WP8WinStoreNet45.csproj
    │   ├── SimpleJson-Portable.csproj
    │   ├── SimpleJson-SL4.csproj
    │   ├── SimpleJson-SL5.csproj
    │   ├── SimpleJson-WP7.csproj
    │   ├── SimpleJson-WP71.csproj
    │   ├── SimpleJson-WindowsStore.csproj
    │   └── SimpleJson.cs
    ├── SimpleJson.Tests/
    │   ├── DataContractTests/
    │   │   ├── DataContractSampleClassess.cs
    │   │   ├── PrivateFieldsSerializeTests.cs
    │   │   ├── PrivateGetterSettersSerializeTests.cs
    │   │   ├── PrivateGettersSerializeTests.cs
    │   │   ├── PrivateReadonlySerializeTests.cs
    │   │   ├── PrivateSettersSerializeTests.cs
    │   │   ├── PublicFieldsSerializeTests.cs
    │   │   ├── PublicGetterSetterDeserializeTests.cs
    │   │   ├── PublicGetterSettersSerializeTests.cs
    │   │   ├── PublicGettersSerializeTests.cs
    │   │   ├── PublicReadonlySerializeTests.cs
    │   │   └── PublicSettersSerializeTests.cs
    │   ├── DeserializeGenericListTests.cs
    │   ├── DeserializeObjectTests.cs
    │   ├── EscapeToJavascriptStringTests.cs
    │   ├── JsonArrayTests.cs
    │   ├── JsonDataContractSerializeObjectTests.cs
    │   ├── JsonDecodeTypeTests.cs
    │   ├── Package.appxmanifest
    │   ├── PocoDeserializerTests/
    │   │   ├── ArrayTests.cs
    │   │   ├── DateTimeDeserializeTests.cs
    │   │   ├── DictionaryDeserializeTests.cs
    │   │   ├── ListOfPocoDeserializeTests.cs
    │   │   ├── NullableTypeDeserializeTests.cs
    │   │   └── PrimitiveDeserializeTest.cs
    │   ├── PocoJsonSerializerTests/
    │   │   ├── DateTimeSerializeTests.cs
    │   │   ├── NullableSerializeTests.cs
    │   │   ├── PrivateFieldsDeserializeTests.cs
    │   │   ├── PrivateFieldsSerializeTests.cs
    │   │   ├── PrivateGetterSettersDeserializeTests.cs
    │   │   ├── PrivateGetterSettersSerializeTests.cs
    │   │   ├── PrivateGettersSerializeTests.cs
    │   │   ├── PrivateReadonlySerializeTests.cs
    │   │   ├── PrivateSettersSerializeTests.cs
    │   │   ├── PublicFieldsDeserializeTests.cs
    │   │   ├── PublicFieldsSerializeTests.cs
    │   │   ├── PublicGetterDeserializeTests.cs
    │   │   ├── PublicGetterSetterDeserializeTests.cs
    │   │   ├── PublicGetterSettersSerializeTests.cs
    │   │   ├── PublicGettersSerializeTests.cs
    │   │   ├── PublicReadonlySerializeTests.cs
    │   │   ├── PublicSettersSerializeTests.cs
    │   │   └── ToStringTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── SerializeObject.KnownNonPrimitive.Tests.cs
    │   ├── SerializeObject.Primitive.Tests.cs
    │   ├── SerializeObject.UnknownNonPrimitive.Tests.cs
    │   ├── SimleJson.Tests-WindowsStore.csproj
    │   ├── SimleJson.Tests-WindowsStore_TemporaryKey.pfx
    │   ├── SimpleJson.Tests.csproj
    │   └── packages.config
    ├── SimpleJson.nuspec
    ├── SimpleJson.sln
    ├── njake.js
    ├── packages/
    │   ├── NUnit.2.5.10.11092/
    │   │   ├── NUnit.2.5.10.11092.nupkg
    │   │   ├── NUnitFitTests.html
    │   │   ├── fit-license.txt
    │   │   ├── lib/
    │   │   │   └── nunit.framework.xml
    │   │   ├── license.txt
    │   │   └── tools/
    │   │       ├── NUnitTests.VisualState.xml
    │   │       ├── NUnitTests.config
    │   │       ├── NUnitTests.nunit
    │   │       ├── TestResult.xml
    │   │       ├── agent.conf
    │   │       ├── agent.log.conf
    │   │       ├── launcher.log.conf
    │   │       ├── nunit-agent-x86.exe.config
    │   │       ├── nunit-agent.exe.config
    │   │       ├── nunit-console-x86.exe.config
    │   │       ├── nunit-console.exe.config
    │   │       ├── nunit-x86.exe.config
    │   │       ├── nunit.exe.config
    │   │       ├── pnunit-agent.exe.config
    │   │       ├── pnunit-launcher.exe.config
    │   │       ├── runFile.exe.config
    │   │       ├── runpnunit.bat
    │   │       └── test.conf
    │   ├── NuGet.CommandLine.1.7.0/
    │   │   └── NuGet.CommandLine.1.7.0.nupkg
    │   └── repositories.config
    └── simplejson.script.ps1
Download .txt
SYMBOL INDEX (443 symbols across 52 files)

FILE: src/JsonViewer/JsonViewer.Designer.cs
  class JsonViewer (line 3) | partial class JsonViewer
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: src/JsonViewer/JsonViewer.cs
  class JsonViewer (line 27) | public partial class JsonViewer : Form
    method JsonViewer (line 31) | public JsonViewer()
    method mnuClear_Click (line 37) | private void mnuClear_Click(object sender, EventArgs e)
    method txtInput_TextChanged (line 42) | private void txtInput_TextChanged(object sender, EventArgs e)
    method txtJson_TextChanged (line 47) | private void txtJson_TextChanged(object sender, EventArgs e)
    method AddNode (line 66) | private void AddNode(object obj, TreeNode node)
    method AddNode (line 91) | private void AddNode(IDictionary<string, object> dictionary, TreeNode ...
    method AddNode (line 125) | private void AddNode(IList<object> list, TreeNode node)

FILE: src/JsonViewer/Program.cs
  class Program (line 27) | static class Program
    method Main (line 32) | [STAThread]

FILE: src/JsonViewer/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 32) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: src/JsonViewer/Properties/Settings.Designer.cs
  class Settings (line 15) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: src/SimpleJson.Tests/DataContractTests/DataContractSampleClassess.cs
  class DataContractPublicReadOnlyFields (line 26) | [DataContract]
  class DataContractPublicFields (line 41) | [DataContract]
  class DataContractPrivateReadOnlyFields (line 58) | [DataContract]
  class DataContractPrivateFields (line 73) | [DataContract]
  class DataContractPublicGetters (line 93) | [DataContract]
  class DataContractPrivateGetters (line 108) | [DataContract]
  class DataContractPublicSetters (line 127) | [DataContract]
  class DataContractPrivateSetters (line 142) | [DataContract]
  class DataContractPublicGetterSetters (line 161) | [DataContract]
    method DataContractPublicGetterSetters (line 164) | public DataContractPublicGetterSetters()
  class DataContractPrivateGetterSetters (line 184) | [DataContract]
    method DataContractPrivateGetterSetters (line 187) | public DataContractPrivateGetterSetters()

FILE: src/SimpleJson.Tests/DataContractTests/PrivateFieldsSerializeTests.cs
  class PrivateFieldsSerializeTests (line 40) | [TestClass]
    method PrivateFieldsSerializeTests (line 46) | public PrivateFieldsSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PrivateGetterSettersSerializeTests.cs
  class PrivateGetterSettersSerializeTests (line 40) | [TestClass]
    method PrivateGetterSettersSerializeTests (line 45) | public PrivateGetterSettersSerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PrivateGettersSerializeTests.cs
  class PrivateGettersSerializeTests (line 40) | [TestClass]
    method PrivateGettersSerializeTests (line 45) | public PrivateGettersSerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PrivateReadonlySerializeTests.cs
  class PrivateReadonlySerializeTests (line 40) | [TestClass]
    method PrivateReadonlySerializeTests (line 45) | public PrivateReadonlySerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PrivateSettersSerializeTests.cs
  class PrivateSettersSerializeTests (line 40) | [TestClass]
    method PrivateSettersSerializeTests (line 45) | public PrivateSettersSerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PublicFieldsSerializeTests.cs
  class PublicFieldsSerializeTests (line 40) | [TestClass]
    method PublicFieldsSerializeTests (line 45) | public PublicFieldsSerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PublicGetterSetterDeserializeTests.cs
  class PublicGetterSetterDeserializeTests (line 43) | [TestClass]
    method DeserializesCorrectly (line 46) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PublicGetterSettersSerializeTests.cs
  class PublicGetterSettersSerializeTests (line 40) | [TestClass]
    method PublicGetterSettersSerializeTests (line 45) | public PublicGetterSettersSerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PublicGettersSerializeTests.cs
  class PublicGettersSerializeTests (line 40) | [TestClass]
    method PublicGettersSerializeTests (line 45) | public PublicGettersSerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PublicReadonlySerializeTests.cs
  class PublicReadonlySerializeTests (line 40) | [TestClass]
    method PublicReadonlySerializeTests (line 45) | public PublicReadonlySerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DataContractTests/PublicSettersSerializeTests.cs
  class PublicSettersSerializeTests (line 40) | [TestClass]
    method PublicSettersSerializeTests (line 45) | public PublicSettersSerializeTests()
    method SerializesCorrectly (line 50) | [TestMethod]

FILE: src/SimpleJson.Tests/DeserializeGenericListTests.cs
  class DeserializeGenericListTests (line 44) | [TestClass]
    class NumberList (line 47) | private class NumberList : List<int>
    class ItemList (line 51) | private class ItemList : List<Item>
    class Item (line 55) | private class Item
    method Can_Deserialize_Root_Json_Array_Of_Primitives_To_Inherited_List (line 60) | [TestMethod]
    method Can_Deserialize_Root_Json_Array_Of_Primitives_To_Generic_List (line 74) | [TestMethod]
    method Can_Deserialize_Root_Json_Array_To_Inherited_List (line 88) | [TestMethod]

FILE: src/SimpleJson.Tests/DeserializeObjectTests.cs
  class DeserializeObjectTests (line 44) | [TestClass]
    class ObjProp (line 47) | public class ObjProp
    method ReadIndented (line 53) | [TestMethod]
    method UnexpectedEndOfString (line 110) | [TestMethod]
    method ReadNullTerminiatorString (line 122) | [TestMethod]
    method EmptyObjectDeserialize (line 130) | [TestMethod]
    method UnexpectedEndOfHex (line 144) | [TestMethod]
    method UnexpectedEndOfControlCharacter (line 156) | [TestMethod]
    method UnexpectedEndWhenParsingUnquotedProperty (line 167) | [TestMethod]
    method ParsingQuotedPropertyWithControlCharacters (line 179) | [TestMethod]
    method ReadNewLineLastCharacter (line 204) | [TestMethod]
    method FloatingPointNonFiniteNumber (line 232) | [TestMethod]
    method LongStringTests (line 248) | [TestMethod]
    method EscapedUnicodeTests (line 268) | [TestMethod]
    method MissingColon (line 289) | [TestMethod]
    method ReadOcatalNumber (line 308) | [TestMethod]
    method ReadUnicode (line 322) | [TestMethod]
    method DeserializeUnicodeChar (line 345) | [TestMethod]
    method ReadHexidecimalWithAllLetters (line 363) | [TestMethod]
    method ParseIncompleteArray (line 377) | [TestMethod]
    method DeserializeSurrogatePair (line 389) | [TestMethod]
    method DeserializeEscapedSurrogatePair (line 403) | [TestMethod]
    method DeserializeInvaildEscapedSurrogatePair (line 418) | [TestMethod]
    method DeserializeKnownJsonObjectType (line 431) | [TestMethod]
    method DeserializeKnownJsonObjectTypeWithMapping (line 445) | [TestMethod]
    class MySerializationStrategy (line 456) | private class MySerializationStrategy : PocoJsonSerializerStrategy
      method MapClrMemberNameToJsonFieldName (line 458) | protected override string MapClrMemberNameToJsonFieldName(string jso...
    class Sample (line 464) | public class Sample
    method DeserializeKnownJsonArrayType (line 470) | [TestMethod]
    method DeserializeDoubleQuotesCorrectly (line 490) | [TestMethod]
    class ClassWithUri (line 499) | class ClassWithUri { public Uri url { get; set; } }
    method DeserializeUriCorrectly (line 501) | [TestMethod]
    method DeserializeInvalidUriCorrectly (line 510) | [TestMethod]
    method DeserializeUnknownProperty (line 519) | [TestMethod]
    class BaseClass (line 541) | public class BaseClass
    class SomeClass (line 546) | public class SomeClass : BaseClass
    method DeserializePropertiesOnBaseClass (line 551) | [TestMethod]

FILE: src/SimpleJson.Tests/EscapeToJavascriptStringTests.cs
  class EscapeToJavascriptStringTests (line 41) | [TestClass]
    method BackSlash (line 44) | [TestMethod]
    method BackSlashWithT (line 53) | [TestMethod]

FILE: src/SimpleJson.Tests/JsonArrayTests.cs
  class JsonArrayTests (line 44) | [TestClass]
    method Clear (line 47) | [TestMethod]
    method Contains (line 57) | [TestMethod]
    method Remove (line 69) | [TestMethod]
    method IndexOf (line 86) | [TestMethod]
    method RemoveAt (line 103) | [TestMethod]
    method RemoveAtOutOfRangeIndexShouldBeError (line 127) | [TestMethod]
    method RemoveNegtiveIndexShouldBeError (line 140) | [TestMethod]
    method Insert (line 154) | [TestMethod]
    method InsertShouldInsertAtZeroIndex (line 175) | [TestMethod]
    method InsertNull (line 191) | [TestMethod]
    method InsertNegativeIndexShouldThrow (line 201) | [TestMethod]
    method InsertOutOfRangeIndexShouldThrow (line 214) | [TestMethod]
    method Item (line 228) | [TestMethod]
    method Iterate (line 248) | [TestMethod]

FILE: src/SimpleJson.Tests/JsonDataContractSerializeObjectTests.cs
  class JsonDataContractSerializeObjectTests (line 43) | [TestClass]
    class DataContractClass (line 46) | [DataContract]
      method DataContractClass (line 49) | public DataContractClass()
    class NonDataContractClass (line 126) | private class NonDataContractClass
    method JsonDataContractSerializeObjectTests (line 132) | public JsonDataContractSerializeObjectTests()
    method PublicReadOnlyFieldWithoutDataMemberShouldNotBePresent (line 193) | [TestMethod]
    method ReadOnlyFieldDataMemberWithoutNameShouldBePresent (line 203) | [TestMethod]
    method ReadOnlyFieldDataMemberWithNameShouldBePresent (line 213) | [TestMethod]
    method ReadOnlyFieldIgnoreShouldNotBePresent (line 223) | [TestMethod]
    method PrivateReadOnlyFieldWihtoutDataMemberShouldNotBePresent (line 233) | [TestMethod]
    method PrivateReadOnlyFieldDataMemberWithoutNameShouldBePresent (line 243) | [TestMethod]
    method PrivateReadOnlyFieldDataMemberWithNameShouldBePresent (line 253) | [TestMethod]
    method PrivateReadOnlyFieldIgnoreShouldNotBePresent (line 263) | [TestMethod]

FILE: src/SimpleJson.Tests/JsonDecodeTypeTests.cs
  class DeserializeObjectTypeTests (line 44) | [TestClass]
    class Person (line 49) | private class Person
    class AddressInfo (line 66) | private class AddressInfo
    method NullStringTests (line 74) | [TestMethod]
    method NullStringGenericTests (line 81) | [TestMethod]
    method BooleanTrueTests (line 88) | [TestMethod]
    method BooleanFalseTests (line 97) | [TestMethod]
    method NullTests (line 106) | [TestMethod]
    method StringTests (line 115) | [TestMethod]
    method DecimalToIntTest (line 124) | [TestMethod]
    method GivenNumberWithoutDecimalTypeIsLong (line 133) | [TestMethod]
    method GivenNumberWithDecimalTypeIsDouble (line 145) | [TestMethod]
    method GivenGuidAsNull (line 158) | [TestMethod]
    method GivenNullableGuidAsNull (line 168) | [TestMethod]
    method GivenGuidAsEmptyString (line 178) | [TestMethod]
    method GivenNullableGuidAsEmptyString (line 188) | [TestMethod]
    method GiveGuidAsStringWithHashAndSmallLetters (line 198) | [TestMethod]
    method GiveNullableGuidAsStringWithHashAndSmallLetters (line 208) | [TestMethod]
    method GiveGuidAsStringWithHashAndCapitalLetters (line 218) | [TestMethod]
    method GivenNullableGuidAsStringWithHashAndCapitalLetters (line 228) | [TestMethod]
    method ArrayAndListDeserializationTests (line 238) | [TestMethod]
    method ClassArrayTests (line 270) | [TestMethod]
    method ClassListTests (line 280) | [TestMethod]
    class HobbyPersonArray (line 290) | public class HobbyPersonArray
    class HobbyPersonList (line 296) | public class HobbyPersonList
    class Hobbies (line 302) | public class Hobbies

FILE: src/SimpleJson.Tests/PocoDeserializerTests/ArrayTests.cs
  class ArrayTests (line 39) | [TestClass]
    method StronglyTypeArrayTests (line 42) | [TestMethod]
    class X (line 62) | class X
      method ToString (line 66) | public override string ToString()

FILE: src/SimpleJson.Tests/PocoDeserializerTests/DateTimeDeserializeTests.cs
  class DateTimeDeserializeTests (line 40) | [TestClass]
    method Test (line 43) | [TestMethod]
    method TestWithoutMilisecond (line 59) | [TestMethod]
    method TestWithMilliSecond (line 75) | [TestMethod]
    class SerializeDateTimeTypeClass (line 91) | public class SerializeDateTimeTypeClass
  class DateOffsetTimeDeserializeTests (line 99) | public class DateOffsetTimeDeserializeTests
    method TestWithMilliSecond (line 101) | [TestMethod]
    class SerializeDateTimeOffsetTypeClass (line 117) | public class SerializeDateTimeOffsetTypeClass

FILE: src/SimpleJson.Tests/PocoDeserializerTests/DictionaryDeserializeTests.cs
  class DictionaryDeserializeTests (line 37) | public class DictionaryDeserializeTests
    method DeserializeToIDictionaryStringString (line 39) | [TestMethod]
    method DeserializeToDictionaryStringString (line 52) | [TestMethod]
    method DeserializeToIDictionaryStringLong (line 65) | [TestMethod]
    method DeserializeToDictionaryStringLong (line 78) | [TestMethod]
    method NestedDeserializeDictionary (line 91) | [TestMethod]
    class autocomplete_data (line 112) | class autocomplete_data
    class region (line 117) | private class region

FILE: src/SimpleJson.Tests/PocoDeserializerTests/ListOfPocoDeserializeTests.cs
  class ListOfPocoDeserializeTests (line 42) | public class ListOfPocoDeserializeTests
    method CorrectlyDeserializesListOfPoco (line 45) | [TestMethod]
    class autocomplete_data (line 67) | class autocomplete_data
    class college (line 72) | class college

FILE: src/SimpleJson.Tests/PocoDeserializerTests/NullableTypeDeserializeTests.cs
  class NullableTypeTests (line 40) | [TestClass]
    method WithValue (line 43) | [TestMethod]
    method TestNull (line 53) | [TestMethod]
    method DateTimeAsNull (line 63) | [TestMethod]
    method DateTimeWithValue (line 73) | [TestMethod]
    method DateTimeOffsetAsNull (line 90) | [TestMethod]
    method DateTimeOffsetWithValue (line 100) | [TestMethod]
    method NullableTypeClassNullTest (line 117) | [TestMethod]
    method NullableTypeClasssWithvalueTest (line 127) | [TestMethod]
    class NullableTypeClass (line 137) | public class NullableTypeClass

FILE: src/SimpleJson.Tests/PocoDeserializerTests/PrimitiveDeserializeTest.cs
  class PrimitiveDeserializeTest (line 20) | [TestClass]
    method SimpleIntTests (line 23) | [TestMethod]
    method SimpleDoubleTests (line 33) | [TestMethod]
    class X (line 43) | class X

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/DateTimeSerializeTests.cs
  class DateTimeSerializeTests (line 40) | [TestClass]
    method SerializeDateTimeThatHasMilliSecondAsNonZero (line 43) | [TestMethod]
    method SerializeDateTimeThatHasMilliSecondAsZero (line 56) | [TestMethod]
    class SerializeDateTimeTypeClass (line 69) | public class SerializeDateTimeTypeClass
  class DateTimeOffsetSerializeTests (line 75) | [TestClass]
    method SerializeDateTimeOffsetThatHasMilliSecondAsNonZero (line 78) | [TestMethod]
    class SerializeDateTimeOffsetTypeClass (line 91) | public class SerializeDateTimeOffsetTypeClass

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/NullableSerializeTests.cs
  class NullableSerializeTests (line 40) | [TestClass]
    method Test (line 43) | [TestMethod]
    method TestWithValue (line 53) | [TestMethod]
    method TestNullDateTimeOffset (line 63) | [TestMethod]
    method TestDateTimeOffsetWithValue (line 73) | [TestMethod]
    method SerializeNullableTypeThatIsNotNull (line 83) | [TestMethod]
    method SerializeNullableTypeThatIsNull (line 94) | [TestMethod]
    class NullableTypeClass (line 105) | public class NullableTypeClass

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateFieldsDeserializeTests.cs
  class PrivateFieldsDeserializeTests (line 41) | [TestClass]
    method DeserializesNullCorrectly (line 44) | [TestMethod]
    method DeserializesEmptyObjectCorrectly (line 54) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateFieldsSerializeTests.cs
  class PrivateFieldsSerializeTests (line 41) | [TestClass]
    method PrivateFieldsSerializeTests (line 46) | public PrivateFieldsSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateGetterSettersDeserializeTests.cs
  class PrivateGetterSettersDeserializeTests (line 41) | [TestClass]
    method SerializesNullCorrectly (line 44) | [TestMethod]
    method SerializesEmptyObjectCorrectly (line 54) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateGetterSettersSerializeTests.cs
  class PrivateGetterSettersSerializeTests (line 41) | [TestClass]
    method PrivateGetterSettersSerializeTests (line 46) | public PrivateGetterSettersSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateGettersSerializeTests.cs
  class PrivateGettersSerializeTests (line 41) | [TestClass]
    method PrivateGettersSerializeTests (line 46) | public PrivateGettersSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateReadonlySerializeTests.cs
  class PrivateReadonlySerializeTests (line 41) | [TestClass]
    method PrivateReadonlySerializeTests (line 46) | public PrivateReadonlySerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateSettersSerializeTests.cs
  class PrivateSettersSerializeTests (line 41) | [TestClass]
    method PrivateSettersSerializeTests (line 46) | public PrivateSettersSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicFieldsDeserializeTests.cs
  class PublicFieldsDeserializeTests (line 41) | [TestClass]
    method DeserializesNullObjectCorrectly (line 44) | [TestMethod]
    method DeserializesEmptyObjectCorrectly (line 54) | [TestMethod]
    method DeserializesCorrectly (line 70) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicFieldsSerializeTests.cs
  class PublicFieldsSerializeTests (line 41) | [TestClass]
    method PublicFieldsSerializeTests (line 46) | public PublicFieldsSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGetterDeserializeTests.cs
  class PublicGetterDeserializeTests (line 41) | [TestClass]
    method DeserializesNullObjectCorrectly (line 44) | [TestMethod]
    method DeserializesEmptyObjectCorrectly (line 54) | [TestMethod]
    method DeserializesCorrectly (line 69) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGetterSetterDeserializeTests.cs
  class PublicGetterSetterDeserializeTests (line 41) | [TestClass]
    method DeserializesNullObjectCorrectly (line 44) | [TestMethod]
    method DeserializesEmptyObjectCorrectly (line 54) | [TestMethod]
    method DeserializesCorrectly (line 69) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGetterSettersSerializeTests.cs
  class PublicGetterSettersSerializeTests (line 41) | [TestClass]
    method PublicGetterSettersSerializeTests (line 46) | public PublicGetterSettersSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGettersSerializeTests.cs
  class PublicGettersSerializeTests (line 41) | [TestClass]
    method PublicGettersSerializeTests (line 46) | public PublicGettersSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicReadonlySerializeTests.cs
  class PublicReadonlySerializeTests (line 41) | [TestClass]
    method PublicReadonlySerializeTests (line 46) | public PublicReadonlySerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/PublicSettersSerializeTests.cs
  class PublicSettersSerializeTests (line 41) | [TestClass]
    method PublicSettersSerializeTests (line 46) | public PublicSettersSerializeTests()
    method SerializesCorrectly (line 51) | [TestMethod]

FILE: src/SimpleJson.Tests/PocoJsonSerializerTests/ToStringTests.cs
  class ToStringTests (line 38) | [TestClass]
    method ToStringCallingSerializeObjectOnItself (line 41) | [TestMethod]
    class X (line 51) | class X
      method ToString (line 55) | public override string ToString()

FILE: src/SimpleJson.Tests/SerializeObject.KnownNonPrimitive.Tests.cs
  class SerializeObject_KnownNonPrimitive_Tests (line 41) | [TestClass]
    method GuidSerialization (line 44) | [TestMethod]
    method EnumSerialization (line 53) | [TestMethod]
    method UriSerialization (line 60) | [TestMethod]

FILE: src/SimpleJson.Tests/SerializeObject.Primitive.Tests.cs
  class SerializeObject_Primitive_Tests (line 42) | [TestClass]
    method ObjectSerialization (line 45) | [TestMethod]
    method StringSerialization (line 102) | [TestMethod]
    method StringEscpaingSerialization (line 109) | [TestMethod]
    method CharSerialization (line 119) | [TestMethod]
    method BoolTrueSerialization (line 130) | [TestMethod]
    method BoolFalseSerialization (line 136) | [TestMethod]
    method NullSerialization (line 142) | [TestMethod]
    method DbNullSerialization (line 149) | [TestMethod]
    method Int16Serialization (line 157) | [TestMethod]
    method UnsingedInt16Serialization (line 163) | [TestMethod]
    method Int64Serialization (line 169) | [TestMethod]
    method UnsingedInt64Serialization (line 175) | [TestMethod]
    method ByteSerialization (line 181) | [TestMethod]
    method SignedByteSerialization (line 187) | [TestMethod]
    method Int32Serialization (line 193) | [TestMethod]
    method UnsingedInt32Serialization (line 199) | [TestMethod]
    method DoubleSerialization (line 205) | [TestMethod]
    method DecimalSerialization (line 211) | [TestMethod]
    method FloatSerialization (line 230) | [TestMethod]
    method EmptyObjectSerialization (line 249) | [TestMethod]
    method CanParseWithUnicode (line 255) | [TestMethod]
    method CanSerializeArrays (line 267) | [TestMethod]
    method CanSerializeEmptyArray (line 278) | [TestMethod]
    method CanSerializeNullArray (line 289) | [TestMethod]
    method CanSerializeList (line 300) | [TestMethod]
    method CanIgnoreSolidusInStringLiterals (line 311) | [TestMethod]
    method SerializeUnicodeTests (line 328) | [TestMethod]
    method SerializeDictionaryStringObjectTests (line 336) | [TestMethod]
    method SerializeDictionaryStringStringTests (line 349) | [TestMethod]
    method SerializeSurrogatePair (line 362) | [TestMethod]
    method SerializeDoubleQuotesCorrectly (line 371) | [TestMethod]
    method SerializeBigNumberCorrectly (line 380) | [TestMethod]
    method SerializeNullableTypeThatIsNotNull (line 388) | [TestMethod]
    method SerializeNullableTypeThatIsNull (line 399) | [TestMethod]

FILE: src/SimpleJson.Tests/SerializeObject.UnknownNonPrimitive.Tests.cs
  class SerializeObject_UnknownNonPrimitive_Tests (line 41) | [TestClass]
    class Dog (line 44) | private class Dog
    class ObjProp (line 49) | public class ObjProp
    method CanSerializeClassInstanceExample (line 55) | [TestMethod]
    method CanSerializeAnonymousObject (line 66) | [TestMethod]
    method CanSerializeAnonymousObjectWithNumbers (line 77) | [TestMethod]
    method CanSerializeWithAnonymousTypes (line 93) | [TestMethod]
    method CanSerializeWithDatesThatHasMilliSecondAsNonZero (line 106) | [TestMethod]
    method CanSerializeWithDatesThatHasMilliSecondAsZero (line 119) | [TestMethod]
    method CanSerializeUnknownProperty (line 132) | [TestMethod]
    method CanSerializeUnknownPropertyUsingNamingConvention (line 141) | [TestMethod]
    method CanRoundTrip (line 149) | [TestMethod]
    class MyJsonSerializerStrategy (line 159) | private class MyJsonSerializerStrategy : PocoJsonSerializerStrategy
      method MapClrMemberNameToJsonFieldName (line 161) | protected override string MapClrMemberNameToJsonFieldName(string clr...

FILE: src/SimpleJson/EscapeToJavascriptStringTests.cs
  class EscapeToJavascriptStringTests (line 41) | [TestClass]
    method BackSlash (line 44) | [TestMethod]
    method BackSlashWithT (line 53) | [TestMethod]

FILE: src/SimpleJson/SimpleJson.cs
  class JsonArray (line 79) | [GeneratedCode("simple-json", "1.0.0")]
    method JsonArray (line 92) | public JsonArray() { }
    method JsonArray (line 98) | public JsonArray(int capacity) : base(capacity) { }
    method ToString (line 104) | public override string ToString()
  method Add (line 245) | public void Add(KeyValuePair<string, object> item)
  method Clear (line 253) | public void Clear()
  method Contains (line 265) | public bool Contains(KeyValuePair<string, object> item)
  method CopyTo (line 275) | public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)
  method Remove (line 312) | public bool Remove(KeyValuePair<string, object> item)
  method GetEnumerator (line 321) | public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
  method GetEnumerator (line 332) | IEnumerator IEnumerable.GetEnumerator()
  method ToString (line 343) | public override string ToString()
  method TryConvert (line 357) | public override bool TryConvert(ConvertBinder binder, out object result)
  method TryDeleteMember (line 384) | public override bool TryDeleteMember(DeleteMemberBinder binder)
  method TryGetIndex (line 402) | public override bool TryGetIndex(GetIndexBinder binder, object[] indexes...
  method TryGetMember (line 422) | public override bool TryGetMember(GetMemberBinder binder, out object res...
  method TrySetIndex (line 443) | public override bool TrySetIndex(SetIndexBinder binder, object[] indexes...
  method TrySetMember (line 462) | public override bool TrySetMember(SetMemberBinder binder, object value)
  method GetDynamicMemberNames (line 478) | public override IEnumerable<string> GetDynamicMemberNames()
  class SimpleJson (line 496) | [GeneratedCode("simple-json", "1.0.0")]
    method SimpleJson (line 522) | static SimpleJson()
    method DeserializeObject (line 539) | public static object DeserializeObject(string json)
    method TryDeserializeObject (line 559) | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropria...
    method DeserializeObject (line 575) | public static object DeserializeObject(string json, Type type, IJsonSe...
    method DeserializeObject (line 583) | public static object DeserializeObject(string json, Type type)
    method DeserializeObject (line 588) | public static T DeserializeObject<T>(string json, IJsonSerializerStrat...
    method DeserializeObject (line 593) | public static T DeserializeObject<T>(string json)
    method SerializeObject (line 604) | public static string SerializeObject(object json, IJsonSerializerStrat...
    method SerializeObject (line 611) | public static string SerializeObject(object json)
    method EscapeToJavascriptString (line 616) | public static string EscapeToJavascriptString(string jsonString)
    method ParseObject (line 674) | static IDictionary<string, object> ParseObject(char[] json, ref int in...
    method ParseArray (line 727) | static JsonArray ParseArray(char[] json, ref int index, ref bool success)
    method ParseValue (line 761) | static object ParseValue(char[] json, ref int index, ref bool success)
    method ParseString (line 789) | static string ParseString(char[] json, ref int index, ref bool success)
    method ConvertFromUtf32 (line 882) | private static string ConvertFromUtf32(int utf32)
    method ParseNumber (line 895) | static object ParseNumber(char[] json, ref int index, ref bool success)
    method GetLastIndexOfNumber (line 918) | static int GetLastIndexOfNumber(char[] json, int index)
    method EatWhitespace (line 926) | static void EatWhitespace(char[] json, ref int index)
    method LookAhead (line 932) | static int LookAhead(char[] json, int index)
    method NextToken (line 938) | [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveCo...
    method SerializeValue (line 1007) | static bool SerializeValue(IJsonSerializerStrategy jsonSerializerStrat...
    method SerializeObject (line 1051) | static bool SerializeObject(IJsonSerializerStrategy jsonSerializerStra...
    method SerializeArray (line 1077) | static bool SerializeArray(IJsonSerializerStrategy jsonSerializerStrat...
    method SerializeString (line 1093) | static bool SerializeString(string aString, StringBuilder builder)
    method SerializeNumber (line 1142) | static bool SerializeNumber(object number, StringBuilder builder)
    method IsNumeric (line 1165) | static bool IsNumeric(object value)
  type IJsonSerializerStrategy (line 1226) | [GeneratedCode("simple-json", "1.0.0")]
    method TrySerializeNonPrimitiveObject (line 1234) | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropria...
    method DeserializeObject (line 1236) | object DeserializeObject(object value, Type type);
  class PocoJsonSerializerStrategy (line 1239) | [GeneratedCode("simple-json", "1.0.0")]
    method PocoJsonSerializerStrategy (line 1261) | public PocoJsonSerializerStrategy()
    method MapClrMemberNameToJsonFieldName (line 1268) | protected virtual string MapClrMemberNameToJsonFieldName(string clrPro...
    method ContructorDelegateFactory (line 1273) | internal virtual ReflectionUtils.ConstructorDelegate ContructorDelegat...
    method GetterValueFactory (line 1278) | internal virtual IDictionary<string, ReflectionUtils.GetDelegate> Gett...
    method SetterValueFactory (line 1300) | internal virtual IDictionary<string, KeyValuePair<Type, ReflectionUtil...
    method TrySerializeNonPrimitiveObject (line 1322) | public virtual bool TrySerializeNonPrimitiveObject(object input, out o...
    method DeserializeObject (line 1327) | [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveCo...
    method SerializeEnum (line 1467) | protected virtual object SerializeEnum(Enum p)
    method TrySerializeKnownTypes (line 1472) | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropria...
    method TrySerializeUnknownTypes (line 1497) | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropria...
  class DataContractJsonSerializerStrategy (line 1518) | [GeneratedCode("simple-json", "1.0.0")]
    method DataContractJsonSerializerStrategy (line 1526) | public DataContractJsonSerializerStrategy()
    method GetterValueFactory (line 1532) | internal override IDictionary<string, ReflectionUtils.GetDelegate> Get...
    method SetterValueFactory (line 1556) | internal override IDictionary<string, KeyValuePair<Type, ReflectionUti...
    method CanAdd (line 1581) | private static bool CanAdd(MemberInfo info, out string jsonKey)
  class ReflectionUtils (line 1600) | [GeneratedCode("reflection-utils", "1.0.0")]
    method GetTypeInfo (line 1617) | public static TypeInfo GetTypeInfo(Type type)
    method GetTypeInfo (line 1622) | public static Type GetTypeInfo(Type type)
    method GetAttribute (line 1628) | public static Attribute GetAttribute(MemberInfo info, Type type)
    method GetGenericListElementType (line 1641) | public static Type GetGenericListElementType(Type type)
    method GetAttribute (line 1660) | public static Attribute GetAttribute(Type objectType, Type attributeType)
    method GetGenericTypeArguments (line 1674) | public static Type[] GetGenericTypeArguments(Type type)
    method IsTypeGeneric (line 1683) | public static bool IsTypeGeneric(Type type)
    method IsTypeGenericeCollectionInterface (line 1688) | public static bool IsTypeGenericeCollectionInterface(Type type)
    method IsAssignableFrom (line 1705) | public static bool IsAssignableFrom(Type type1, Type type2)
    method IsTypeDictionary (line 1710) | public static bool IsTypeDictionary(Type type)
    method IsNullableType (line 1726) | public static bool IsNullableType(Type type)
    method ToNullableType (line 1731) | public static object ToNullableType(object obj, Type nullableType)
    method IsValueType (line 1736) | public static bool IsValueType(Type type)
    method GetConstructors (line 1741) | public static IEnumerable<ConstructorInfo> GetConstructors(Type type)
    method GetConstructorInfo (line 1750) | public static ConstructorInfo GetConstructorInfo(Type type, params Typ...
    method GetProperties (line 1779) | public static IEnumerable<PropertyInfo> GetProperties(Type type)
    method GetFields (line 1788) | public static IEnumerable<FieldInfo> GetFields(Type type)
    method GetGetterMethodInfo (line 1797) | public static MethodInfo GetGetterMethodInfo(PropertyInfo propertyInfo)
    method GetSetterMethodInfo (line 1806) | public static MethodInfo GetSetterMethodInfo(PropertyInfo propertyInfo)
    method GetContructor (line 1815) | public static ConstructorDelegate GetContructor(ConstructorInfo constr...
    method GetContructor (line 1824) | public static ConstructorDelegate GetContructor(Type type, params Type...
    method GetConstructorByReflection (line 1833) | public static ConstructorDelegate GetConstructorByReflection(Construct...
    method GetConstructorByReflection (line 1838) | public static ConstructorDelegate GetConstructorByReflection(Type type...
    method GetConstructorByExpression (line 1846) | public static ConstructorDelegate GetConstructorByExpression(Construct...
    method GetConstructorByExpression (line 1865) | public static ConstructorDelegate GetConstructorByExpression(Type type...
    method GetGetMethod (line 1873) | public static GetDelegate GetGetMethod(PropertyInfo propertyInfo)
    method GetGetMethod (line 1882) | public static GetDelegate GetGetMethod(FieldInfo fieldInfo)
    method GetGetMethodByReflection (line 1891) | public static GetDelegate GetGetMethodByReflection(PropertyInfo proper...
    method GetGetMethodByReflection (line 1897) | public static GetDelegate GetGetMethodByReflection(FieldInfo fieldInfo)
    method GetGetMethodByExpression (line 1904) | public static GetDelegate GetGetMethodByExpression(PropertyInfo proper...
    method GetGetMethodByExpression (line 1913) | public static GetDelegate GetGetMethodByExpression(FieldInfo fieldInfo)
    method GetSetMethod (line 1923) | public static SetDelegate GetSetMethod(PropertyInfo propertyInfo)
    method GetSetMethod (line 1932) | public static SetDelegate GetSetMethod(FieldInfo fieldInfo)
    method GetSetMethodByReflection (line 1941) | public static SetDelegate GetSetMethodByReflection(PropertyInfo proper...
    method GetSetMethodByReflection (line 1947) | public static SetDelegate GetSetMethodByReflection(FieldInfo fieldInfo)
    method GetSetMethodByExpression (line 1954) | public static SetDelegate GetSetMethodByExpression(PropertyInfo proper...
    method GetSetMethodByExpression (line 1965) | public static SetDelegate GetSetMethodByExpression(FieldInfo fieldInfo)
    method Assign (line 1974) | public static BinaryExpression Assign(Expression left, Expression right)
    class Assigner (line 1985) | private static class Assigner<T>
      method Assign (line 1987) | public static T Assign(ref T left, T right)
    class ThreadSafeDictionary (line 1995) | public sealed class ThreadSafeDictionary<TKey, TValue> : IDictionary<T...
      method ThreadSafeDictionary (line 2001) | public ThreadSafeDictionary(ThreadSafeDictionaryValueFactory<TKey, T...
      method Get (line 2006) | private TValue Get(TKey key)
      method AddValue (line 2016) | private TValue AddValue(TKey key)
      method Add (line 2039) | public void Add(TKey key, TValue value)
      method ContainsKey (line 2044) | public bool ContainsKey(TKey key)
      method Remove (line 2054) | public bool Remove(TKey key)
      method TryGetValue (line 2059) | public bool TryGetValue(TKey key, out TValue value)
      method Add (line 2076) | public void Add(KeyValuePair<TKey, TValue> item)
      method Clear (line 2081) | public void Clear()
      method Contains (line 2086) | public bool Contains(KeyValuePair<TKey, TValue> item)
      method CopyTo (line 2091) | public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
      method Remove (line 2106) | public bool Remove(KeyValuePair<TKey, TValue> item)
      method GetEnumerator (line 2111) | public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
      method GetEnumerator (line 2116) | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnu...
Condensed preview — 112 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,969K chars).
[
  {
    "path": ".gitattributes",
    "chars": 816,
    "preview": "*.doc  diff=astextplain\r\n*.DOC\tdiff=astextplain\r\n*.docx\tdiff=astextplain\r\n*.DOCX\tdiff=astextplain\r\n*.dot\tdiff=astextplai"
  },
  {
    "path": ".gitignore",
    "chars": 615,
    "preview": "# Visual Studio Ignores\r\n[Bb]in/\r\nobj/\r\nApp_Data/\r\n\r\n*.sln.cache\r\n*.suo\r\n*.user\r\n*.build.csdef\r\n*.ncb\r\n*.docstates\r\n\r\n# "
  },
  {
    "path": "LICENSE.txt",
    "chars": 1069,
    "preview": "Copyright (c) 2011, The Outercurve Foundation\n\nPermission is hereby granted, free of charge, to any person obtaining\na c"
  },
  {
    "path": "NOTICE.txt",
    "chars": 1352,
    "preview": "Copyright (c) 2011, The Outercurve Foundation. \nThis software is released under the MIT License (the \"License\"); \nyou ma"
  },
  {
    "path": "README.md",
    "chars": 1296,
    "preview": "# SimpleJson\r\nSmall and fast JSON library for .NET 2.0+/SL4+/WP7+/Windows Store Apps/Portable Class Library and powershe"
  },
  {
    "path": "VERSION",
    "chars": 6,
    "preview": "0.38.0"
  },
  {
    "path": "jakefile.js",
    "chars": 8145,
    "preview": "var fs = require('fs'),\r\n\tnjake = require('./src/njake'),\r\n\tmsbuild = njake.msbuild,\r\n\tnunit = njake.nunit,\r\n\tnuget = nj"
  },
  {
    "path": "src/JsonViewer/JsonViewer.Designer.cs",
    "chars": 6869,
    "preview": "namespace JsonViewer\r\n{\r\n    partial class JsonViewer\r\n    {\r\n        /// <summary>\r\n        /// Required designer vari"
  },
  {
    "path": "src/JsonViewer/JsonViewer.cs",
    "chars": 4417,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"JsonViewer.cs\" company=\""
  },
  {
    "path": "src/JsonViewer/JsonViewer.csproj",
    "chars": 3859,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/JsonViewer/JsonViewer.resx",
    "chars": 9690,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    T"
  },
  {
    "path": "src/JsonViewer/Program.cs",
    "chars": 1570,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"Program.cs\" company=\"The"
  },
  {
    "path": "src/JsonViewer/Properties/AssemblyInfo.cs",
    "chars": 1479,
    "preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
  },
  {
    "path": "src/JsonViewer/Properties/Resources.Designer.cs",
    "chars": 2844,
    "preview": "//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code"
  },
  {
    "path": "src/JsonViewer/Properties/Resources.resx",
    "chars": 5610,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    T"
  },
  {
    "path": "src/JsonViewer/Properties/Settings.Designer.cs",
    "chars": 1091,
    "preview": "//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code"
  },
  {
    "path": "src/JsonViewer/Properties/Settings.settings",
    "chars": 247,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings"
  },
  {
    "path": "src/SimpleJson/EscapeToJavascriptStringTests.cs",
    "chars": 2367,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson/Properties/AssemblyInfo.cs",
    "chars": 1538,
    "preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
  },
  {
    "path": "src/SimpleJson/SimpleJson-Net20.csproj",
    "chars": 2350,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-Net35.csproj",
    "chars": 2181,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-Net40.csproj",
    "chars": 2304,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-Net45.csproj",
    "chars": 2654,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-Portable-NoLinqExpression.csproj",
    "chars": 2898,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-Portable-WP8WinStoreNet45.csproj",
    "chars": 2759,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-Portable.csproj",
    "chars": 2767,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-SL4.csproj",
    "chars": 3394,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-SL5.csproj",
    "chars": 3426,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-WP7.csproj",
    "chars": 3131,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-WP71.csproj",
    "chars": 3297,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson-WindowsStore.csproj",
    "chars": 5637,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson/SimpleJson.cs",
    "chars": 89208,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"SimpleJson.cs\" company=\"T"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/DataContractSampleClassess.cs",
    "chars": 5941,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PrivateFieldsSerializeTests.cs",
    "chars": 2391,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PrivateGetterSettersSerializeTests.cs",
    "chars": 2438,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PrivateGettersSerializeTests.cs",
    "chars": 2400,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PrivateReadonlySerializeTests.cs",
    "chars": 2437,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PrivateSettersSerializeTests.cs",
    "chars": 2345,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PublicFieldsSerializeTests.cs",
    "chars": 2382,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PublicGetterSetterDeserializeTests.cs",
    "chars": 2619,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PublicGetterSettersSerializeTests.cs",
    "chars": 2431,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PublicGettersSerializeTests.cs",
    "chars": 2377,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PublicReadonlySerializeTests.cs",
    "chars": 2426,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DataContractTests/PublicSettersSerializeTests.cs",
    "chars": 2338,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/DeserializeGenericListTests.cs",
    "chars": 3516,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/DeserializeObjectTests.cs",
    "chars": 16872,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/EscapeToJavascriptStringTests.cs",
    "chars": 2367,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/JsonArrayTests.cs",
    "chars": 7324,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/JsonDataContractSerializeObjectTests.cs",
    "chars": 11364,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/JsonDecodeTypeTests.cs",
    "chars": 9592,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/Package.appxmanifest",
    "chars": 1923,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\">\r\n  \r\n  <Ident"
  },
  {
    "path": "src/SimpleJson.Tests/PocoDeserializerTests/ArrayTests.cs",
    "chars": 2578,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/PocoDeserializerTests/DateTimeDeserializeTests.cs",
    "chars": 4694,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/PocoDeserializerTests/DictionaryDeserializeTests.cs",
    "chars": 4297,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/PocoDeserializerTests/ListOfPocoDeserializeTests.cs",
    "chars": 2933,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/PocoDeserializerTests/NullableTypeDeserializeTests.cs",
    "chars": 4642,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/PocoDeserializerTests/PrimitiveDeserializeTest.cs",
    "chars": 1306,
    "preview": "using System;\r\n#if NUNIT\r\nusing TestClass = NUnit.Framework.TestFixtureAttribute;\r\nusing TestMethod = NUnit.Framework.T"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/DateTimeSerializeTests.cs",
    "chars": 3495,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/NullableSerializeTests.cs",
    "chars": 3642,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateFieldsDeserializeTests.cs",
    "chars": 2471,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateFieldsSerializeTests.cs",
    "chars": 2382,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateGetterSettersDeserializeTests.cs",
    "chars": 2488,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateGetterSettersSerializeTests.cs",
    "chars": 2431,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateGettersSerializeTests.cs",
    "chars": 2389,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateReadonlySerializeTests.cs",
    "chars": 2426,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PrivateSettersSerializeTests.cs",
    "chars": 2389,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicFieldsDeserializeTests.cs",
    "chars": 3573,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicFieldsSerializeTests.cs",
    "chars": 2493,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGetterDeserializeTests.cs",
    "chars": 3709,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGetterSetterDeserializeTests.cs",
    "chars": 3609,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGetterSettersSerializeTests.cs",
    "chars": 2542,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicGettersSerializeTests.cs",
    "chars": 2488,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicReadonlySerializeTests.cs",
    "chars": 2537,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/PublicSettersSerializeTests.cs",
    "chars": 2382,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/PocoJsonSerializerTests/ToStringTests.cs",
    "chars": 2324,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/Properties/AssemblyInfo.cs",
    "chars": 1491,
    "preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
  },
  {
    "path": "src/SimpleJson.Tests/SerializeObject.KnownNonPrimitive.Tests.cs",
    "chars": 2605,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/SerializeObject.Primitive.Tests.cs",
    "chars": 14280,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The "
  },
  {
    "path": "src/SimpleJson.Tests/SerializeObject.UnknownNonPrimitive.Tests.cs",
    "chars": 6399,
    "preview": "//-----------------------------------------------------------------------\r\n// <copyright file=\"<file>.cs\" company=\"The O"
  },
  {
    "path": "src/SimpleJson.Tests/SimleJson.Tests-WindowsStore.csproj",
    "chars": 10598,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson.Tests/SimpleJson.Tests.csproj",
    "chars": 6849,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/SimpleJson.Tests/packages.config",
    "chars": 113,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"NUnit\" version=\"2.5.10.11092\" />\r\n</packages>"
  },
  {
    "path": "src/SimpleJson.nuspec",
    "chars": 1002,
    "preview": "<?xml version=\"1.0\"?>\r\n<package xmlns=\"http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd\">\r\n  <metadata>\r\n    <i"
  },
  {
    "path": "src/SimpleJson.sln",
    "chars": 23198,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 2013\r\nVisualStudioVersion = 12.0.20827.3"
  },
  {
    "path": "src/njake.js",
    "chars": 10201,
    "preview": "(function () {\r\n\r\n    var \r\n        spawn = require('child_process').spawn,\r\n        path = require('path'),\r\n        fs"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/NUnitFitTests.html",
    "chars": 6297,
    "preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r\n<html>\r\n\t<body>\r\n\t\t<h1>NUnit Acceptance Tests</h1>\r\n\t\t<p"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/fit-license.txt",
    "chars": 18347,
    "preview": "\r\n\r\n\t\t    GNU GENERAL PUBLIC LICENSE\r\n\t\t       Version 2, June 1991\r\n\r\n Copyright (C) 1989, 1991 Free Software Foundatio"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/lib/nunit.framework.xml",
    "chars": 555637,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>nunit.framework</name>\r\n    </assembly>\r\n    <members>\r\n    "
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/license.txt",
    "chars": 1125,
    "preview": "Copyright  2002-2008 Charlie Poole\r\nCopyright  2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov\r\nCopyrigh"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/NUnitTests.VisualState.xml",
    "chars": 11235,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<VisualState xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"ht"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/NUnitTests.config",
    "chars": 3440,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<configuration>\r\n<!--\r\n\t This is the configuration file for the NUnitTests.nuni"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/NUnitTests.nunit",
    "chars": 642,
    "preview": "<NUnitProject>\r\n  <Settings appbase=\".\"/>\r\n  <Config name=\"Default\" binpath=\"lib;tests;framework\" runtimeFramework=\"v2.0"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/TestResult.xml",
    "chars": 804457,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!--This file represents the results of running a test suite-->"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/agent.conf",
    "chars": 92,
    "preview": "<AgentConfig>\r\n  <Port>8080</Port>\r\n  <PathToAssemblies>.</PathToAssemblies>\r\n</AgentConfig>"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/agent.log.conf",
    "chars": 509,
    "preview": "<log4net>\r\n\t<!-- A1 is set to be a ConsoleAppender -->\r\n\t<appender name=\"A1\" type=\"log4net.Appender.ConsoleAppender\">\r\n\r"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/launcher.log.conf",
    "chars": 509,
    "preview": "<log4net>\r\n\t<!-- A1 is set to be a ConsoleAppender -->\r\n\t<appender name=\"A1\" type=\"log4net.Appender.ConsoleAppender\">\r\n\r"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe.config",
    "chars": 2604,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n  \r\n  <runtime>\r\n    <!-- We need this so test exceptions don't"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/nunit-agent.exe.config",
    "chars": 2604,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n  \r\n  <runtime>\r\n    <!-- We need this so test exceptions don't"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe.config",
    "chars": 2598,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n\r\n  <runtime>\r\n    <!-- We need this so test exceptions don't c"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/nunit-console.exe.config",
    "chars": 2598,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n\r\n  <runtime>\r\n    <!-- We need this so test exceptions don't c"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/nunit-x86.exe.config",
    "chars": 3073,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n  <!--\r\n     Application settings for NUnit-gui.exe. Do NOT put"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/nunit.exe.config",
    "chars": 3073,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n  <!--\r\n     Application settings for NUnit-gui.exe. Do NOT put"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe.config",
    "chars": 2844,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\r\n<configuration>\r\n\r\n  <!-- Set the level for tracing NUnit itself -->\r\n  <"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe.config",
    "chars": 2844,
    "preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\r\n<configuration>\r\n\r\n  <!-- Set the level for tracing NUnit itself -->\r\n  <"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/runFile.exe.config",
    "chars": 1794,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<configuration>\r\n  <startup>\r\n\t  <supportedRuntime version=\"v2.0.50727\" />\r\n\t  "
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/runpnunit.bat",
    "chars": 56,
    "preview": "start pnunit-agent agent.conf\r\npnunit-launcher test.conf"
  },
  {
    "path": "src/packages/NUnit.2.5.10.11092/tools/test.conf",
    "chars": 801,
    "preview": "<TestGroup>\r\n    <ParallelTests>\r\n\r\n        <ParallelTest>\r\n            <Name>Testing</Name>\r\n            <Tests>\r\n     "
  },
  {
    "path": "src/packages/repositories.config",
    "chars": 133,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<repositories>\r\n  <repository path=\"..\\SimpleJson.Tests\\packages.config\" />\r\n</"
  },
  {
    "path": "src/simplejson.script.ps1",
    "chars": 1373,
    "preview": "# SimpleJson https://github.com/facebook-csharp-sdk/simple-json\r\n# License: MIT License\r\n# Version:\r\n\r\nfunction ConvertF"
  }
]

// ... and 3 more files (download for full content)

About this extraction

This page contains the full source code of the facebook-csharp-sdk/simple-json GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 112 files (1.8 MB), approximately 401.5k tokens, and a symbol index with 443 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!