From d0dd73fa0d92f7bbb3210ecdb07856f0d650d239 Mon Sep 17 00:00:00 2001 From: agoransson Date: Wed, 16 Nov 2011 14:21:41 +0100 Subject: [PATCH 01/38] First commit. --- .classpath | 6 + .gitignore | 1 + .project | 17 + README => README.md | 124 ++ Test.java | 931 -------- data/README | 7 + .../json4p-0.1.1/download/json4p-0.1.1.zip | Bin 0 -> 160796 bytes .../json4p-0.1.1/examples/Hello/Hello.pde | 19 + distribution/json4p-0.1.1/index.html | 132 ++ .../reference/allclasses-frame.html | 59 + .../reference/allclasses-noframe.html | 59 + .../reference/constant-values.html | 170 ++ .../reference/deprecated-list.html | 142 ++ .../json4p-0.1.1/reference/help-doc.html | 209 ++ .../json4p-0.1.1/reference/index-all.html | 893 ++++++++ .../json4p-0.1.1/reference/index.html | 36 + .../json4p-0.1.1/reference/org/json/CDL.html | 500 +++++ .../reference/org/json/Cookie.html | 357 ++++ .../reference/org/json/CookieList.html | 297 +++ .../json4p-0.1.1/reference/org/json/HTTP.html | 365 ++++ .../reference/org/json/HTTPTokener.html | 277 +++ .../reference/org/json/JSONArray.html | 1473 +++++++++++++ .../reference/org/json/JSONException.html | 291 +++ .../reference/org/json/JSONML.html | 422 ++++ .../reference/org/json/JSONObject.html | 1883 +++++++++++++++++ .../reference/org/json/JSONString.html | 216 ++ .../reference/org/json/JSONStringer.html | 303 +++ .../reference/org/json/JSONTokener.html | 667 ++++++ .../reference/org/json/JSONWriter.html | 506 +++++ .../json4p-0.1.1/reference/org/json/XML.html | 601 ++++++ .../reference/org/json/XMLTokener.html | 452 ++++ .../reference/org/json/package-frame.html | 78 + .../reference/org/json/package-summary.html | 239 +++ .../reference/org/json/package-tree.html | 160 ++ .../json4p-0.1.1/reference/overview-tree.html | 162 ++ .../json4p-0.1.1/reference/package-list | 1 + .../reference/resources/inherit.gif | Bin 0 -> 57 bytes .../reference/serialized-form.html | 178 ++ .../json4p-0.1.1/reference/stylesheet.css | 310 +++ distribution/json4p-0.1.1/stylesheet.css | 203 ++ .../download/json4processing-0.1.1.zip | Bin 0 -> 161976 bytes .../examples/Hello/Hello.pde | 19 + distribution/json4processing-0.1.1/index.html | 132 ++ .../reference/allclasses-frame.html | 59 + .../reference/allclasses-noframe.html | 59 + .../reference/constant-values.html | 170 ++ .../reference/deprecated-list.html | 142 ++ .../reference/help-doc.html | 209 ++ .../reference/index-all.html | 893 ++++++++ .../reference/index.html | 36 + .../reference/org/json/CDL.html | 500 +++++ .../reference/org/json/Cookie.html | 357 ++++ .../reference/org/json/CookieList.html | 297 +++ .../reference/org/json/HTTP.html | 365 ++++ .../reference/org/json/HTTPTokener.html | 277 +++ .../reference/org/json/JSONArray.html | 1473 +++++++++++++ .../reference/org/json/JSONException.html | 291 +++ .../reference/org/json/JSONML.html | 422 ++++ .../reference/org/json/JSONObject.html | 1883 +++++++++++++++++ .../reference/org/json/JSONString.html | 216 ++ .../reference/org/json/JSONStringer.html | 303 +++ .../reference/org/json/JSONTokener.html | 667 ++++++ .../reference/org/json/JSONWriter.html | 506 +++++ .../reference/org/json/XML.html | 601 ++++++ .../reference/org/json/XMLTokener.html | 452 ++++ .../reference/org/json/package-frame.html | 78 + .../reference/org/json/package-summary.html | 239 +++ .../reference/org/json/package-tree.html | 160 ++ .../reference/overview-tree.html | 162 ++ .../reference/package-list | 1 + .../reference/resources/inherit.gif | Bin 0 -> 57 bytes .../reference/serialized-form.html | 178 ++ .../reference/stylesheet.css | 310 +++ .../json4processing-0.1.1/stylesheet.css | 203 ++ examples/Hello/Hello.pde | 19 + examples/README | 1 + lib/README | 6 + readme.html | 202 ++ resources/ChangeLog.txt | 29 + resources/build.properties | 124 ++ resources/build.xml | 369 ++++ resources/code/ExampleTaglet.java | 231 ++ resources/code/ant-contrib-1.0b3.jar | Bin 0 -> 224277 bytes resources/code/doc.sh | 18 + resources/install_instructions.txt | 29 + resources/stylesheet.css | 310 +++ CDL.java => src/org/json/CDL.java | 0 Cookie.java => src/org/json/Cookie.java | 0 .../org/json/CookieList.java | 0 HTTP.java => src/org/json/HTTP.java | 0 .../org/json/HTTPTokener.java | 0 JSONArray.java => src/org/json/JSONArray.java | 0 .../org/json/JSONException.java | 0 JSONML.java => src/org/json/JSONML.java | 0 .../org/json/JSONObject.java | 0 .../org/json/JSONString.java | 0 .../org/json/JSONStringer.java | 0 .../org/json/JSONTokener.java | 0 .../org/json/JSONWriter.java | 0 XML.java => src/org/json/XML.java | 0 .../org/json/XMLTokener.java | 0 web/index.html | 132 ++ web/stylesheet.css | 203 ++ 103 files changed, 25148 insertions(+), 931 deletions(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project rename README => README.md (54%) mode change 100755 => 100644 delete mode 100755 Test.java create mode 100644 data/README create mode 100644 distribution/json4p-0.1.1/download/json4p-0.1.1.zip create mode 100644 distribution/json4p-0.1.1/examples/Hello/Hello.pde create mode 100644 distribution/json4p-0.1.1/index.html create mode 100644 distribution/json4p-0.1.1/reference/allclasses-frame.html create mode 100644 distribution/json4p-0.1.1/reference/allclasses-noframe.html create mode 100644 distribution/json4p-0.1.1/reference/constant-values.html create mode 100644 distribution/json4p-0.1.1/reference/deprecated-list.html create mode 100644 distribution/json4p-0.1.1/reference/help-doc.html create mode 100644 distribution/json4p-0.1.1/reference/index-all.html create mode 100644 distribution/json4p-0.1.1/reference/index.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/CDL.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/Cookie.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/CookieList.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/HTTP.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONArray.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONException.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONML.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONObject.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONString.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONStringer.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONTokener.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONWriter.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/XML.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/XMLTokener.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/package-frame.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/package-summary.html create mode 100644 distribution/json4p-0.1.1/reference/org/json/package-tree.html create mode 100644 distribution/json4p-0.1.1/reference/overview-tree.html create mode 100644 distribution/json4p-0.1.1/reference/package-list create mode 100644 distribution/json4p-0.1.1/reference/resources/inherit.gif create mode 100644 distribution/json4p-0.1.1/reference/serialized-form.html create mode 100644 distribution/json4p-0.1.1/reference/stylesheet.css create mode 100644 distribution/json4p-0.1.1/stylesheet.css create mode 100644 distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip create mode 100644 distribution/json4processing-0.1.1/examples/Hello/Hello.pde create mode 100644 distribution/json4processing-0.1.1/index.html create mode 100644 distribution/json4processing-0.1.1/reference/allclasses-frame.html create mode 100644 distribution/json4processing-0.1.1/reference/allclasses-noframe.html create mode 100644 distribution/json4processing-0.1.1/reference/constant-values.html create mode 100644 distribution/json4processing-0.1.1/reference/deprecated-list.html create mode 100644 distribution/json4processing-0.1.1/reference/help-doc.html create mode 100644 distribution/json4processing-0.1.1/reference/index-all.html create mode 100644 distribution/json4processing-0.1.1/reference/index.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/CDL.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/Cookie.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/CookieList.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/HTTP.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONArray.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONException.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONML.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONObject.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONString.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/XML.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/package-frame.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/package-summary.html create mode 100644 distribution/json4processing-0.1.1/reference/org/json/package-tree.html create mode 100644 distribution/json4processing-0.1.1/reference/overview-tree.html create mode 100644 distribution/json4processing-0.1.1/reference/package-list create mode 100644 distribution/json4processing-0.1.1/reference/resources/inherit.gif create mode 100644 distribution/json4processing-0.1.1/reference/serialized-form.html create mode 100644 distribution/json4processing-0.1.1/reference/stylesheet.css create mode 100644 distribution/json4processing-0.1.1/stylesheet.css create mode 100644 examples/Hello/Hello.pde create mode 100644 examples/README create mode 100644 lib/README create mode 100644 readme.html create mode 100644 resources/ChangeLog.txt create mode 100644 resources/build.properties create mode 100644 resources/build.xml create mode 100644 resources/code/ExampleTaglet.java create mode 100644 resources/code/ant-contrib-1.0b3.jar create mode 100644 resources/code/doc.sh create mode 100644 resources/install_instructions.txt create mode 100644 resources/stylesheet.css rename CDL.java => src/org/json/CDL.java (100%) mode change 100755 => 100644 rename Cookie.java => src/org/json/Cookie.java (100%) mode change 100755 => 100644 rename CookieList.java => src/org/json/CookieList.java (100%) mode change 100755 => 100644 rename HTTP.java => src/org/json/HTTP.java (100%) mode change 100755 => 100644 rename HTTPTokener.java => src/org/json/HTTPTokener.java (100%) mode change 100755 => 100644 rename JSONArray.java => src/org/json/JSONArray.java (100%) mode change 100755 => 100644 rename JSONException.java => src/org/json/JSONException.java (100%) mode change 100755 => 100644 rename JSONML.java => src/org/json/JSONML.java (100%) mode change 100755 => 100644 rename JSONObject.java => src/org/json/JSONObject.java (100%) mode change 100755 => 100644 rename JSONString.java => src/org/json/JSONString.java (100%) mode change 100755 => 100644 rename JSONStringer.java => src/org/json/JSONStringer.java (100%) mode change 100755 => 100644 rename JSONTokener.java => src/org/json/JSONTokener.java (100%) mode change 100755 => 100644 rename JSONWriter.java => src/org/json/JSONWriter.java (100%) mode change 100755 => 100644 rename XML.java => src/org/json/XML.java (100%) mode change 100755 => 100644 rename XMLTokener.java => src/org/json/XMLTokener.java (100%) mode change 100755 => 100644 create mode 100644 web/index.html create mode 100644 web/stylesheet.css diff --git a/.classpath b/.classpath new file mode 100644 index 000000000..fb5011632 --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..5241a7220 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.class \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 000000000..f207c9e4e --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + JSON-processing + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/README b/README.md old mode 100755 new mode 100644 similarity index 54% rename from README rename to README.md index ca6dc1176..f9d0c0291 --- a/README +++ b/README.md @@ -1,3 +1,127 @@ +# JSON Processing implementation + +This library is simply a fork of the original JSON for Java library written by Douglas Crockford for easy use inside Processing IDE. See the original README below. + +# Getting started with JSON in Processing. + +``` java +/** + * Creating a JSONObject with primitive members + */ + +JSONObject obj = new JSONObject(); +try { + obj.put("myint", 5); + obj.put("myfloat", 5.5); +} +catch(JSONException e) { + e.printStackTrace(); +} + +println( obj ); +``` + +``` java +/** + * Creating a JSONObject with complex members + */ +JSONObject myfirstmember = new JSONObject(); +try { + myfirstmember.put("myint", 5); +} +catch(JSONException e) { + e.printStackTrace(); +} + +JSONObject mysecondmember = new JSONObject(); +try { + mysecondmember.put("myfloat", 5.5); +} +catch(JSONException e) { + e.printStackTrace(); +} + +JSONObject obj = new JSONObject(); +try { + obj.put("myobj", myfirstmember); + obj.put("myobj2", mysecondmember); +} +catch(JSONException e) { + e.printStackTrace(); +} + +println( obj ); +``` + +``` java +/** + * Creating a JSONObject from a json-formatted String. + */ +String json_formatted_string = "{\"myint\":5,\"myfloat\":5.5}"; +try { + JSONObject obj = new JSONObject(json_formatted_string); + println( obj ); +} +catch(Exception e) { + e.printStackTrace(); +} + +``` + +``` java +/** + * Creating a JSONArray of primitives + */ +JSONArray arr = new JSONArray(); +try { + arr.put(5); + arr.put(5.5); + arr.put('a'); +} +catch(JSONException e) { + e.printStackTrace(); +} +println(arr); +``` + +``` java +/** + * Creating a JSONArray of objects + */ +JSONObject first = new JSONObject(); +try { + first.put("val", 5); +} +catch(JSONException e) { + e.printStackTrace(); +} + +JSONObject sec = new JSONObject(); +try { + sec.put("val", 5.5); +} +catch(JSONException e) { + e.printStackTrace(); +} + +JSONObject third = new JSONObject(); +try { + third.put("val", 'a'); +} +catch(JSONException e) { + e.printStackTrace(); +} + +JSONArray arr = new JSONArray(); +arr.put(first); +arr.put(sec); +arr.put(third); + +println(arr); +``` + +# Original README + JSON in Java [package org.json] Douglas Crockford diff --git a/Test.java b/Test.java deleted file mode 100755 index 523734cdb..000000000 --- a/Test.java +++ /dev/null @@ -1,931 +0,0 @@ -package org.json; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.io.StringWriter; -import junit.framework.TestCase; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -/** - * Test class. This file is not formally a member of the org.json library. - * It is just a test tool. - * - * Issue: JSONObject does not specify the ordering of keys, so simple-minded - * comparisons of .toString to a string literal are likely to fail. - * - * @author JSON.org - * @version 2011-10-25 - */ -public class Test extends TestCase { - public Test(String name) { - super(name); - } - - protected void setUp() throws Exception { - super.setUp(); - } - - protected void tearDown() throws Exception { - super.tearDown(); - } - - public void testXML() throws Exception { - JSONObject jsonobject; - String string; - - jsonobject = XML.toJSONObject(" Ignore the stuff past the end. "); - assertEquals("{\"content\":\"This is a collection of test patterns and examples for org.json.\"}", jsonobject.toString()); - assertEquals("This is a collection of test patterns and examples for org.json.", jsonobject.getString("content")); - - string = ""; - jsonobject = XML.toJSONObject(string); - assertEquals("{\"test\": {\n \"blank\": \"\",\n \"empty\": \"\"\n}}", jsonobject.toString(2)); - assertEquals("", XML.toString(jsonobject)); - - string = ""; - jsonobject = XML.toJSONObject(string); - assertEquals("{\"subsonic-response\":{\"playlists\":{\"playlist\":[{\"id\":\"476c65652e6d3375\",\"int\":\"12345678901234567890123456789012345678901234567890213991133777039355058536718668104339937\"},{\"id\":\"50617274792e78737066\"}]}}}", jsonobject.toString()); - } - - public void testNull() throws Exception { - JSONObject jsonobject; - - jsonobject = new JSONObject("{\"message\":\"null\"}"); - assertFalse(jsonobject.isNull("message")); - assertEquals("null", jsonobject.getString("message")); - - jsonobject = new JSONObject("{\"message\":null}"); - assertTrue(jsonobject.isNull("message")); - } - - public void testJSON() throws Exception { - double eps = 2.220446049250313e-16; - Iterator iterator; - JSONArray jsonarray; - JSONObject jsonobject; - JSONStringer jsonstringer; - Object object; - String string; - - Beany beanie = new Beany("A beany object", 42, true); - - string = "[001122334455]"; - jsonarray = new JSONArray(string); - assertEquals("[1122334455]", jsonarray.toString()); - - string = "[666e666]"; - jsonarray = new JSONArray(string); - assertEquals("[\"666e666\"]", jsonarray.toString()); - - string = "[00.10]"; - jsonarray = new JSONArray(string); - assertEquals("[0.1]", jsonarray.toString()); - - jsonobject = new JSONObject(); - object = null; - jsonobject.put("booga", object); - jsonobject.put("wooga", JSONObject.NULL); - assertEquals("{\"wooga\":null}", jsonobject.toString()); - assertTrue(jsonobject.isNull("booga")); - - jsonobject = new JSONObject(); - jsonobject.increment("two"); - jsonobject.increment("two"); - assertEquals("{\"two\":2}", jsonobject.toString()); - assertEquals(2, jsonobject.getInt("two")); - - string = "{ \"list of lists\" : [ [1, 2, 3], [4, 5, 6], ] }"; - jsonobject = new JSONObject(string); - assertEquals("{\"list of lists\": [\n" + - " [\n" + - " 1,\n" + - " 2,\n" + - " 3\n" + - " ],\n" + - " [\n" + - " 4,\n" + - " 5,\n" + - " 6\n" + - " ]\n" + - "]}", jsonobject.toString(4)); - assertEquals("123456", - XML.toString(jsonobject)); - - string = " Basic bread Flour Yeast Water Salt Mix all ingredients together. Knead thoroughly. Cover with a cloth, and leave for one hour in warm room. Knead again. Place in a bread baking tin. Cover with a cloth, and leave for one hour in warm room. Bake in the oven at 180(degrees)C for 30 minutes. "; - jsonobject = XML.toJSONObject(string); - assertEquals("{\"recipe\": {\n \"title\": \"Basic bread\",\n \"cook_time\": \"3 hours\",\n \"instructions\": {\"step\": [\n \"Mix all ingredients together.\",\n \"Knead thoroughly.\",\n \"Cover with a cloth, and leave for one hour in warm room.\",\n \"Knead again.\",\n \"Place in a bread baking tin.\",\n \"Cover with a cloth, and leave for one hour in warm room.\",\n \"Bake in the oven at 180(degrees)C for 30 minutes.\"\n ]},\n \"name\": \"bread\",\n \"ingredient\": [\n {\n \"content\": \"Flour\",\n \"amount\": 8,\n \"unit\": \"dL\"\n },\n {\n \"content\": \"Yeast\",\n \"amount\": 10,\n \"unit\": \"grams\"\n },\n {\n \"content\": \"Water\",\n \"amount\": 4,\n \"unit\": \"dL\",\n \"state\": \"warm\"\n },\n {\n \"content\": \"Salt\",\n \"amount\": 1,\n \"unit\": \"teaspoon\"\n }\n ],\n \"prep_time\": \"5 mins\"\n}}", - jsonobject.toString(4)); - - jsonobject = JSONML.toJSONObject(string); - assertEquals("{\"cook_time\":\"3 hours\",\"name\":\"bread\",\"tagName\":\"recipe\",\"childNodes\":[{\"tagName\":\"title\",\"childNodes\":[\"Basic bread\"]},{\"amount\":8,\"unit\":\"dL\",\"tagName\":\"ingredient\",\"childNodes\":[\"Flour\"]},{\"amount\":10,\"unit\":\"grams\",\"tagName\":\"ingredient\",\"childNodes\":[\"Yeast\"]},{\"amount\":4,\"unit\":\"dL\",\"tagName\":\"ingredient\",\"state\":\"warm\",\"childNodes\":[\"Water\"]},{\"amount\":1,\"unit\":\"teaspoon\",\"tagName\":\"ingredient\",\"childNodes\":[\"Salt\"]},{\"tagName\":\"instructions\",\"childNodes\":[{\"tagName\":\"step\",\"childNodes\":[\"Mix all ingredients together.\"]},{\"tagName\":\"step\",\"childNodes\":[\"Knead thoroughly.\"]},{\"tagName\":\"step\",\"childNodes\":[\"Cover with a cloth, and leave for one hour in warm room.\"]},{\"tagName\":\"step\",\"childNodes\":[\"Knead again.\"]},{\"tagName\":\"step\",\"childNodes\":[\"Place in a bread baking tin.\"]},{\"tagName\":\"step\",\"childNodes\":[\"Cover with a cloth, and leave for one hour in warm room.\"]},{\"tagName\":\"step\",\"childNodes\":[\"Bake in the oven at 180(degrees)C for 30 minutes.\"]}]}],\"prep_time\":\"5 mins\"}", - jsonobject.toString()); - assertEquals("Basic breadFlourYeastWaterSaltMix all ingredients together.Knead thoroughly.Cover with a cloth, and leave for one hour in warm room.Knead again.Place in a bread baking tin.Cover with a cloth, and leave for one hour in warm room.Bake in the oven at 180(degrees)C for 30 minutes.", - JSONML.toString(jsonobject)); - - jsonarray = JSONML.toJSONArray(string); - assertEquals("[\n \"recipe\",\n {\n \"cook_time\": \"3 hours\",\n \"name\": \"bread\",\n \"prep_time\": \"5 mins\"\n },\n [\n \"title\",\n \"Basic bread\"\n ],\n [\n \"ingredient\",\n {\n \"amount\": 8,\n \"unit\": \"dL\"\n },\n \"Flour\"\n ],\n [\n \"ingredient\",\n {\n \"amount\": 10,\n \"unit\": \"grams\"\n },\n \"Yeast\"\n ],\n [\n \"ingredient\",\n {\n \"amount\": 4,\n \"unit\": \"dL\",\n \"state\": \"warm\"\n },\n \"Water\"\n ],\n [\n \"ingredient\",\n {\n \"amount\": 1,\n \"unit\": \"teaspoon\"\n },\n \"Salt\"\n ],\n [\n \"instructions\",\n [\n \"step\",\n \"Mix all ingredients together.\"\n ],\n [\n \"step\",\n \"Knead thoroughly.\"\n ],\n [\n \"step\",\n \"Cover with a cloth, and leave for one hour in warm room.\"\n ],\n [\n \"step\",\n \"Knead again.\"\n ],\n [\n \"step\",\n \"Place in a bread baking tin.\"\n ],\n [\n \"step\",\n \"Cover with a cloth, and leave for one hour in warm room.\"\n ],\n [\n \"step\",\n \"Bake in the oven at 180(degrees)C for 30 minutes.\"\n ]\n ]\n]", - jsonarray.toString(4)); - assertEquals("Basic breadFlourYeastWaterSaltMix all ingredients together.Knead thoroughly.Cover with a cloth, and leave for one hour in warm room.Knead again.Place in a bread baking tin.Cover with a cloth, and leave for one hour in warm room.Bake in the oven at 180(degrees)C for 30 minutes.", - JSONML.toString(jsonarray)); - - string = "

JSONML is a transformation between JSON and XML that preserves ordering of document features.

JSONML can work with JSON arrays or JSON objects.

Three
little
words

"; - jsonobject = JSONML.toJSONObject(string); - assertEquals("{\n \"id\": \"demo\",\n \"tagName\": \"div\",\n \"class\": \"JSONML\",\n \"childNodes\": [\n {\n \"tagName\": \"p\",\n \"childNodes\": [\n \"JSONML is a transformation between\",\n {\n \"tagName\": \"b\",\n \"childNodes\": [\"JSON\"]\n },\n \"and\",\n {\n \"tagName\": \"b\",\n \"childNodes\": [\"XML\"]\n },\n \"that preserves ordering of document features.\"\n ]\n },\n {\n \"tagName\": \"p\",\n \"childNodes\": [\"JSONML can work with JSON arrays or JSON objects.\"]\n },\n {\n \"tagName\": \"p\",\n \"childNodes\": [\n \"Three\",\n {\"tagName\": \"br\"},\n \"little\",\n {\"tagName\": \"br\"},\n \"words\"\n ]\n }\n ]\n}", - jsonobject.toString(4)); - assertEquals("

JSONML is a transformation betweenJSONandXMLthat preserves ordering of document features.

JSONML can work with JSON arrays or JSON objects.

Three
little
words

", - JSONML.toString(jsonobject)); - - jsonarray = JSONML.toJSONArray(string); - assertEquals("[\n \"div\",\n {\n \"id\": \"demo\",\n \"class\": \"JSONML\"\n },\n [\n \"p\",\n \"JSONML is a transformation between\",\n [\n \"b\",\n \"JSON\"\n ],\n \"and\",\n [\n \"b\",\n \"XML\"\n ],\n \"that preserves ordering of document features.\"\n ],\n [\n \"p\",\n \"JSONML can work with JSON arrays or JSON objects.\"\n ],\n [\n \"p\",\n \"Three\",\n [\"br\"],\n \"little\",\n [\"br\"],\n \"words\"\n ]\n]", - jsonarray.toString(4)); - assertEquals("

JSONML is a transformation betweenJSONandXMLthat preserves ordering of document features.

JSONML can work with JSON arrays or JSON objects.

Three
little
words

", - JSONML.toString(jsonarray)); - - string = "{\"xmlns:soap\":\"http://www.w3.org/2003/05/soap-envelope\",\"tagName\":\"soap:Envelope\",\"childNodes\":[{\"tagName\":\"soap:Header\"},{\"tagName\":\"soap:Body\",\"childNodes\":[{\"tagName\":\"ws:listProducts\",\"childNodes\":[{\"tagName\":\"ws:delay\",\"childNodes\":[1]}]}]}],\"xmlns:ws\":\"http://warehouse.acme.com/ws\"}"; - jsonobject = new JSONObject(string); - assertEquals("1", - JSONML.toString(jsonobject)); - - string = "\n Robert\n Smith\n
\n 12345 Sixth Ave\n Anytown\n CA\n 98765-4321\n
\n
"; - jsonobject = XML.toJSONObject(string); - assertEquals("{\"person\": {\n \"lastName\": \"Smith\",\n \"address\": {\n \"postalCode\": \"98765-4321\",\n \"street\": \"12345 Sixth Ave\",\n \"state\": \"CA\",\n \"type\": \"home\",\n \"city\": \"Anytown\"\n },\n \"created\": \"2006-11-11T19:23\",\n \"firstName\": \"Robert\",\n \"modified\": \"2006-12-31T23:59\"\n}}", - jsonobject.toString(4)); - - string = "{ \"entity\": { \"imageURL\": \"\", \"name\": \"IXXXXXXXXXXXXX\", \"id\": 12336, \"ratingCount\": null, \"averageRating\": null } }"; - jsonobject = new JSONObject(string); - assertEquals("{\"entity\": {\n \"id\": 12336,\n \"averageRating\": null,\n \"ratingCount\": null,\n \"name\": \"IXXXXXXXXXXXXX\",\n \"imageURL\": \"\"\n}}", - jsonobject.toString(2)); - - jsonstringer = new JSONStringer(); - string = jsonstringer - .object() - .key("single") - .value("MARIE HAA'S") - .key("Johnny") - .value("MARIE HAA\\'S") - .key("foo") - .value("bar") - .key("baz") - .array() - .object() - .key("quux") - .value("Thanks, Josh!") - .endObject() - .endArray() - .key("obj keys") - .value(JSONObject.getNames(beanie)) - .endObject() - .toString(); - assertEquals("{\"single\":\"MARIE HAA'S\",\"Johnny\":\"MARIE HAA\\\\'S\",\"foo\":\"bar\",\"baz\":[{\"quux\":\"Thanks, Josh!\"}],\"obj keys\":[\"aString\",\"aNumber\",\"aBoolean\"]}" - , string); - - assertEquals("{\"a\":[[[\"b\"]]]}" - , new JSONStringer() - .object() - .key("a") - .array() - .array() - .array() - .value("b") - .endArray() - .endArray() - .endArray() - .endObject() - .toString()); - - jsonstringer = new JSONStringer(); - jsonstringer.array(); - jsonstringer.value(1); - jsonstringer.array(); - jsonstringer.value(null); - jsonstringer.array(); - jsonstringer.object(); - jsonstringer.key("empty-array").array().endArray(); - jsonstringer.key("answer").value(42); - jsonstringer.key("null").value(null); - jsonstringer.key("false").value(false); - jsonstringer.key("true").value(true); - jsonstringer.key("big").value(123456789e+88); - jsonstringer.key("small").value(123456789e-88); - jsonstringer.key("empty-object").object().endObject(); - jsonstringer.key("long"); - jsonstringer.value(9223372036854775807L); - jsonstringer.endObject(); - jsonstringer.value("two"); - jsonstringer.endArray(); - jsonstringer.value(true); - jsonstringer.endArray(); - jsonstringer.value(98.6); - jsonstringer.value(-100.0); - jsonstringer.object(); - jsonstringer.endObject(); - jsonstringer.object(); - jsonstringer.key("one"); - jsonstringer.value(1.00); - jsonstringer.endObject(); - jsonstringer.value(beanie); - jsonstringer.endArray(); - assertEquals("[1,[null,[{\"empty-array\":[],\"answer\":42,\"null\":null,\"false\":false,\"true\":true,\"big\":1.23456789E96,\"small\":1.23456789E-80,\"empty-object\":{},\"long\":9223372036854775807},\"two\"],true],98.6,-100,{},{\"one\":1},{\"A beany object\":42}]", - jsonstringer.toString()); - assertEquals("[\n 1,\n [\n null,\n [\n {\n \"empty-array\": [],\n \"empty-object\": {},\n \"answer\": 42,\n \"true\": true,\n \"false\": false,\n \"long\": 9223372036854775807,\n \"big\": 1.23456789E96,\n \"small\": 1.23456789E-80,\n \"null\": null\n },\n \"two\"\n ],\n true\n ],\n 98.6,\n -100,\n {},\n {\"one\": 1},\n {\"A beany object\": 42}\n]", - new JSONArray(jsonstringer.toString()).toString(4)); - - int ar[] = {1, 2, 3}; - JSONArray ja = new JSONArray(ar); - assertEquals("[1,2,3]", ja.toString()); - assertEquals("123", XML.toString(ar)); - - String sa[] = {"aString", "aNumber", "aBoolean"}; - jsonobject = new JSONObject(beanie, sa); - jsonobject.put("Testing JSONString interface", beanie); - assertEquals("{\n \"aBoolean\": true,\n \"aNumber\": 42,\n \"aString\": \"A beany object\",\n \"Testing JSONString interface\": {\"A beany object\":42}\n}", - jsonobject.toString(4)); - - jsonobject = new JSONObject("{slashes: '///', closetag: '', backslash:'\\\\', ei: {quotes: '\"\\''},eo: {a: '\"quoted\"', b:\"don't\"}, quotes: [\"'\", '\"']}"); - assertEquals("{\n \"quotes\": [\n \"'\",\n \"\\\"\"\n ],\n \"slashes\": \"///\",\n \"ei\": {\"quotes\": \"\\\"'\"},\n \"eo\": {\n \"b\": \"don't\",\n \"a\": \"\\\"quoted\\\"\"\n },\n \"closetag\": \"<\\/script>\",\n \"backslash\": \"\\\\\"\n}", - jsonobject.toString(2)); - assertEquals("'"///"'don't"quoted"</script>\\", - XML.toString(jsonobject)); - - jsonobject = new JSONObject( - "{foo: [true, false,9876543210, 0.0, 1.00000001, 1.000000000001, 1.00000000000000001," + - " .00000000000000001, 2.00, 0.1, 2e100, -32,[],{}, \"string\"], " + - " to : null, op : 'Good'," + - "ten:10} postfix comment"); - jsonobject.put("String", "98.6"); - jsonobject.put("JSONObject", new JSONObject()); - jsonobject.put("JSONArray", new JSONArray()); - jsonobject.put("int", 57); - jsonobject.put("double", 123456789012345678901234567890.); - jsonobject.put("true", true); - jsonobject.put("false", false); - jsonobject.put("null", JSONObject.NULL); - jsonobject.put("bool", "true"); - jsonobject.put("zero", -0.0); - jsonobject.put("\\u2028", "\u2028"); - jsonobject.put("\\u2029", "\u2029"); - jsonarray = jsonobject.getJSONArray("foo"); - jsonarray.put(666); - jsonarray.put(2001.99); - jsonarray.put("so \"fine\"."); - jsonarray.put("so ."); - jsonarray.put(true); - jsonarray.put(false); - jsonarray.put(new JSONArray()); - jsonarray.put(new JSONObject()); - jsonobject.put("keys", JSONObject.getNames(jsonobject)); - assertEquals("{\n \"to\": null,\n \"ten\": 10,\n \"JSONObject\": {},\n \"JSONArray\": [],\n \"op\": \"Good\",\n \"keys\": [\n \"to\",\n \"ten\",\n \"JSONObject\",\n \"JSONArray\",\n \"op\",\n \"int\",\n \"true\",\n \"foo\",\n \"zero\",\n \"double\",\n \"String\",\n \"false\",\n \"bool\",\n \"\\\\u2028\",\n \"\\\\u2029\",\n \"null\"\n ],\n \"int\": 57,\n \"true\": true,\n \"foo\": [\n true,\n false,\n 9876543210,\n 0,\n 1.00000001,\n 1.000000000001,\n 1,\n 1.0E-17,\n 2,\n 0.1,\n 2.0E100,\n -32,\n [],\n {},\n \"string\",\n 666,\n 2001.99,\n \"so \\\"fine\\\".\",\n \"so .\",\n true,\n false,\n [],\n {}\n ],\n \"zero\": -0,\n \"double\": 1.2345678901234568E29,\n \"String\": \"98.6\",\n \"false\": false,\n \"bool\": \"true\",\n \"\\\\u2028\": \"\\u2028\",\n \"\\\\u2029\": \"\\u2029\",\n \"null\": null\n}", - jsonobject.toString(4)); - assertEquals("null10GoodtotenJSONObjectJSONArrayopinttruefoozerodoubleStringfalsebool\\u2028\\u2029null57truetruefalse98765432100.01.000000011.0000000000011.01.0E-172.00.12.0E100-32string6662001.99so "fine".so <fine>.truefalse-0.01.2345678901234568E2998.6falsetrue<\\u2028>\u2028<\\u2029>\u2029null", - XML.toString(jsonobject)); - assertEquals(98.6d, jsonobject.getDouble("String"), eps); - assertTrue(jsonobject.getBoolean("bool")); - assertEquals("[true,false,9876543210,0,1.00000001,1.000000000001,1,1.0E-17,2,0.1,2.0E100,-32,[],{},\"string\",666,2001.99,\"so \\\"fine\\\".\",\"so .\",true,false,[],{}]", - jsonobject.getJSONArray("foo").toString()); - assertEquals("Good", jsonobject.getString("op")); - assertEquals(10, jsonobject.getInt("ten")); - assertFalse(jsonobject.optBoolean("oops")); - - string = "First \u0009<content> This is \"content\". 3 JSON does not preserve the sequencing of elements and contents. III T H R E EContent text is an implied structure in XML. JSON does not have implied structure:7everything is explicit.!]]>"; - jsonobject = XML.toJSONObject(string); - assertEquals("{\"xml\": {\n \"content\": [\n \"First \\t\",\n \"This is \\\"content\\\".\",\n \"JSON does not preserve the sequencing of elements and contents.\",\n \"Content text is an implied structure in XML.\",\n \"JSON does not have implied structure:\",\n \"everything is explicit.\",\n \"CDATA blocks!\"\n ],\n \"two\": \" \\\"2\\\" \",\n \"seven\": 7,\n \"five\": [\n \"\",\n \"\"\n ],\n \"one\": 1,\n \"three\": [\n 3,\n \"III\",\n \"T H R E E\"\n ],\n \"four\": \"\",\n \"six\": {\"content\": 6}\n}}", - jsonobject.toString(2)); - assertEquals("First \t<content>\n" + - "This is "content".\n" + - "JSON does not preserve the sequencing of elements and contents.\n" + - "Content text is an implied structure in XML.\n" + - "JSON does not have implied structure:\n" + - "everything is explicit.\n" + - "CDATA blocks<are><supported>! "2" 713IIIT H R E E6", - XML.toString(jsonobject)); - - ja = JSONML.toJSONArray(string); - assertEquals("[\n \"xml\",\n {\n \"two\": \" \\\"2\\\" \",\n \"one\": 1\n },\n [\"five\"],\n \"First \\t\",\n [\"five\"],\n \"This is \\\"content\\\".\",\n [\n \"three\",\n 3\n ],\n \"JSON does not preserve the sequencing of elements and contents.\",\n [\n \"three\",\n \"III\"\n ],\n [\n \"three\",\n \"T H R E E\"\n ],\n [\"four\"],\n \"Content text is an implied structure in XML.\",\n [\n \"six\",\n {\"content\": 6}\n ],\n \"JSON does not have implied structure:\",\n [\n \"seven\",\n 7\n ],\n \"everything is explicit.\",\n \"CDATA blocks!\"\n]", - ja.toString(4)); - assertEquals("First \t<content>This is "content".JSON does not preserve the sequencing of elements and contents.IIIT H R E EContent text is an implied structure in XML.JSON does not have implied structure:everything is explicit.CDATA blocks<are><supported>!", - JSONML.toString(ja)); - - string = "unodostrestruequatrocinqoseis"; - ja = JSONML.toJSONArray(string); - assertEquals("[\n \"xml\",\n {\"do\": 0},\n \"uno\",\n [\n \"a\",\n {\n \"re\": 1,\n \"mi\": 2\n },\n \"dos\",\n [\n \"b\",\n {\"fa\": 3}\n ],\n \"tres\",\n [\n \"c\",\n true\n ],\n \"quatro\"\n ],\n \"cinqo\",\n [\n \"d\",\n \"seis\",\n [\"e\"]\n ]\n]", - ja.toString(4)); - assertEquals("unodostresquatrocinqoseis", - JSONML.toString(ja)); - - string = " "; - jsonobject = XML.toJSONObject(string); - - assertEquals("{\"mapping\": {\n \"empty\": \"\",\n \"class\": [\n {\n \"field\": [\n {\n \"bind-xml\": {\n \"node\": \"attribute\",\n \"name\": \"ID\"\n },\n \"name\": \"ID\",\n \"type\": \"string\"\n },\n {\n \"name\": \"FirstName\",\n \"type\": \"FirstName\"\n },\n {\n \"name\": \"MI\",\n \"type\": \"MI\"\n },\n {\n \"name\": \"LastName\",\n \"type\": \"LastName\"\n }\n ],\n \"name\": \"Customer\"\n },\n {\n \"field\": {\n \"bind-xml\": {\n \"node\": \"text\",\n \"name\": \"text\"\n },\n \"name\": \"text\"\n },\n \"name\": \"FirstName\"\n },\n {\n \"field\": {\n \"bind-xml\": {\n \"node\": \"text\",\n \"name\": \"text\"\n },\n \"name\": \"text\"\n },\n \"name\": \"MI\"\n },\n {\n \"field\": {\n \"bind-xml\": {\n \"node\": \"text\",\n \"name\": \"text\"\n },\n \"name\": \"text\"\n },\n \"name\": \"LastName\"\n }\n ]\n}}", - jsonobject.toString(2)); - assertEquals("attributeIDIDstringFirstNameFirstNameMIMILastNameLastNameCustomertexttexttextFirstNametexttexttextMItexttexttextLastName", - XML.toString(jsonobject)); - ja = JSONML.toJSONArray(string); - assertEquals("[\n \"mapping\",\n [\"empty\"],\n [\n \"class\",\n {\"name\": \"Customer\"},\n [\n \"field\",\n {\n \"name\": \"ID\",\n \"type\": \"string\"\n },\n [\n \"bind-xml\",\n {\n \"node\": \"attribute\",\n \"name\": \"ID\"\n }\n ]\n ],\n [\n \"field\",\n {\n \"name\": \"FirstName\",\n \"type\": \"FirstName\"\n }\n ],\n [\n \"field\",\n {\n \"name\": \"MI\",\n \"type\": \"MI\"\n }\n ],\n [\n \"field\",\n {\n \"name\": \"LastName\",\n \"type\": \"LastName\"\n }\n ]\n ],\n [\n \"class\",\n {\"name\": \"FirstName\"},\n [\n \"field\",\n {\"name\": \"text\"},\n [\n \"bind-xml\",\n {\n \"node\": \"text\",\n \"name\": \"text\"\n }\n ]\n ]\n ],\n [\n \"class\",\n {\"name\": \"MI\"},\n [\n \"field\",\n {\"name\": \"text\"},\n [\n \"bind-xml\",\n {\n \"node\": \"text\",\n \"name\": \"text\"\n }\n ]\n ]\n ],\n [\n \"class\",\n {\"name\": \"LastName\"},\n [\n \"field\",\n {\"name\": \"text\"},\n [\n \"bind-xml\",\n {\n \"node\": \"text\",\n \"name\": \"text\"\n }\n ]\n ]\n ]\n]", - ja.toString(4)); - assertEquals("", - JSONML.toString(ja)); - - jsonobject = XML.toJSONObject("Sample BookThis is chapter 1. It is not very long or interesting.This is chapter 2. Although it is longer than chapter 1, it is not any more interesting."); - assertEquals("{\"Book\": {\n \"Chapter\": [\n {\n \"content\": \"This is chapter 1. It is not very long or interesting.\",\n \"id\": 1\n },\n {\n \"content\": \"This is chapter 2. Although it is longer than chapter 1, it is not any more interesting.\",\n \"id\": 2\n }\n ],\n \"Author\": \"Anonymous\",\n \"Title\": \"Sample Book\"\n}}", - jsonobject.toString(2)); - assertEquals("This is chapter 1. It is not very long or interesting.1This is chapter 2. Although it is longer than chapter 1, it is not any more interesting.2AnonymousSample Book", - XML.toString(jsonobject)); - - jsonobject = XML.toJSONObject(""); - assertEquals("{\"bCard\": {\"bCard\": [\n {\n \"email\": \"khare@mci.net\",\n \"company\": \"MCI\",\n \"lastname\": \"Khare\",\n \"firstname\": \"Rohit\",\n \"homepage\": \"http://pest.w3.org/\"\n },\n {\n \"email\": \"adam@cs.caltech.edu\",\n \"company\": \"Caltech Infospheres Project\",\n \"lastname\": \"Rifkin\",\n \"firstname\": \"Adam\",\n \"homepage\": \"http://www.cs.caltech.edu/~adam/\"\n }\n]}}", - jsonobject.toString(2)); - assertEquals("khare@mci.netMCIKhareRohithttp://pest.w3.org/adam@cs.caltech.eduCaltech Infospheres ProjectRifkinAdamhttp://www.cs.caltech.edu/~adam/", - XML.toString(jsonobject)); - - jsonobject = XML.toJSONObject(" Fred fbs0001 Scerbo B "); - assertEquals("{\"customer\": {\n \"lastName\": {\"text\": \"Scerbo\"},\n \"MI\": {\"text\": \"B\"},\n \"ID\": \"fbs0001\",\n \"firstName\": {\"text\": \"Fred\"}\n}}", - jsonobject.toString(2)); - assertEquals("ScerboBfbs0001Fred", - XML.toString(jsonobject)); - - jsonobject = XML.toJSONObject("Repository Address Special Collections LibraryABC UniversityMain Library, 40 Circle DriveOurtown, Pennsylvania17654 USA"); - assertEquals("{\"list\":{\"item\":[\"Special Collections Library\",\"ABC University\",\"Main Library, 40 Circle Drive\",\"Ourtown, Pennsylvania\",\"17654 USA\"],\"head\":\"Repository Address\",\"type\":\"simple\"}}", - jsonobject.toString()); - assertEquals("Special Collections LibraryABC UniversityMain Library, 40 Circle DriveOurtown, Pennsylvania17654 USARepository Addresssimple", - XML.toString(jsonobject)); - - jsonobject = XML.toJSONObject("deluxe&"toot"&toot;Aeksbonusbonus2"); - assertEquals("{\"test\": {\n \"w\": [\n \"bonus\",\n \"bonus2\"\n ],\n \"content\": \"deluxe\",\n \"intertag\": \"\",\n \"status\": \"ok\",\n \"blip\": {\n \"content\": \"&\\\"toot\\\"&toot;A\",\n \"sweet\": true\n },\n \"empty\": \"\",\n \"zero\": 0,\n \"x\": \"eks\"\n}}", - jsonobject.toString(2)); - assertEquals("bonusbonus2deluxeok&"toot"&toot;&#x41;true0eks", - XML.toString(jsonobject)); - - jsonobject = HTTP.toJSONObject("GET / HTTP/1.0\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*\nAccept-Language: en-us\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; T312461; Q312461)\nHost: www.nokko.com\nConnection: keep-alive\nAccept-encoding: gzip, deflate\n"); - assertEquals("{\n \"Accept-Language\": \"en-us\",\n \"Request-URI\": \"/\",\n \"Host\": \"www.nokko.com\",\n \"Method\": \"GET\",\n \"Accept-encoding\": \"gzip, deflate\",\n \"User-Agent\": \"Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; T312461; Q312461)\",\n \"HTTP-Version\": \"HTTP/1.0\",\n \"Connection\": \"keep-alive\",\n \"Accept\": \"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*\"\n}", - jsonobject.toString(2)); - assertEquals("GET \"/\" HTTP/1.0\r\n" + - "Accept-Language: en-us\r\n" + - "Host: www.nokko.com\r\n" + - "Accept-encoding: gzip, deflate\r\n" + - "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; T312461; Q312461)\r\n" + - "Connection: keep-alive\r\n" + - "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*\r\n\r\n", - HTTP.toString(jsonobject)); - - jsonobject = HTTP.toJSONObject("HTTP/1.1 200 Oki Doki\nDate: Sun, 26 May 2002 17:38:52 GMT\nServer: Apache/1.3.23 (Unix) mod_perl/1.26\nKeep-Alive: timeout=15, max=100\nConnection: Keep-Alive\nTransfer-Encoding: chunked\nContent-Type: text/html\n"); - assertEquals("{\n \"Reason-Phrase\": \"Oki Doki\",\n \"Status-Code\": \"200\",\n \"Transfer-Encoding\": \"chunked\",\n \"Date\": \"Sun, 26 May 2002 17:38:52 GMT\",\n \"Keep-Alive\": \"timeout=15, max=100\",\n \"HTTP-Version\": \"HTTP/1.1\",\n \"Content-Type\": \"text/html\",\n \"Connection\": \"Keep-Alive\",\n \"Server\": \"Apache/1.3.23 (Unix) mod_perl/1.26\"\n}", - jsonobject.toString(2)); - assertEquals("HTTP/1.1 200 Oki Doki\r\n" + - "Transfer-Encoding: chunked\r\n" + - "Date: Sun, 26 May 2002 17:38:52 GMT\r\n" + - "Keep-Alive: timeout=15, max=100\r\n" + - "Content-Type: text/html\r\n" + - "Connection: Keep-Alive\r\n" + - "Server: Apache/1.3.23 (Unix) mod_perl/1.26\r\n\r\n", - HTTP.toString(jsonobject)); - - jsonobject = new JSONObject("{nix: null, nux: false, null: 'null', 'Request-URI': '/', Method: 'GET', 'HTTP-Version': 'HTTP/1.0'}"); - assertEquals("{\n \"Request-URI\": \"/\",\n \"nix\": null,\n \"nux\": false,\n \"Method\": \"GET\",\n \"HTTP-Version\": \"HTTP/1.0\",\n \"null\": \"null\"\n}", - jsonobject.toString(2)); - assertTrue(jsonobject.isNull("nix")); - assertTrue(jsonobject.has("nix")); - assertEquals("/nullfalseGETHTTP/1.0null", - XML.toString(jsonobject)); - - jsonobject = XML.toJSONObject("" + "\n\n" + "" + - "" + - "GOOGLEKEY '+search+' 0 10 true false latin1 latin1" + - "" + - ""); - - assertEquals("{\"SOAP-ENV:Envelope\": {\n \"SOAP-ENV:Body\": {\"ns1:doGoogleSearch\": {\n \"oe\": {\n \"content\": \"latin1\",\n \"xsi:type\": \"xsd:string\"\n },\n \"SOAP-ENV:encodingStyle\": \"http://schemas.xmlsoap.org/soap/encoding/\",\n \"lr\": {\"xsi:type\": \"xsd:string\"},\n \"start\": {\n \"content\": 0,\n \"xsi:type\": \"xsd:int\"\n },\n \"q\": {\n \"content\": \"'+search+'\",\n \"xsi:type\": \"xsd:string\"\n },\n \"ie\": {\n \"content\": \"latin1\",\n \"xsi:type\": \"xsd:string\"\n },\n \"safeSearch\": {\n \"content\": false,\n \"xsi:type\": \"xsd:boolean\"\n },\n \"xmlns:ns1\": \"urn:GoogleSearch\",\n \"restrict\": {\"xsi:type\": \"xsd:string\"},\n \"filter\": {\n \"content\": true,\n \"xsi:type\": \"xsd:boolean\"\n },\n \"maxResults\": {\n \"content\": 10,\n \"xsi:type\": \"xsd:int\"\n },\n \"key\": {\n \"content\": \"GOOGLEKEY\",\n \"xsi:type\": \"xsd:string\"\n }\n }},\n \"xmlns:xsd\": \"http://www.w3.org/1999/XMLSchema\",\n \"xmlns:xsi\": \"http://www.w3.org/1999/XMLSchema-instance\",\n \"xmlns:SOAP-ENV\": \"http://schemas.xmlsoap.org/soap/envelope/\"\n}}", - jsonobject.toString(2)); - - assertEquals("latin1xsd:stringhttp://schemas.xmlsoap.org/soap/encoding/xsd:string0xsd:int'+search+'xsd:stringlatin1xsd:stringfalsexsd:booleanurn:GoogleSearchxsd:stringtruexsd:boolean10xsd:intGOOGLEKEYxsd:stringhttp://www.w3.org/1999/XMLSchemahttp://www.w3.org/1999/XMLSchema-instancehttp://schemas.xmlsoap.org/soap/envelope/", - XML.toString(jsonobject)); - - jsonobject = new JSONObject("{Envelope: {Body: {\"ns1:doGoogleSearch\": {oe: \"latin1\", filter: true, q: \"'+search+'\", key: \"GOOGLEKEY\", maxResults: 10, \"SOAP-ENV:encodingStyle\": \"http://schemas.xmlsoap.org/soap/encoding/\", start: 0, ie: \"latin1\", safeSearch:false, \"xmlns:ns1\": \"urn:GoogleSearch\"}}}}"); - assertEquals("{\"Envelope\": {\"Body\": {\"ns1:doGoogleSearch\": {\n \"oe\": \"latin1\",\n \"SOAP-ENV:encodingStyle\": \"http://schemas.xmlsoap.org/soap/encoding/\",\n \"start\": 0,\n \"q\": \"'+search+'\",\n \"ie\": \"latin1\",\n \"safeSearch\": false,\n \"xmlns:ns1\": \"urn:GoogleSearch\",\n \"maxResults\": 10,\n \"key\": \"GOOGLEKEY\",\n \"filter\": true\n}}}}", - jsonobject.toString(2)); - assertEquals("latin1http://schemas.xmlsoap.org/soap/encoding/0'+search+'latin1falseurn:GoogleSearch10GOOGLEKEYtrue", - XML.toString(jsonobject)); - - jsonobject = CookieList.toJSONObject(" f%oo = b+l=ah ; o;n%40e = t.wo "); - assertEquals("{\n \"o;n@e\": \"t.wo\",\n \"f%oo\": \"b l=ah\"\n}", - jsonobject.toString(2)); - assertEquals("o%3bn@e=t.wo;f%25oo=b l%3dah", - CookieList.toString(jsonobject)); - - jsonobject = Cookie.toJSONObject("f%oo=blah; secure ;expires = April 24, 2002"); - assertEquals("{\n" + - " \"expires\": \"April 24, 2002\",\n" + - " \"name\": \"f%oo\",\n" + - " \"secure\": true,\n" + - " \"value\": \"blah\"\n" + - "}", jsonobject.toString(2)); - assertEquals("f%25oo=blah;expires=April 24, 2002;secure", - Cookie.toString(jsonobject)); - - jsonobject = new JSONObject("{script: 'It is not allowed in HTML to send a close script tag in a stringso we insert a backslash before the /'}"); - assertEquals("{\"script\":\"It is not allowed in HTML to send a close script tag in a string + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.json.*
+ +

+ + + + + + + + + + + + +
org.json.HTTP
+public static final java.lang.StringCRLF"\r\n"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/deprecated-list.html b/distribution/json4p-0.1.1/reference/deprecated-list.html new file mode 100644 index 000000000..dd51bca8d --- /dev/null +++ b/distribution/json4p-0.1.1/reference/deprecated-list.html @@ -0,0 +1,142 @@ + + + + + + +Deprecated List (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/help-doc.html b/distribution/json4p-0.1.1/reference/help-doc.html new file mode 100644 index 000000000..c8a549614 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/help-doc.html @@ -0,0 +1,209 @@ + + + + + + +API Help (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/index-all.html b/distribution/json4p-0.1.1/reference/index-all.html new file mode 100644 index 000000000..eb6ef656d --- /dev/null +++ b/distribution/json4p-0.1.1/reference/index-all.html @@ -0,0 +1,893 @@ + + + + + + +Index (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A B C D E G H I J K L M N O P Q R S T U V W X
+

+A

+
+
accumulate(String, Object) - +Method in class org.json.JSONObject +
Accumulate values under a key. +
AMP - +Static variable in class org.json.XML +
The Character '&'. +
APOS - +Static variable in class org.json.XML +
The Character '''. +
append(String, Object) - +Method in class org.json.JSONObject +
Append values to the array under a key. +
array() - +Method in class org.json.JSONWriter +
Begin appending a new array. +
+
+

+B

+
+
back() - +Method in class org.json.JSONTokener +
Back up one character. +
BANG - +Static variable in class org.json.XML +
The Character '!'. +
+
+

+C

+
+
CDL - Class in org.json
This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CDL() - +Constructor for class org.json.CDL +
  +
Cookie - Class in org.json
Convert a web browser cookie specification to a JSONObject and back.
Cookie() - +Constructor for class org.json.Cookie +
  +
CookieList - Class in org.json
Convert a web browser cookie list string to a JSONObject and back.
CookieList() - +Constructor for class org.json.CookieList +
  +
CRLF - +Static variable in class org.json.HTTP +
Carriage return/line feed. +
+
+

+D

+
+
dehexchar(char) - +Static method in class org.json.JSONTokener +
Get the hex value of a character (base16). +
doubleToString(double) - +Static method in class org.json.JSONObject +
Produce a string from a double. +
+
+

+E

+
+
end() - +Method in class org.json.JSONTokener +
  +
endArray() - +Method in class org.json.JSONWriter +
End an array. +
endObject() - +Method in class org.json.JSONWriter +
End an object. +
entity - +Static variable in class org.json.XMLTokener +
The table of entity values. +
EQ - +Static variable in class org.json.XML +
The Character '='. +
escape(String) - +Static method in class org.json.Cookie +
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". +
escape(String) - +Static method in class org.json.XML +
Replace special characters with XML escapes: +
+
+

+G

+
+
get(int) - +Method in class org.json.JSONArray +
Get the object value associated with an index. +
get(String) - +Method in class org.json.JSONObject +
Get the value object associated with a key. +
getBoolean(int) - +Method in class org.json.JSONArray +
Get the boolean value associated with an index. +
getBoolean(String) - +Method in class org.json.JSONObject +
Get the boolean value associated with a key. +
getCause() - +Method in exception org.json.JSONException +
  +
getDouble(int) - +Method in class org.json.JSONArray +
Get the double value associated with an index. +
getDouble(String) - +Method in class org.json.JSONObject +
Get the double value associated with a key. +
getInt(int) - +Method in class org.json.JSONArray +
Get the int value associated with an index. +
getInt(String) - +Method in class org.json.JSONObject +
Get the int value associated with a key. +
getJSONArray(int) - +Method in class org.json.JSONArray +
Get the JSONArray associated with an index. +
getJSONArray(String) - +Method in class org.json.JSONObject +
Get the JSONArray value associated with a key. +
getJSONObject(int) - +Method in class org.json.JSONArray +
Get the JSONObject associated with an index. +
getJSONObject(String) - +Method in class org.json.JSONObject +
Get the JSONObject value associated with a key. +
getLong(int) - +Method in class org.json.JSONArray +
Get the long value associated with an index. +
getLong(String) - +Method in class org.json.JSONObject +
Get the long value associated with a key. +
getNames(JSONObject) - +Static method in class org.json.JSONObject +
Get an array of field names from a JSONObject. +
getNames(Object) - +Static method in class org.json.JSONObject +
Get an array of field names from an Object. +
getString(int) - +Method in class org.json.JSONArray +
Get the string associated with an index. +
getString(String) - +Method in class org.json.JSONObject +
Get the string associated with a key. +
GT - +Static variable in class org.json.XML +
The Character '>'. +
+
+

+H

+
+
has(String) - +Method in class org.json.JSONObject +
Determine if the JSONObject contains a specific key. +
HTTP - Class in org.json
Convert an HTTP header to a JSONObject and back.
HTTP() - +Constructor for class org.json.HTTP +
  +
HTTPTokener - Class in org.json
The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
HTTPTokener(String) - +Constructor for class org.json.HTTPTokener +
Construct an HTTPTokener from a string. +
+
+

+I

+
+
increment(String) - +Method in class org.json.JSONObject +
Increment a property of a JSONObject. +
isNull(int) - +Method in class org.json.JSONArray +
Determine if the value is null. +
isNull(String) - +Method in class org.json.JSONObject +
Determine if the value associated with the key is null or if there is + no value. +
+
+

+J

+
+
join(String) - +Method in class org.json.JSONArray +
Make a string from the contents of this JSONArray. +
JSONArray - Class in org.json
A JSONArray is an ordered sequence of values.
JSONArray() - +Constructor for class org.json.JSONArray +
Construct an empty JSONArray. +
JSONArray(JSONTokener) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a JSONTokener. +
JSONArray(String) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a source JSON text. +
JSONArray(Collection) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a Collection. +
JSONArray(Object) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from an array +
JSONException - Exception in org.json
The JSONException is thrown by the JSON.org classes when things are amiss.
JSONException(String) - +Constructor for exception org.json.JSONException +
Constructs a JSONException with an explanatory message. +
JSONException(Throwable) - +Constructor for exception org.json.JSONException +
  +
JSONML - Class in org.json
This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONML() - +Constructor for class org.json.JSONML +
  +
JSONObject - Class in org.json
A JSONObject is an unordered collection of name/value pairs.
JSONObject() - +Constructor for class org.json.JSONObject +
Construct an empty JSONObject. +
JSONObject(JSONObject, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a subset of another JSONObject. +
JSONObject(JSONTokener) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a JSONTokener. +
JSONObject(Map) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a Map. +
JSONObject(Object) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object using bean getters. +
JSONObject(Object, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object, using reflection to find the + public members. +
JSONObject(String) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a source JSON text string. +
JSONObject(String, Locale) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a ResourceBundle. +
JSONString - Interface in org.json
The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
JSONStringer - Class in org.json
JSONStringer provides a quick and convenient way of producing JSON text.
JSONStringer() - +Constructor for class org.json.JSONStringer +
Make a fresh JSONStringer. +
JSONTokener - Class in org.json
A JSONTokener takes a source string and extracts characters and tokens from + it.
JSONTokener(Reader) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a Reader. +
JSONTokener(InputStream) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from an InputStream. +
JSONTokener(String) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a string. +
JSONWriter - Class in org.json
JSONWriter provides a quick and convenient way of producing JSON text.
JSONWriter(Writer) - +Constructor for class org.json.JSONWriter +
Make a fresh JSONWriter. +
+
+

+K

+
+
key(String) - +Method in class org.json.JSONWriter +
Append a key. +
keys() - +Method in class org.json.JSONObject +
Get an enumeration of the keys of the JSONObject. +
+
+

+L

+
+
length() - +Method in class org.json.JSONArray +
Get the number of elements in the JSONArray, included nulls. +
length() - +Method in class org.json.JSONObject +
Get the number of keys stored in the JSONObject. +
LT - +Static variable in class org.json.XML +
The Character '<'. +
+
+

+M

+
+
more() - +Method in class org.json.JSONTokener +
Determine if the source string still contains characters that next() + can consume. +
+
+

+N

+
+
names() - +Method in class org.json.JSONObject +
Produce a JSONArray containing the names of the elements of this + JSONObject. +
next() - +Method in class org.json.JSONTokener +
Get the next character in the source string. +
next(char) - +Method in class org.json.JSONTokener +
Consume the next character, and check that it matches a specified + character. +
next(int) - +Method in class org.json.JSONTokener +
Get the next n characters. +
nextCDATA() - +Method in class org.json.XMLTokener +
Get the text in the CDATA block. +
nextClean() - +Method in class org.json.JSONTokener +
Get the next char in the string, skipping whitespace. +
nextContent() - +Method in class org.json.XMLTokener +
Get the next XML outer token, trimming whitespace. +
nextEntity(char) - +Method in class org.json.XMLTokener +
Return the next entity. +
nextMeta() - +Method in class org.json.XMLTokener +
Returns the next XML meta token. +
nextString(char) - +Method in class org.json.JSONTokener +
Return the characters up to the next close quote character. +
nextTo(char) - +Method in class org.json.JSONTokener +
Get the text up but not including the specified character or the + end of line, whichever comes first. +
nextTo(String) - +Method in class org.json.JSONTokener +
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +
nextToken() - +Method in class org.json.HTTPTokener +
Get the next token or string. +
nextToken() - +Method in class org.json.XMLTokener +
Get the next XML Token. +
nextValue() - +Method in class org.json.JSONTokener +
Get the next value. +
noSpace(String) - +Static method in class org.json.XML +
Throw an exception if the string contains whitespace. +
NULL - +Static variable in class org.json.JSONObject +
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. +
numberToString(Number) - +Static method in class org.json.JSONObject +
Produce a string from a Number. +
+
+

+O

+
+
object() - +Method in class org.json.JSONWriter +
Begin appending a new object. +
opt(int) - +Method in class org.json.JSONArray +
Get the optional object value associated with an index. +
opt(String) - +Method in class org.json.JSONObject +
Get an optional value associated with a key. +
optBoolean(int) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(int, boolean) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(String) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optBoolean(String, boolean) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optDouble(int) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(int, double) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(String) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, + or NaN if there is no such key or if its value is not a number. +
optDouble(String, double) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, or the + defaultValue if there is no such key or if its value is not a number. +
optInt(int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(int, int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(String) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, + or zero if there is no such key or if the value is not a number. +
optInt(String, int) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, + or the default if there is no such key or if the value is not a number. +
optJSONArray(int) - +Method in class org.json.JSONArray +
Get the optional JSONArray associated with an index. +
optJSONArray(String) - +Method in class org.json.JSONObject +
Get an optional JSONArray associated with a key. +
optJSONObject(int) - +Method in class org.json.JSONArray +
Get the optional JSONObject associated with an index. +
optJSONObject(String) - +Method in class org.json.JSONObject +
Get an optional JSONObject associated with a key. +
optLong(int) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(int, long) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(String) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, + or zero if there is no such key or if the value is not a number. +
optLong(String, long) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, + or the default if there is no such key or if the value is not a number. +
optString(int) - +Method in class org.json.JSONArray +
Get the optional string value associated with an index. +
optString(int, String) - +Method in class org.json.JSONArray +
Get the optional string associated with an index. +
optString(String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
optString(String, String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
org.json - package org.json
 
+
+

+P

+
+
put(boolean) - +Method in class org.json.JSONArray +
Append a boolean value. +
put(Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(double) - +Method in class org.json.JSONArray +
Append a double value. +
put(int) - +Method in class org.json.JSONArray +
Append an int value. +
put(long) - +Method in class org.json.JSONArray +
Append an long value. +
put(Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +
put(Object) - +Method in class org.json.JSONArray +
Append an object value. +
put(int, boolean) - +Method in class org.json.JSONArray +
Put or replace a boolean value in the JSONArray. +
put(int, Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(int, double) - +Method in class org.json.JSONArray +
Put or replace a double value. +
put(int, int) - +Method in class org.json.JSONArray +
Put or replace an int value. +
put(int, long) - +Method in class org.json.JSONArray +
Put or replace a long value. +
put(int, Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +
put(int, Object) - +Method in class org.json.JSONArray +
Put or replace an object value in the JSONArray. +
put(String, boolean) - +Method in class org.json.JSONObject +
Put a key/boolean pair in the JSONObject. +
put(String, Collection) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +
put(String, double) - +Method in class org.json.JSONObject +
Put a key/double pair in the JSONObject. +
put(String, int) - +Method in class org.json.JSONObject +
Put a key/int pair in the JSONObject. +
put(String, long) - +Method in class org.json.JSONObject +
Put a key/long pair in the JSONObject. +
put(String, Map) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +
put(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject. +
putOnce(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the key and the + value are both non-null, and only if there is not already a member + with that name. +
putOpt(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the + key and the value are both non-null. +
+
+

+Q

+
+
QUEST - +Static variable in class org.json.XML +
The Character '?'. +
QUOT - +Static variable in class org.json.XML +
The Character '"'. +
quote(String) - +Static method in class org.json.JSONObject +
Produce a string in double quotes with backslash sequences in all the + right places. +
+
+

+R

+
+
remove(int) - +Method in class org.json.JSONArray +
Remove an index and close the hole. +
remove(String) - +Method in class org.json.JSONObject +
Remove a name and its value, if present. +
rowToJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of strings from a row of comma delimited values. +
rowToJSONObject(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +
rowToString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text row from a JSONArray. +
+
+

+S

+
+
skipPast(String) - +Method in class org.json.XMLTokener +
Skip characters until past the requested string. +
skipTo(char) - +Method in class org.json.JSONTokener +
Skip characters until the next character is the requested character. +
SLASH - +Static variable in class org.json.XML +
The Character '/'. +
stringToValue(String) - +Static method in class org.json.JSONObject +
Try to convert a string into a number, boolean, or null. +
stringToValue(String) - +Static method in class org.json.XML +
Try to convert a string into a number, boolean, or null. +
syntaxError(String) - +Method in class org.json.JSONTokener +
Make a JSONException to signal a syntax error. +
+
+

+T

+
+
testValidity(Object) - +Static method in class org.json.JSONObject +
Throw an exception if the object is a NaN or infinite number. +
toJSONArray(String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONArray, String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(JSONArray) - +Method in class org.json.JSONObject +
Produce a JSONArray containing the values of the members of this + JSONObject. +
toJSONObject(String) - +Static method in class org.json.Cookie +
Convert a cookie specification string into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.CookieList +
Convert a cookie list into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.HTTP +
Convert an HTTP header string into a JSONObject. +
toJSONObject(JSONArray) - +Method in class org.json.JSONArray +
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +
toJSONObject(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.XML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. +
toJSONString() - +Method in interface org.json.JSONString +
The toJSONString method allows a class to produce its own JSON + serialization. +
toString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects. +
toString(JSONArray, JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. +
toString(JSONObject) - +Static method in class org.json.Cookie +
Convert a JSONObject into a cookie specification string. +
toString(JSONObject) - +Static method in class org.json.CookieList +
Convert a JSONObject into a cookie list. +
toString(JSONObject) - +Static method in class org.json.HTTP +
Convert a JSONObject into an HTTP header. +
toString() - +Method in class org.json.JSONArray +
Make a JSON text of this JSONArray. +
toString(int) - +Method in class org.json.JSONArray +
Make a prettyprinted JSON text of this JSONArray. +
toString(JSONArray) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONArray. +
toString(JSONObject) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONObject. +
toString() - +Method in class org.json.JSONObject +
Make a JSON text of this JSONObject. +
toString(int) - +Method in class org.json.JSONObject +
Make a prettyprinted JSON text of this JSONObject. +
toString() - +Method in class org.json.JSONStringer +
Return the JSON text. +
toString() - +Method in class org.json.JSONTokener +
Make a printable string of this JSONTokener. +
toString(Object) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
toString(Object, String) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
+
+

+U

+
+
unescape(String) - +Static method in class org.json.Cookie +
Convert %hh sequences to single characters, and + convert plus to space. +
+
+

+V

+
+
value(boolean) - +Method in class org.json.JSONWriter +
Append either the value true or the value + false. +
value(double) - +Method in class org.json.JSONWriter +
Append a double value. +
value(long) - +Method in class org.json.JSONWriter +
Append a long value. +
value(Object) - +Method in class org.json.JSONWriter +
Append an object value. +
valueToString(Object) - +Static method in class org.json.JSONObject +
Make a JSON text of an Object value. +
+
+

+W

+
+
wrap(Object) - +Static method in class org.json.JSONObject +
Wrap an object, if necessary. +
write(Writer) - +Method in class org.json.JSONArray +
Write the contents of the JSONArray as JSON text to a writer. +
write(Writer) - +Method in class org.json.JSONObject +
Write the contents of the JSONObject as JSON text to a writer. +
+
+

+X

+
+
XML - Class in org.json
This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XML() - +Constructor for class org.json.XML +
  +
XMLTokener - Class in org.json
The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
XMLTokener(String) - +Constructor for class org.json.XMLTokener +
Construct an XMLTokener from a string. +
+
+A B C D E G H I J K L M N O P Q R S T U V W X + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/index.html b/distribution/json4p-0.1.1/reference/index.html new file mode 100644 index 000000000..708ff1916 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/index.html @@ -0,0 +1,36 @@ + + + + + + +Javadocs: json4p + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="org/json/package-summary.html">Non-frame version.</A> + + + diff --git a/distribution/json4p-0.1.1/reference/org/json/CDL.html b/distribution/json4p-0.1.1/reference/org/json/CDL.html new file mode 100644 index 000000000..53572505d --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/CDL.html @@ -0,0 +1,500 @@ + + + + + + +CDL (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CDL

+
+java.lang.Object
+  extended by org.json.CDL
+
+
+
+
public class CDL
extends java.lang.Object
+ + +

+This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text. Comma + delimited text is a very popular format for data interchange. It is + understood by most database, spreadsheet, and organizer programs. +

+ Each row of text represents a row in a table or a data record. Each row + ends with a NEWLINE character. Each row contains one or more values. + Values are separated by commas. A value can contain any character except + for comma, unless is is wrapped in single quotes or double quotes. +

+ The first row usually contains the names of the columns. +

+ A comma delimited list can be converted into a JSONArray of JSONObjects. + The names for the elements in the JSONObjects can be taken from the names + in the first row. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CDL() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArrayrowToJSONArray(JSONTokener x) + +
+          Produce a JSONArray of strings from a row of comma delimited values.
+static JSONObjectrowToJSONObject(JSONArray names, + JSONTokener x) + +
+          Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
+static java.lang.StringrowToString(JSONArray ja) + +
+          Produce a comma delimited text row from a JSONArray.
+static JSONArraytoJSONArray(JSONArray names, + JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONArray names, + java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static java.lang.StringtoString(JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects.
+static java.lang.StringtoString(JSONArray names, + JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CDL

+
+public CDL()
+
+
+ + + + + + + + +
+Method Detail
+ +

+rowToJSONArray

+
+public static JSONArray rowToJSONArray(JSONTokener x)
+                                throws JSONException
+
+
Produce a JSONArray of strings from a row of comma delimited values. +

+

+
Parameters:
x - A JSONTokener of the source text. +
Returns:
A JSONArray of strings. +
Throws: +
JSONException
+
+
+
+ +

+rowToJSONObject

+
+public static JSONObject rowToJSONObject(JSONArray names,
+                                         JSONTokener x)
+                                  throws JSONException
+
+
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +

+

+
Parameters:
names - A JSONArray of names. This is commonly obtained from the + first row of a comma delimited text file using the rowToJSONArray + method.
x - A JSONTokener of the source text. +
Returns:
A JSONObject combining the names and values. +
Throws: +
JSONException
+
+
+
+ +

+rowToString

+
+public static java.lang.String rowToString(JSONArray ja)
+
+
Produce a comma delimited text row from a JSONArray. Values containing + the comma character will be quoted. Troublesome characters may be + removed. +

+

+
Parameters:
ja - A JSONArray of strings. +
Returns:
A string ending in NEWLINE.
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
x - The JSONTokener containing the comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
x - A JSONTokener of the source text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects. The + first row will be a list of names obtained by inspecting the first + JSONObject. +

+

+
Parameters:
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray names,
+                                        JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. The list of names is not included in the + output. +

+

+
Parameters:
names - A JSONArray of strings.
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/Cookie.html b/distribution/json4p-0.1.1/reference/org/json/Cookie.html new file mode 100644 index 000000000..3c7363f67 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/Cookie.html @@ -0,0 +1,357 @@ + + + + + + +Cookie (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class Cookie

+
+java.lang.Object
+  extended by org.json.Cookie
+
+
+
+
public class Cookie
extends java.lang.Object
+ + +

+Convert a web browser cookie specification to a JSONObject and back. + JSON and Cookies are both notations for name/value pairs. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
Cookie() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie specification string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie specification string.
+static java.lang.Stringunescape(java.lang.String string) + +
+          Convert %hh sequences to single characters, and + convert plus to space.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Cookie

+
+public Cookie()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". This is a gentle form + of URL encoding, attempting to cause as little distortion to the + string as possible. The characters '=' and ';' are meta characters in + cookies. By convention, they are escaped using the URL-encoding. This is + only a convention, not a standard. Often, cookies are expected to have + encoded values. We encode '=' and ';' because we must. We encode '%' and + '+' because they are meta characters in URL encoding. +

+

+
Parameters:
string - The source string. +
Returns:
The escaped result.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie specification string into a JSONObject. The string + will contain a name value pair separated by '='. The name and the value + will be unescaped, possibly converting '+' and '%' sequences. The + cookie properties may follow, separated by ';', also represented as + name=value (except the secure property, which does not have a value). + The name will be stored under the key "name", and the value will be + stored under the key "value". This method does not do checking or + validation of the parameters. It only converts the cookie string into + a JSONObject. +

+

+
Parameters:
string - The cookie specification string. +
Returns:
A JSONObject containing "name", "value", and possibly other + members. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie specification string. The JSONObject + must contain "name" and "value" members. + If the JSONObject contains "expires", "domain", "path", or "secure" + members, they will be appended to the cookie specification string. + All other members are ignored. +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie specification string +
Throws: +
JSONException
+
+
+
+ +

+unescape

+
+public static java.lang.String unescape(java.lang.String string)
+
+
Convert %hh sequences to single characters, and + convert plus to space. +

+

+
Parameters:
string - A string that may contain + + (plus) and + %hh sequences. +
Returns:
The unescaped string.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/CookieList.html b/distribution/json4p-0.1.1/reference/org/json/CookieList.html new file mode 100644 index 000000000..2f0b3a4d1 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/CookieList.html @@ -0,0 +1,297 @@ + + + + + + +CookieList (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CookieList

+
+java.lang.Object
+  extended by org.json.CookieList
+
+
+
+
public class CookieList
extends java.lang.Object
+ + +

+Convert a web browser cookie list string to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CookieList() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie list into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie list.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CookieList

+
+public CookieList()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie list into a JSONObject. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The names and the values + will be unescaped, possibly converting '+' and '%' sequences. + + To add a cookie to a cooklist, + cookielistJSONObject.put(cookieJSONObject.getString("name"), + cookieJSONObject.getString("value")); +

+

+
Parameters:
string - A cookie list string +
Returns:
A JSONObject +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie list. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The characters '%', '+', '=', and ';' + in the names and values are replaced by "%hh". +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie list string +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/HTTP.html b/distribution/json4p-0.1.1/reference/org/json/HTTP.html new file mode 100644 index 000000000..15038e189 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/HTTP.html @@ -0,0 +1,365 @@ + + + + + + +HTTP (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTP

+
+java.lang.Object
+  extended by org.json.HTTP
+
+
+
+
public class HTTP
extends java.lang.Object
+ + +

+Convert an HTTP header to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.StringCRLF + +
+          Carriage return/line feed.
+  + + + + + + + + + + +
+Constructor Summary
HTTP() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert an HTTP header string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into an HTTP header.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+CRLF

+
+public static final java.lang.String CRLF
+
+
Carriage return/line feed. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+HTTP

+
+public HTTP()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert an HTTP header string into a JSONObject. It can be a request + header or a response header. A request header will contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header will contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ In addition, the other parameters in the header will be captured, using + the HTTP field names as JSON names, so that
+    Date: Sun, 26 May 2002 18:06:04 GMT
+    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
+    Cache-Control: no-cache
+ become +
{...
+    Date: "Sun, 26 May 2002 18:06:04 GMT",
+    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
+    "Cache-Control": "no-cache",
+ ...}
+ It does no further checking or conversion. It does not parse dates. + It does not do '%' transforms on URLs. +

+

+
Parameters:
string - An HTTP header string. +
Returns:
A JSONObject containing the elements and attributes + of the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into an HTTP header. A request header must contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header must contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ Any other members of the JSONObject will be output as HTTP fields. + The result will end with two CRLF pairs. +

+

+
Parameters:
jo - A JSONObject +
Returns:
An HTTP header string. +
Throws: +
JSONException - if the object does not contain enough + information.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html b/distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html new file mode 100644 index 000000000..ce1e12662 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html @@ -0,0 +1,277 @@ + + + + + + +HTTPTokener (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTPTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.HTTPTokener
+
+
+
+
public class HTTPTokener
extends JSONTokener
+ + +

+The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HTTPTokener(java.lang.String string) + +
+          Construct an HTTPTokener from a string.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextToken() + +
+          Get the next token or string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HTTPTokener

+
+public HTTPTokener(java.lang.String string)
+
+
Construct an HTTPTokener from a string. +

+

+
Parameters:
string - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextToken

+
+public java.lang.String nextToken()
+                           throws JSONException
+
+
Get the next token or string. This is used in parsing HTTP headers. +

+

+ +
Returns:
A String. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONArray.html b/distribution/json4p-0.1.1/reference/org/json/JSONArray.html new file mode 100644 index 000000000..f7834ac5c --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONArray.html @@ -0,0 +1,1473 @@ + + + + + + +JSONArray (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONArray

+
+java.lang.Object
+  extended by org.json.JSONArray
+
+
+
+
public class JSONArray
extends java.lang.Object
+ + +

+A JSONArray is an ordered sequence of values. Its external text form is a + string wrapped in square brackets with commas separating the values. The + internal form is an object having get and opt + methods for accessing the values by index, and put methods for + adding or replacing values. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the + JSONObject.NULL object. +

+ The constructor can convert a JSON text into a Java object. The + toString method converts to JSON text. +

+ A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

+ The generic get() and opt() methods return an + object which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. +

+ The texts produced by the toString methods strictly conform to + JSON syntax rules. The constructors are more forgiving in the texts they will + accept: +

    +
  • An extra , (comma) may appear just + before the closing bracket.
  • +
  • The null value will be inserted when there + is , (comma) elision.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
  • +
  • Values can be separated by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the + 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONArray() + +
+          Construct an empty JSONArray.
JSONArray(java.util.Collection collection) + +
+          Construct a JSONArray from a Collection.
JSONArray(JSONTokener x) + +
+          Construct a JSONArray from a JSONTokener.
JSONArray(java.lang.Object array) + +
+          Construct a JSONArray from an array
JSONArray(java.lang.String source) + +
+          Construct a JSONArray from a source JSON text.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.Objectget(int index) + +
+          Get the object value associated with an index.
+ booleangetBoolean(int index) + +
+          Get the boolean value associated with an index.
+ doublegetDouble(int index) + +
+          Get the double value associated with an index.
+ intgetInt(int index) + +
+          Get the int value associated with an index.
+ JSONArraygetJSONArray(int index) + +
+          Get the JSONArray associated with an index.
+ JSONObjectgetJSONObject(int index) + +
+          Get the JSONObject associated with an index.
+ longgetLong(int index) + +
+          Get the long value associated with an index.
+ java.lang.StringgetString(int index) + +
+          Get the string associated with an index.
+ booleanisNull(int index) + +
+          Determine if the value is null.
+ java.lang.Stringjoin(java.lang.String separator) + +
+          Make a string from the contents of this JSONArray.
+ intlength() + +
+          Get the number of elements in the JSONArray, included nulls.
+ java.lang.Objectopt(int index) + +
+          Get the optional object value associated with an index.
+ booleanoptBoolean(int index) + +
+          Get the optional boolean value associated with an index.
+ booleanoptBoolean(int index, + boolean defaultValue) + +
+          Get the optional boolean value associated with an index.
+ doubleoptDouble(int index) + +
+          Get the optional double value associated with an index.
+ doubleoptDouble(int index, + double defaultValue) + +
+          Get the optional double value associated with an index.
+ intoptInt(int index) + +
+          Get the optional int value associated with an index.
+ intoptInt(int index, + int defaultValue) + +
+          Get the optional int value associated with an index.
+ JSONArrayoptJSONArray(int index) + +
+          Get the optional JSONArray associated with an index.
+ JSONObjectoptJSONObject(int index) + +
+          Get the optional JSONObject associated with an index.
+ longoptLong(int index) + +
+          Get the optional long value associated with an index.
+ longoptLong(int index, + long defaultValue) + +
+          Get the optional long value associated with an index.
+ java.lang.StringoptString(int index) + +
+          Get the optional string value associated with an index.
+ java.lang.StringoptString(int index, + java.lang.String defaultValue) + +
+          Get the optional string associated with an index.
+ JSONArrayput(boolean value) + +
+          Append a boolean value.
+ JSONArrayput(java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(double value) + +
+          Append a double value.
+ JSONArrayput(int value) + +
+          Append an int value.
+ JSONArrayput(int index, + boolean value) + +
+          Put or replace a boolean value in the JSONArray.
+ JSONArrayput(int index, + java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(int index, + double value) + +
+          Put or replace a double value.
+ JSONArrayput(int index, + int value) + +
+          Put or replace an int value.
+ JSONArrayput(int index, + long value) + +
+          Put or replace a long value.
+ JSONArrayput(int index, + java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
+ JSONArrayput(int index, + java.lang.Object value) + +
+          Put or replace an object value in the JSONArray.
+ JSONArrayput(long value) + +
+          Append an long value.
+ JSONArrayput(java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
+ JSONArrayput(java.lang.Object value) + +
+          Append an object value.
+ java.lang.Objectremove(int index) + +
+          Remove an index and close the hole.
+ JSONObjecttoJSONObject(JSONArray names) + +
+          Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONArray.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONArray.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONArray as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONArray

+
+public JSONArray()
+
+
Construct an empty JSONArray. +

+

+
+ +

+JSONArray

+
+public JSONArray(JSONTokener x)
+          throws JSONException
+
+
Construct a JSONArray from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.String source)
+          throws JSONException
+
+
Construct a JSONArray from a source JSON text. +

+

+
Parameters:
source - A string that begins with + [ (left bracket) + and ends with ] (right bracket). +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.util.Collection collection)
+
+
Construct a JSONArray from a Collection. +

+

+
Parameters:
collection - A Collection.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.Object array)
+          throws JSONException
+
+
Construct a JSONArray from an array +

+

+ +
Throws: +
JSONException - If not an array.
+
+ + + + + + + + +
+Method Detail
+ +

+get

+
+public java.lang.Object get(int index)
+                     throws JSONException
+
+
Get the object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value. +
Throws: +
JSONException - If there is no value for the index.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(int index)
+                   throws JSONException
+
+
Get the boolean value associated with an index. + The string values "true" and "false" are converted to boolean. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth. +
Throws: +
JSONException - If there is no value for the index or if the + value is not convertible to boolean.
+
+
+
+ +

+getDouble

+
+public double getDouble(int index)
+                 throws JSONException
+
+
Get the double value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(int index)
+           throws JSONException
+
+
Get the int value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value is not a number.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(int index)
+                       throws JSONException
+
+
Get the JSONArray associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONArray value. +
Throws: +
JSONException - If there is no value for the index. or if the + value is not a JSONArray
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(int index)
+                         throws JSONException
+
+
Get the JSONObject associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONObject value. +
Throws: +
JSONException - If there is no value for the index or if the + value is not a JSONObject
+
+
+
+ +

+getLong

+
+public long getLong(int index)
+             throws JSONException
+
+
Get the long value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getString

+
+public java.lang.String getString(int index)
+                           throws JSONException
+
+
Get the string associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A string value. +
Throws: +
JSONException - If there is no string value for the index.
+
+
+
+ +

+isNull

+
+public boolean isNull(int index)
+
+
Determine if the value is null. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
true if the value at the index is null, or if there is no value.
+
+
+
+ +

+join

+
+public java.lang.String join(java.lang.String separator)
+                      throws JSONException
+
+
Make a string from the contents of this JSONArray. The + separator string is inserted between each element. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
separator - A string that will be inserted between the elements. +
Returns:
a string. +
Throws: +
JSONException - If the array contains an invalid number.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of elements in the JSONArray, included nulls. +

+

+ +
Returns:
The length (or size).
+
+
+
+ +

+opt

+
+public java.lang.Object opt(int index)
+
+
Get the optional object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value, or null if there is no + object at that index.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index)
+
+
Get the optional boolean value associated with an index. + It returns false if there is no value at that index, + or if the value is not Boolean.TRUE or the String "true". +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index,
+                          boolean defaultValue)
+
+
Get the optional boolean value associated with an index. + It returns the defaultValue if there is no value at that index or if + it is not a Boolean or the String "true" or "false" (case insensitive). +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - A boolean default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index)
+
+
Get the optional double value associated with an index. + NaN is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index,
+                        double defaultValue)
+
+
Get the optional double value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - subscript
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index)
+
+
Get the optional int value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index,
+                  int defaultValue)
+
+
Get the optional int value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(int index)
+
+
Get the optional JSONArray associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONArray value, or null if the index has no value, + or if the value is not a JSONArray.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(int index)
+
+
Get the optional JSONObject associated with an index. + Null is returned if the key is not found, or null if the index has + no value, or if the value is not a JSONObject. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONObject value.
+
+
+
+ +

+optLong

+
+public long optLong(int index)
+
+
Get the optional long value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optLong

+
+public long optLong(int index,
+                    long defaultValue)
+
+
Get the optional long value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index)
+
+
Get the optional string value associated with an index. It returns an + empty string if there is no value at that index. If the value + is not a string and is not null, then it is coverted to a string. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A String value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index,
+                                  java.lang.String defaultValue)
+
+
Get the optional string associated with an index. + The defaultValue is returned if the key is not found. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
A String value.
+
+
+
+ +

+put

+
+public JSONArray put(boolean value)
+
+
Append a boolean value. This increases the array's length by one. +

+

+
Parameters:
value - A boolean value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Collection value)
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
value - A Collection value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(double value)
+              throws JSONException
+
+
Append a double value. This increases the array's length by one. +

+

+
Parameters:
value - A double value. +
Returns:
this. +
Throws: +
JSONException - if the value is not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int value)
+
+
Append an int value. This increases the array's length by one. +

+

+
Parameters:
value - An int value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(long value)
+
+
Append an long value. This increases the array's length by one. +

+

+
Parameters:
value - A long value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Map value)
+
+
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
value - A Map value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.lang.Object value)
+
+
Append an object value. This increases the array's length by one. +

+

+
Parameters:
value - An object value. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     boolean value)
+              throws JSONException
+
+
Put or replace a boolean value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - A boolean value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Collection value)
+              throws JSONException
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
index - The subscript.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     double value)
+              throws JSONException
+
+
Put or replace a double value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A double value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     int value)
+              throws JSONException
+
+
Put or replace an int value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - An int value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     long value)
+              throws JSONException
+
+
Put or replace a long value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A long value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Map value)
+              throws JSONException
+
+
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +

+

+
Parameters:
index - The subscript.
value - The Map value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.lang.Object value)
+              throws JSONException
+
+
Put or replace an object value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - The value to put into the array. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(int index)
+
+
Remove an index and close the hole. +

+

+
Parameters:
index - The index of the element to be removed. +
Returns:
The value that was associated with the index, + or null if there was no value.
+
+
+
+ +

+toJSONObject

+
+public JSONObject toJSONObject(JSONArray names)
+                        throws JSONException
+
+
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. These will be + paired with the values. +
Returns:
A JSONObject, or null if there are no names or if this JSONArray + has no values. +
Throws: +
JSONException - If any of the names are null.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONArray. For compactness, no + unnecessary whitespace is added. If it is not possible to produce a + syntactically correct JSON text then null will be returned instead. This + could occur if the array contains an invalid number. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, transmittable + representation of the array.
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+                          throws JSONException
+
+
Make a prettyprinted JSON text of this JSONArray. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of + indentation. +
Returns:
a printable, displayable, transmittable + representation of the object, beginning + with [ (left bracket) and ending + with ] (right bracket). +
Throws: +
JSONException
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+                     throws JSONException
+
+
Write the contents of the JSONArray as JSON text to a writer. + For compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONException.html b/distribution/json4p-0.1.1/reference/org/json/JSONException.html new file mode 100644 index 000000000..4d9c1f552 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONException.html @@ -0,0 +1,291 @@ + + + + + + +JSONException (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONException

+
+java.lang.Object
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.json.JSONException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public class JSONException
extends java.lang.Exception
+ + +

+The JSONException is thrown by the JSON.org classes when things are amiss. +

+ +

+

+
Author:
+
JSON.org
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
JSONException(java.lang.String message) + +
+          Constructs a JSONException with an explanatory message.
JSONException(java.lang.Throwable cause) + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.ThrowablegetCause() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONException

+
+public JSONException(java.lang.String message)
+
+
Constructs a JSONException with an explanatory message. +

+

+
Parameters:
message - Detail about the reason for the exception.
+
+
+ +

+JSONException

+
+public JSONException(java.lang.Throwable cause)
+
+
+ + + + + + + + +
+Method Detail
+ +

+getCause

+
+public java.lang.Throwable getCause()
+
+
+
Overrides:
getCause in class java.lang.Throwable
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONML.html b/distribution/json4p-0.1.1/reference/org/json/JSONML.html new file mode 100644 index 000000000..5b802cf36 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONML.html @@ -0,0 +1,422 @@ + + + + + + +JSONML (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONML

+
+java.lang.Object
+  extended by org.json.JSONML
+
+
+
+
public class JSONML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONArraytoJSONArray(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static JSONObjecttoJSONObject(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static java.lang.StringtoString(JSONArray ja) + +
+          Reverse the JSONML transformation, making an XML text from a JSONArray.
+static java.lang.StringtoString(JSONObject jo) + +
+          Reverse the JSONML transformation, making an XML text from a JSONObject.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONML

+
+public JSONML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(XMLTokener x)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child content and tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(XMLTokener x)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener of the XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONArray. +

+

+
Parameters:
ja - A JSONArray. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONObject. + The JSONObject must contain a "tagName" property. If it has children, + then it must have a "childNodes" property containing an array of objects. + The other properties are attributes with string values. +

+

+
Parameters:
jo - A JSONObject. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONObject.html b/distribution/json4p-0.1.1/reference/org/json/JSONObject.html new file mode 100644 index 000000000..9fe479662 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONObject.html @@ -0,0 +1,1883 @@ + + + + + + +JSONObject (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONObject

+
+java.lang.Object
+  extended by org.json.JSONObject
+
+
+
+
public class JSONObject
extends java.lang.Object
+ + +

+A JSONObject is an unordered collection of name/value pairs. Its + external form is a string wrapped in curly braces with colons between the + names and values, and commas between the values and names. The internal form + is an object having get and opt methods for + accessing the values by name, and put methods for adding or + replacing values by name. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the JSONObject.NULL + object. A JSONObject constructor can be used to convert an external form + JSON text into an internal form whose values can be retrieved with the + get and opt methods, or to convert values into a + JSON text using the put and toString methods. + A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

+ The generic get() and opt() methods return an + object, which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. The opt methods differ from the get methods in that they + do not throw. Instead, they return a specified value, such as null. +

+ The put methods add or replace values in an object. For example, +

myString = new JSONObject().put("JSON", "Hello, World!").toString();
+ produces the string {"JSON": "Hello, World"}. +

+ The texts produced by the toString methods strictly conform to + the JSON syntax rules. + The constructors are more forgiving in the texts they will accept: +

    +
  • An extra , (comma) may appear just + before the closing brace.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
  • +
  • Keys can be followed by = or => as well as + by :.
  • +
  • Values can be followed by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.ObjectNULL + +
+          It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONObject() + +
+          Construct an empty JSONObject.
JSONObject(JSONObject jo, + java.lang.String[] names) + +
+          Construct a JSONObject from a subset of another JSONObject.
JSONObject(JSONTokener x) + +
+          Construct a JSONObject from a JSONTokener.
JSONObject(java.util.Map map) + +
+          Construct a JSONObject from a Map.
JSONObject(java.lang.Object bean) + +
+          Construct a JSONObject from an Object using bean getters.
JSONObject(java.lang.Object object, + java.lang.String[] names) + +
+          Construct a JSONObject from an Object, using reflection to find the + public members.
JSONObject(java.lang.String source) + +
+          Construct a JSONObject from a source JSON text string.
JSONObject(java.lang.String baseName, + java.util.Locale locale) + +
+          Construct a JSONObject from a ResourceBundle.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONObjectaccumulate(java.lang.String key, + java.lang.Object value) + +
+          Accumulate values under a key.
+ JSONObjectappend(java.lang.String key, + java.lang.Object value) + +
+          Append values to the array under a key.
+static java.lang.StringdoubleToString(double d) + +
+          Produce a string from a double.
+ java.lang.Objectget(java.lang.String key) + +
+          Get the value object associated with a key.
+ booleangetBoolean(java.lang.String key) + +
+          Get the boolean value associated with a key.
+ doublegetDouble(java.lang.String key) + +
+          Get the double value associated with a key.
+ intgetInt(java.lang.String key) + +
+          Get the int value associated with a key.
+ JSONArraygetJSONArray(java.lang.String key) + +
+          Get the JSONArray value associated with a key.
+ JSONObjectgetJSONObject(java.lang.String key) + +
+          Get the JSONObject value associated with a key.
+ longgetLong(java.lang.String key) + +
+          Get the long value associated with a key.
+static java.lang.String[]getNames(JSONObject jo) + +
+          Get an array of field names from a JSONObject.
+static java.lang.String[]getNames(java.lang.Object object) + +
+          Get an array of field names from an Object.
+ java.lang.StringgetString(java.lang.String key) + +
+          Get the string associated with a key.
+ booleanhas(java.lang.String key) + +
+          Determine if the JSONObject contains a specific key.
+ JSONObjectincrement(java.lang.String key) + +
+          Increment a property of a JSONObject.
+ booleanisNull(java.lang.String key) + +
+          Determine if the value associated with the key is null or if there is + no value.
+ java.util.Iteratorkeys() + +
+          Get an enumeration of the keys of the JSONObject.
+ intlength() + +
+          Get the number of keys stored in the JSONObject.
+ JSONArraynames() + +
+          Produce a JSONArray containing the names of the elements of this + JSONObject.
+static java.lang.StringnumberToString(java.lang.Number number) + +
+          Produce a string from a Number.
+ java.lang.Objectopt(java.lang.String key) + +
+          Get an optional value associated with a key.
+ booleanoptBoolean(java.lang.String key) + +
+          Get an optional boolean associated with a key.
+ booleanoptBoolean(java.lang.String key, + boolean defaultValue) + +
+          Get an optional boolean associated with a key.
+ doubleoptDouble(java.lang.String key) + +
+          Get an optional double associated with a key, + or NaN if there is no such key or if its value is not a number.
+ doubleoptDouble(java.lang.String key, + double defaultValue) + +
+          Get an optional double associated with a key, or the + defaultValue if there is no such key or if its value is not a number.
+ intoptInt(java.lang.String key) + +
+          Get an optional int value associated with a key, + or zero if there is no such key or if the value is not a number.
+ intoptInt(java.lang.String key, + int defaultValue) + +
+          Get an optional int value associated with a key, + or the default if there is no such key or if the value is not a number.
+ JSONArrayoptJSONArray(java.lang.String key) + +
+          Get an optional JSONArray associated with a key.
+ JSONObjectoptJSONObject(java.lang.String key) + +
+          Get an optional JSONObject associated with a key.
+ longoptLong(java.lang.String key) + +
+          Get an optional long value associated with a key, + or zero if there is no such key or if the value is not a number.
+ longoptLong(java.lang.String key, + long defaultValue) + +
+          Get an optional long value associated with a key, + or the default if there is no such key or if the value is not a number.
+ java.lang.StringoptString(java.lang.String key) + +
+          Get an optional string associated with a key.
+ java.lang.StringoptString(java.lang.String key, + java.lang.String defaultValue) + +
+          Get an optional string associated with a key.
+ JSONObjectput(java.lang.String key, + boolean value) + +
+          Put a key/boolean pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Collection value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
+ JSONObjectput(java.lang.String key, + double value) + +
+          Put a key/double pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + int value) + +
+          Put a key/int pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + long value) + +
+          Put a key/long pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Map value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
+ JSONObjectput(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject.
+ JSONObjectputOnce(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the key and the + value are both non-null, and only if there is not already a member + with that name.
+ JSONObjectputOpt(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the + key and the value are both non-null.
+static java.lang.Stringquote(java.lang.String string) + +
+          Produce a string in double quotes with backslash sequences in all the + right places.
+ java.lang.Objectremove(java.lang.String key) + +
+          Remove a name and its value, if present.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static voidtestValidity(java.lang.Object o) + +
+          Throw an exception if the object is a NaN or infinite number.
+ JSONArraytoJSONArray(JSONArray names) + +
+          Produce a JSONArray containing the values of the members of this + JSONObject.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONObject.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONObject.
+static java.lang.StringvalueToString(java.lang.Object value) + +
+          Make a JSON text of an Object value.
+static java.lang.Objectwrap(java.lang.Object object) + +
+          Wrap an object, if necessary.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONObject as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+NULL

+
+public static final java.lang.Object NULL
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null". +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+JSONObject

+
+public JSONObject()
+
+
Construct an empty JSONObject. +

+

+
+ +

+JSONObject

+
+public JSONObject(JSONObject jo,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from a subset of another JSONObject. + An array of strings is used to identify the keys that should be copied. + Missing keys are ignored. +

+

+
Parameters:
jo - A JSONObject.
names - An array of strings. +
Throws: +
JSONException +
JSONException - If a value is a non-finite number or if a name is duplicated.
+
+
+ +

+JSONObject

+
+public JSONObject(JSONTokener x)
+           throws JSONException
+
+
Construct a JSONObject from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener object containing the source string. +
Throws: +
JSONException - If there is a syntax error in the source string + or a duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.util.Map map)
+
+
Construct a JSONObject from a Map. +

+

+
Parameters:
map - A map object that can be used to initialize the contents of + the JSONObject. +
Throws: +
JSONException
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object bean)
+
+
Construct a JSONObject from an Object using bean getters. + It reflects on all of the public methods of the object. + For each of the methods with no parameters and a name starting + with "get" or "is" followed by an uppercase letter, + the method is invoked, and a key and the value returned from the getter method + are put into the new JSONObject. + + The key is formed by removing the "get" or "is" prefix. + If the second remaining character is not upper case, then the first + character is converted to lower case. + + For example, if an object has a method named "getName", and + if the result of calling object.getName() is "Larry Fine", + then the JSONObject will contain "name": "Larry Fine". +

+

+
Parameters:
bean - An object that has getter methods that should be used + to make a JSONObject.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object object,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from an Object, using reflection to find the + public members. The resulting JSONObject's keys will be the strings + from the names array, and the values will be the field values associated + with those keys in the object. If a key is not found or not visible, + then it will not be copied into the new JSONObject. +

+

+
Parameters:
object - An object that has fields that should be used to make a + JSONObject.
names - An array of strings, the names of the fields to be obtained + from the object.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String source)
+           throws JSONException
+
+
Construct a JSONObject from a source JSON text string. + This is the most commonly used JSONObject constructor. +

+

+
Parameters:
source - A string beginning + with { (left brace) and ending + with } (right brace). +
Throws: +
JSONException - If there is a syntax error in the source + string or a duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String baseName,
+                  java.util.Locale locale)
+           throws JSONException
+
+
Construct a JSONObject from a ResourceBundle. +

+

+
Parameters:
baseName - The ResourceBundle base name.
locale - The Locale to load the ResourceBundle for. +
Throws: +
JSONException - If any JSONExceptions are detected.
+
+ + + + + + + + +
+Method Detail
+ +

+accumulate

+
+public JSONObject accumulate(java.lang.String key,
+                             java.lang.Object value)
+                      throws JSONException
+
+
Accumulate values under a key. It is similar to the put method except + that if there is already an object stored under the key then a + JSONArray is stored under the key to hold all of the accumulated values. + If there is already a JSONArray, then the new value is appended to it. + In contrast, the put method replaces the previous value. + + If only one value is accumulated that is not a JSONArray, then the + result will be the same as using put. But if multiple values are + accumulated, then the result will be like append. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the value is an invalid number + or if the key is null.
+
+
+
+ +

+append

+
+public JSONObject append(java.lang.String key,
+                         java.lang.Object value)
+                  throws JSONException
+
+
Append values to the array under a key. If the key does not exist in the + JSONObject, then the key is put in the JSONObject with its value being a + JSONArray containing the value parameter. If the key was already + associated with a JSONArray, then the value parameter is appended to it. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the current value + associated with the key is not a JSONArray.
+
+
+
+ +

+doubleToString

+
+public static java.lang.String doubleToString(double d)
+
+
Produce a string from a double. The string "null" will be returned if + the number is not finite. +

+

+
Parameters:
d - A double. +
Returns:
A String.
+
+
+
+ +

+get

+
+public java.lang.Object get(java.lang.String key)
+                     throws JSONException
+
+
Get the value object associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The object associated with the key. +
Throws: +
JSONException - if the key is not found.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(java.lang.String key)
+                   throws JSONException
+
+
Get the boolean value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The truth. +
Throws: +
JSONException - if the value is not a Boolean or the String "true" or "false".
+
+
+
+ +

+getDouble

+
+public double getDouble(java.lang.String key)
+                 throws JSONException
+
+
Get the double value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The numeric value. +
Throws: +
JSONException - if the key is not found or + if the value is not a Number object and cannot be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(java.lang.String key)
+           throws JSONException
+
+
Get the int value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The integer value. +
Throws: +
JSONException - if the key is not found or if the value cannot + be converted to an integer.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(java.lang.String key)
+                       throws JSONException
+
+
Get the JSONArray value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value. +
Throws: +
JSONException - if the key is not found or + if the value is not a JSONArray.
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(java.lang.String key)
+                         throws JSONException
+
+
Get the JSONObject value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value. +
Throws: +
JSONException - if the key is not found or + if the value is not a JSONObject.
+
+
+
+ +

+getLong

+
+public long getLong(java.lang.String key)
+             throws JSONException
+
+
Get the long value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The long value. +
Throws: +
JSONException - if the key is not found or if the value cannot + be converted to a long.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(JSONObject jo)
+
+
Get an array of field names from a JSONObject. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(java.lang.Object object)
+
+
Get an array of field names from an Object. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getString

+
+public java.lang.String getString(java.lang.String key)
+                           throws JSONException
+
+
Get the string associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value. +
Throws: +
JSONException - if there is no string value for the key.
+
+
+
+ +

+has

+
+public boolean has(java.lang.String key)
+
+
Determine if the JSONObject contains a specific key. +

+

+
Parameters:
key - A key string. +
Returns:
true if the key exists in the JSONObject.
+
+
+
+ +

+increment

+
+public JSONObject increment(java.lang.String key)
+                     throws JSONException
+
+
Increment a property of a JSONObject. If there is no such property, + create one with a value of 1. If there is such a property, and if + it is an Integer, Long, Double, or Float, then add one to it. +

+

+
Parameters:
key - A key string. +
Returns:
this. +
Throws: +
JSONException - If there is already a property with this name + that is not an Integer, Long, Double, or Float.
+
+
+
+ +

+isNull

+
+public boolean isNull(java.lang.String key)
+
+
Determine if the value associated with the key is null or if there is + no value. +

+

+
Parameters:
key - A key string. +
Returns:
true if there is no value associated with the key or if + the value is the JSONObject.NULL object.
+
+
+
+ +

+keys

+
+public java.util.Iterator keys()
+
+
Get an enumeration of the keys of the JSONObject. +

+

+ +
Returns:
An iterator of the keys.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of keys stored in the JSONObject. +

+

+ +
Returns:
The number of keys in the JSONObject.
+
+
+
+ +

+names

+
+public JSONArray names()
+
+
Produce a JSONArray containing the names of the elements of this + JSONObject. +

+

+ +
Returns:
A JSONArray containing the key strings, or null if the JSONObject + is empty.
+
+
+
+ +

+numberToString

+
+public static java.lang.String numberToString(java.lang.Number number)
+                                       throws JSONException
+
+
Produce a string from a Number. +

+

+
Parameters:
number - A Number +
Returns:
A String. +
Throws: +
JSONException - If n is a non-finite number.
+
+
+
+ +

+opt

+
+public java.lang.Object opt(java.lang.String key)
+
+
Get an optional value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value, or null if there is no value.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key)
+
+
Get an optional boolean associated with a key. + It returns false if there is no such key, or if the value is not + Boolean.TRUE or the String "true". +

+

+
Parameters:
key - A key string. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key,
+                          boolean defaultValue)
+
+
Get an optional boolean associated with a key. + It returns the defaultValue if there is no such key, or if it is not + a Boolean or the String "true" or "false" (case insensitive). +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key)
+
+
Get an optional double associated with a key, + or NaN if there is no such key or if its value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A string which is the key. +
Returns:
An object which is the value.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key,
+                        double defaultValue)
+
+
Get an optional double associated with a key, or the + defaultValue if there is no such key or if its value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key)
+
+
Get an optional int value associated with a key, + or zero if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key,
+                  int defaultValue)
+
+
Get an optional int value associated with a key, + or the default if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(java.lang.String key)
+
+
Get an optional JSONArray associated with a key. + It returns null if there is no such key, or if its value is not a + JSONArray. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(java.lang.String key)
+
+
Get an optional JSONObject associated with a key. + It returns null if there is no such key, or if its value is not a + JSONObject. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key)
+
+
Get an optional long value associated with a key, + or zero if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key,
+                    long defaultValue)
+
+
Get an optional long value associated with a key, + or the default if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key)
+
+
Get an optional string associated with a key. + It returns an empty string if there is no such key. If the value is not + a string and is not null, then it is converted to a string. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key,
+                                  java.lang.String defaultValue)
+
+
Get an optional string associated with a key. + It returns the defaultValue if there is no such key. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
A string which is the value.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      boolean value)
+               throws JSONException
+
+
Put a key/boolean pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A boolean which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Collection value)
+               throws JSONException
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
key - A key string.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      double value)
+               throws JSONException
+
+
Put a key/double pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A double which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the number is invalid.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      int value)
+               throws JSONException
+
+
Put a key/int pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - An int which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      long value)
+               throws JSONException
+
+
Put a key/long pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A long which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Map value)
+               throws JSONException
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
key - A key string.
value - A Map value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.lang.Object value)
+               throws JSONException
+
+
Put a key/value pair in the JSONObject. If the value is null, + then the key will be removed from the JSONObject if it is present. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, + or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is non-finite number + or if the key is null.
+
+
+
+ +

+putOnce

+
+public JSONObject putOnce(java.lang.String key,
+                          java.lang.Object value)
+                   throws JSONException
+
+
Put a key/value pair in the JSONObject, but only if the key and the + value are both non-null, and only if there is not already a member + with that name. +

+

+
Parameters:
key -
value - +
Returns:
his. +
Throws: +
JSONException - if the key is a duplicate
+
+
+
+ +

+putOpt

+
+public JSONObject putOpt(java.lang.String key,
+                         java.lang.Object value)
+                  throws JSONException
+
+
Put a key/value pair in the JSONObject, but only if the + key and the value are both non-null. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, + or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is a non-finite number.
+
+
+
+ +

+quote

+
+public static java.lang.String quote(java.lang.String string)
+
+
Produce a string in double quotes with backslash sequences in all the + right places. A backslash will be inserted within +
+
Parameters:
string - A String +
Returns:
A String correctly formatted for insertion in a JSON text.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(java.lang.String key)
+
+
Remove a name and its value, if present. +

+

+
Parameters:
key - The name to be removed. +
Returns:
The value that was associated with the name, + or null if there was no value.
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+testValidity

+
+public static void testValidity(java.lang.Object o)
+                         throws JSONException
+
+
Throw an exception if the object is a NaN or infinite number. +

+

+
Parameters:
o - The object to test. +
Throws: +
JSONException - If o is a non-finite number.
+
+
+
+ +

+toJSONArray

+
+public JSONArray toJSONArray(JSONArray names)
+                      throws JSONException
+
+
Produce a JSONArray containing the values of the members of this + JSONObject. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. This + determines the sequence of the values in the result. +
Returns:
A JSONArray of values. +
Throws: +
JSONException - If any of the values are non-finite numbers.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONObject. For compactness, no whitespace + is added. If this would not result in a syntactically correct JSON text, + then null will be returned instead. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, portable, transmittable + representation of the object, beginning + with { (left brace) and ending + with } (right brace).
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+                          throws JSONException
+
+
Make a prettyprinted JSON text of this JSONObject. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of + indentation. +
Returns:
a printable, displayable, portable, transmittable + representation of the object, beginning + with { (left brace) and ending + with } (right brace). +
Throws: +
JSONException - If the object contains an invalid number.
+
+
+
+ +

+valueToString

+
+public static java.lang.String valueToString(java.lang.Object value)
+                                      throws JSONException
+
+
Make a JSON text of an Object value. If the object has an + value.toJSONString() method, then that method will be used to produce + the JSON text. The method is required to produce a strictly + conforming text. If the object does not contain a toJSONString + method (which is the most common case), then a text will be + produced by other means. If the value is an array or Collection, + then a JSONArray will be made from it and its toJSONString method + will be called. If the value is a MAP, then a JSONObject will be made + from it and its toJSONString method will be called. Otherwise, the + value's toString method will be called, and the result will be quoted. + +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
value - The value to be serialized. +
Returns:
a printable, displayable, transmittable + representation of the object, beginning + with { (left brace) and ending + with } (right brace). +
Throws: +
JSONException - If the value is or contains an invalid number.
+
+
+
+ +

+wrap

+
+public static java.lang.Object wrap(java.lang.Object object)
+
+
Wrap an object, if necessary. If the object is null, return the NULL + object. If it is an array or collection, wrap it in a JSONArray. If + it is a map, wrap it in a JSONObject. If it is a standard property + (Double, String, et al) then it is already wrapped. Otherwise, if it + comes from one of the java packages, turn it into a string. And if + it doesn't, try to wrap it in a JSONObject. If the wrapping fails, + then null is returned. +

+

+
Parameters:
object - The object to wrap +
Returns:
The wrapped value
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+                     throws JSONException
+
+
Write the contents of the JSONObject as JSON text to a writer. + For compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONString.html b/distribution/json4p-0.1.1/reference/org/json/JSONString.html new file mode 100644 index 000000000..021b8b1c6 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONString.html @@ -0,0 +1,216 @@ + + + + + + +JSONString (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Interface JSONString

+
+
+
public interface JSONString
+ + +

+The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object). The + toJSONString method will be used instead of the default behavior + of using the Object's toString() method and quoting the result. +

+ +

+


+ +

+ + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoJSONString() + +
+          The toJSONString method allows a class to produce its own JSON + serialization.
+  +

+ + + + + + + + +
+Method Detail
+ +

+toJSONString

+
+java.lang.String toJSONString()
+
+
The toJSONString method allows a class to produce its own JSON + serialization. +

+

+ +
Returns:
A strictly syntactically correct JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONStringer.html b/distribution/json4p-0.1.1/reference/org/json/JSONStringer.html new file mode 100644 index 000000000..b28f8e567 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONStringer.html @@ -0,0 +1,303 @@ + + + + + + +JSONStringer (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONStringer

+
+java.lang.Object
+  extended by org.json.JSONWriter
+      extended by org.json.JSONStringer
+
+
+
+
public class JSONStringer
extends JSONWriter
+ + +

+JSONStringer provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONStringer can produce one JSON text. +

+ A JSONStringer instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting cascade style. For example,

+ myString = new JSONStringer()
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject()
+     .toString();
which produces the string
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONStringer adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONStringer() + +
+          Make a fresh JSONStringer.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoString() + +
+          Return the JSON text.
+ + + + + + + +
Methods inherited from class org.json.JSONWriter
array, endArray, endObject, key, object, value, value, value, value
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONStringer

+
+public JSONStringer()
+
+
Make a fresh JSONStringer. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+toString

+
+public java.lang.String toString()
+
+
Return the JSON text. This method is used to obtain the product of the + JSONStringer instance. It will return null if there was a + problem in the construction of the JSON text (such as the calls to + array were not properly balanced with calls to + endArray). +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
The JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONTokener.html b/distribution/json4p-0.1.1/reference/org/json/JSONTokener.html new file mode 100644 index 000000000..ac2bdfe2d --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONTokener.html @@ -0,0 +1,667 @@ + + + + + + +JSONTokener (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+
+
+
Direct Known Subclasses:
HTTPTokener, XMLTokener
+
+
+
+
public class JSONTokener
extends java.lang.Object
+ + +

+A JSONTokener takes a source string and extracts characters and tokens from + it. It is used by the JSONObject and JSONArray constructors to parse + JSON source strings. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONTokener(java.io.InputStream inputStream) + +
+          Construct a JSONTokener from an InputStream.
JSONTokener(java.io.Reader reader) + +
+          Construct a JSONTokener from a Reader.
JSONTokener(java.lang.String s) + +
+          Construct a JSONTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidback() + +
+          Back up one character.
+static intdehexchar(char c) + +
+          Get the hex value of a character (base16).
+ booleanend() + +
+           
+ booleanmore() + +
+          Determine if the source string still contains characters that next() + can consume.
+ charnext() + +
+          Get the next character in the source string.
+ charnext(char c) + +
+          Consume the next character, and check that it matches a specified + character.
+ java.lang.Stringnext(int n) + +
+          Get the next n characters.
+ charnextClean() + +
+          Get the next char in the string, skipping whitespace.
+ java.lang.StringnextString(char quote) + +
+          Return the characters up to the next close quote character.
+ java.lang.StringnextTo(char delimiter) + +
+          Get the text up but not including the specified character or the + end of line, whichever comes first.
+ java.lang.StringnextTo(java.lang.String delimiters) + +
+          Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
+ java.lang.ObjectnextValue() + +
+          Get the next value.
+ charskipTo(char to) + +
+          Skip characters until the next character is the requested character.
+ JSONExceptionsyntaxError(java.lang.String message) + +
+          Make a JSONException to signal a syntax error.
+ java.lang.StringtoString() + +
+          Make a printable string of this JSONTokener.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONTokener

+
+public JSONTokener(java.io.Reader reader)
+
+
Construct a JSONTokener from a Reader. +

+

+
Parameters:
reader - A reader.
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.io.InputStream inputStream)
+            throws JSONException
+
+
Construct a JSONTokener from an InputStream. +

+

+ +
Throws: +
JSONException
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.lang.String s)
+
+
Construct a JSONTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+back

+
+public void back()
+          throws JSONException
+
+
Back up one character. This provides a sort of lookahead capability, + so that you can test for a digit or letter before attempting to parse + the next number or identifier. +

+

+ +
Throws: +
JSONException
+
+
+
+ +

+dehexchar

+
+public static int dehexchar(char c)
+
+
Get the hex value of a character (base16). +

+

+
Parameters:
c - A character between '0' and '9' or between 'A' and 'F' or + between 'a' and 'f'. +
Returns:
An int between 0 and 15, or -1 if c was not a hex digit.
+
+
+
+ +

+end

+
+public boolean end()
+
+
+
+
+
+
+ +

+more

+
+public boolean more()
+             throws JSONException
+
+
Determine if the source string still contains characters that next() + can consume. +

+

+ +
Returns:
true if not yet at the end of the source. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next()
+          throws JSONException
+
+
Get the next character in the source string. +

+

+ +
Returns:
The next character, or 0 if past the end of the source string. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next(char c)
+          throws JSONException
+
+
Consume the next character, and check that it matches a specified + character. +

+

+
Parameters:
c - The character to match. +
Returns:
The character. +
Throws: +
JSONException - if the character does not match.
+
+
+
+ +

+next

+
+public java.lang.String next(int n)
+                      throws JSONException
+
+
Get the next n characters. +

+

+
Parameters:
n - The number of characters to take. +
Returns:
A string of n characters. +
Throws: +
JSONException - Substring bounds error if there are not + n characters remaining in the source string.
+
+
+
+ +

+nextClean

+
+public char nextClean()
+               throws JSONException
+
+
Get the next char in the string, skipping whitespace. +

+

+ +
Returns:
A character, or 0 if there are no more characters. +
Throws: +
JSONException
+
+
+
+ +

+nextString

+
+public java.lang.String nextString(char quote)
+                            throws JSONException
+
+
Return the characters up to the next close quote character. + Backslash processing is done. The formal JSON format does not + allow strings in single quotes, but an implementation is allowed to + accept them. +

+

+
Parameters:
quote - The quoting character, either + " (double quote) or + ' (single quote). +
Returns:
A String. +
Throws: +
JSONException - Unterminated string.
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(char delimiter)
+                        throws JSONException
+
+
Get the text up but not including the specified character or the + end of line, whichever comes first. +

+

+
Parameters:
delimiter - A delimiter character. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(java.lang.String delimiters)
+                        throws JSONException
+
+
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +

+

+
Parameters:
delimiters - A set of delimiter characters. +
Returns:
A string, trimmed. +
Throws: +
JSONException
+
+
+
+ +

+nextValue

+
+public java.lang.Object nextValue()
+                           throws JSONException
+
+
Get the next value. The value can be a Boolean, Double, Integer, + JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. +

+

+ +
Returns:
An object. +
Throws: +
JSONException - If syntax error.
+
+
+
+ +

+skipTo

+
+public char skipTo(char to)
+            throws JSONException
+
+
Skip characters until the next character is the requested character. + If the requested character is not found, no characters are skipped. +

+

+
Parameters:
to - A character to skip to. +
Returns:
The requested character, or zero if the requested character + is not found. +
Throws: +
JSONException
+
+
+
+ +

+syntaxError

+
+public JSONException syntaxError(java.lang.String message)
+
+
Make a JSONException to signal a syntax error. +

+

+
Parameters:
message - The error message. +
Returns:
A JSONException object, suitable for throwing
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a printable string of this JSONTokener. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
" at {index} [character {character} line {line}]"
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONWriter.html b/distribution/json4p-0.1.1/reference/org/json/JSONWriter.html new file mode 100644 index 000000000..a8c38b73a --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/JSONWriter.html @@ -0,0 +1,506 @@ + + + + + + +JSONWriter (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONWriter

+
+java.lang.Object
+  extended by org.json.JSONWriter
+
+
+
Direct Known Subclasses:
JSONStringer
+
+
+
+
public class JSONWriter
extends java.lang.Object
+ + +

+JSONWriter provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONWriter can produce one JSON text. +

+ A JSONWriter instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting a cascade style. For example,

+ new JSONWriter(myWriter)
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject();
which writes
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONWriter adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONWriter(java.io.Writer w) + +
+          Make a fresh JSONWriter.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONWriterarray() + +
+          Begin appending a new array.
+ JSONWriterendArray() + +
+          End an array.
+ JSONWriterendObject() + +
+          End an object.
+ JSONWriterkey(java.lang.String string) + +
+          Append a key.
+ JSONWriterobject() + +
+          Begin appending a new object.
+ JSONWritervalue(boolean b) + +
+          Append either the value true or the value + false.
+ JSONWritervalue(double d) + +
+          Append a double value.
+ JSONWritervalue(long l) + +
+          Append a long value.
+ JSONWritervalue(java.lang.Object object) + +
+          Append an object value.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONWriter

+
+public JSONWriter(java.io.Writer w)
+
+
Make a fresh JSONWriter. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+array

+
+public JSONWriter array()
+                 throws JSONException
+
+
Begin appending a new array. All values until the balancing + endArray will be appended to this array. The + endArray method must be called to mark the array's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+endArray

+
+public JSONWriter endArray()
+                    throws JSONException
+
+
End an array. This method most be called to balance calls to + array. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+endObject

+
+public JSONWriter endObject()
+                     throws JSONException
+
+
End an object. This method most be called to balance calls to + object. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+key

+
+public JSONWriter key(java.lang.String string)
+               throws JSONException
+
+
Append a key. The key will be associated with the next value. In an + object, every value must be preceded by a key. +

+

+
Parameters:
string - A key string. +
Returns:
this +
Throws: +
JSONException - If the key is out of place. For example, keys + do not belong in arrays or if the key is null.
+
+
+
+ +

+object

+
+public JSONWriter object()
+                  throws JSONException
+
+
Begin appending a new object. All keys and values until the balancing + endObject will be appended to this object. The + endObject method must be called to mark the object's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+value

+
+public JSONWriter value(boolean b)
+                 throws JSONException
+
+
Append either the value true or the value + false. +

+

+
Parameters:
b - A boolean. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(double d)
+                 throws JSONException
+
+
Append a double value. +

+

+
Parameters:
d - A double. +
Returns:
this +
Throws: +
JSONException - If the number is not finite.
+
+
+
+ +

+value

+
+public JSONWriter value(long l)
+                 throws JSONException
+
+
Append a long value. +

+

+
Parameters:
l - A long. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(java.lang.Object object)
+                 throws JSONException
+
+
Append an object value. +

+

+
Parameters:
object - The object to append. It can be null, or a Boolean, Number, + String, JSONObject, or JSONArray, or an object that implements JSONString. +
Returns:
this +
Throws: +
JSONException - If the value is out of sequence.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/XML.html b/distribution/json4p-0.1.1/reference/org/json/XML.html new file mode 100644 index 000000000..439c4a930 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/XML.html @@ -0,0 +1,601 @@ + + + + + + +XML (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XML

+
+java.lang.Object
+  extended by org.json.XML
+
+
+
+
public class XML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static java.lang.CharacterAMP + +
+          The Character '&'.
+static java.lang.CharacterAPOS + +
+          The Character '''.
+static java.lang.CharacterBANG + +
+          The Character '!'.
+static java.lang.CharacterEQ + +
+          The Character '='.
+static java.lang.CharacterGT + +
+          The Character '>'.
+static java.lang.CharacterLT + +
+          The Character '<'.
+static java.lang.CharacterQUEST + +
+          The Character '?'.
+static java.lang.CharacterQUOT + +
+          The Character '"'.
+static java.lang.CharacterSLASH + +
+          The Character '/'.
+  + + + + + + + + + + +
+Constructor Summary
XML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Replace special characters with XML escapes:
+static voidnoSpace(java.lang.String string) + +
+          Throw an exception if the string contains whitespace.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
+static java.lang.StringtoString(java.lang.Object object) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+static java.lang.StringtoString(java.lang.Object object, + java.lang.String tagName) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+AMP

+
+public static final java.lang.Character AMP
+
+
The Character '&'. +

+

+
+
+
+ +

+APOS

+
+public static final java.lang.Character APOS
+
+
The Character '''. +

+

+
+
+
+ +

+BANG

+
+public static final java.lang.Character BANG
+
+
The Character '!'. +

+

+
+
+
+ +

+EQ

+
+public static final java.lang.Character EQ
+
+
The Character '='. +

+

+
+
+
+ +

+GT

+
+public static final java.lang.Character GT
+
+
The Character '>'. +

+

+
+
+
+ +

+LT

+
+public static final java.lang.Character LT
+
+
The Character '<'. +

+

+
+
+
+ +

+QUEST

+
+public static final java.lang.Character QUEST
+
+
The Character '?'. +

+

+
+
+
+ +

+QUOT

+
+public static final java.lang.Character QUOT
+
+
The Character '"'. +

+

+
+
+
+ +

+SLASH

+
+public static final java.lang.Character SLASH
+
+
The Character '/'. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XML

+
+public XML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Replace special characters with XML escapes: +
+ & (ampersand) is replaced by &amp;
+ < (less than) is replaced by &lt;
+ > (greater than) is replaced by &gt;
+ " (double quote) is replaced by &quot;
+ 
+

+

+
Parameters:
string - The string to be escaped. +
Returns:
The escaped string.
+
+
+
+ +

+noSpace

+
+public static void noSpace(java.lang.String string)
+                    throws JSONException
+
+
Throw an exception if the string contains whitespace. + Whitespace is not allowed in tagNames and attributes. +

+

+
Parameters:
string - +
Throws: +
JSONException
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. This is much less ambitious than + JSONObject.stringToValue, especially because it does not attempt to + convert plus forms, octal forms, hex forms, or E forms lacking decimal + points. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. Some information may be lost in this transformation + because JSON is a data format and XML is a document format. XML uses + elements, attributes, and content text, while JSON uses unordered + collections of name/value pairs and arrays of values. JSON does not + does not like to distinguish between elements and attributes. + Sequences of similar elements are represented as JSONArrays. Content + text may be placed in a "content" member. Comments, prologs, DTDs, and + <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object,
+                                        java.lang.String tagName)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject.
tagName - The optional name of the enclosing tag. +
Returns:
A string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/XMLTokener.html b/distribution/json4p-0.1.1/reference/org/json/XMLTokener.html new file mode 100644 index 000000000..fd0868e5d --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/XMLTokener.html @@ -0,0 +1,452 @@ + + + + + + +XMLTokener (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XMLTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.XMLTokener
+
+
+
+
public class XMLTokener
extends JSONTokener
+ + +

+The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.util.HashMapentity + +
+          The table of entity values.
+  + + + + + + + + + + +
+Constructor Summary
XMLTokener(java.lang.String s) + +
+          Construct an XMLTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextCDATA() + +
+          Get the text in the CDATA block.
+ java.lang.ObjectnextContent() + +
+          Get the next XML outer token, trimming whitespace.
+ java.lang.ObjectnextEntity(char ampersand) + +
+          Return the next entity.
+ java.lang.ObjectnextMeta() + +
+          Returns the next XML meta token.
+ java.lang.ObjectnextToken() + +
+          Get the next XML Token.
+ booleanskipPast(java.lang.String to) + +
+          Skip characters until past the requested string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+entity

+
+public static final java.util.HashMap entity
+
+
The table of entity values. It initially contains Character values for + amp, apos, gt, lt, quot. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XMLTokener

+
+public XMLTokener(java.lang.String s)
+
+
Construct an XMLTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextCDATA

+
+public java.lang.String nextCDATA()
+                           throws JSONException
+
+
Get the text in the CDATA block. +

+

+ +
Returns:
The string up to the ]]>. +
Throws: +
JSONException - If the ]]> is not found.
+
+
+
+ +

+nextContent

+
+public java.lang.Object nextContent()
+                             throws JSONException
+
+
Get the next XML outer token, trimming whitespace. There are two kinds + of tokens: the '<' character which begins a markup tag, and the content + text between markup tags. +

+

+ +
Returns:
A string, or a '<' Character, or null if there is no more + source text. +
Throws: +
JSONException
+
+
+
+ +

+nextEntity

+
+public java.lang.Object nextEntity(char ampersand)
+                            throws JSONException
+
+
Return the next entity. These entities are translated to Characters: + & ' > < ". +

+

+
Parameters:
ampersand - An ampersand character. +
Returns:
A Character or an entity String if the entity is not recognized. +
Throws: +
JSONException - If missing ';' in XML entity.
+
+
+
+ +

+nextMeta

+
+public java.lang.Object nextMeta()
+                          throws JSONException
+
+
Returns the next XML meta token. This is used for skipping over + and structures. +

+

+ +
Returns:
Syntax characters (< > / = ! ?) are returned as + Character, and strings and names are returned as Boolean. We don't care + what the values actually are. +
Throws: +
JSONException - If a string is not properly closed or if the XML + is badly structured.
+
+
+
+ +

+nextToken

+
+public java.lang.Object nextToken()
+                           throws JSONException
+
+
Get the next XML Token. These tokens are found inside of angle + brackets. It may be one of these characters: / > = ! ? or it + may be a string wrapped in single quotes or double quotes, or it may be a + name. +

+

+ +
Returns:
a String or a Character. +
Throws: +
JSONException - If the XML is not well formed.
+
+
+
+ +

+skipPast

+
+public boolean skipPast(java.lang.String to)
+                 throws JSONException
+
+
Skip characters until past the requested string. + If it is not found, we are left at the end of the source with a result of false. +

+

+
Parameters:
to - A string to skip past. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/package-frame.html b/distribution/json4p-0.1.1/reference/org/json/package-frame.html new file mode 100644 index 000000000..3574f4702 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/package-frame.html @@ -0,0 +1,78 @@ + + + + + + +org.json (Javadocs: json4p) + + + + + + + + + + + +org.json + + + + +
+Interfaces  + +
+JSONString
+ + + + + + +
+Classes  + +
+CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONML +
+JSONObject +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener
+ + + + + + +
+Exceptions  + +
+JSONException
+ + + + diff --git a/distribution/json4p-0.1.1/reference/org/json/package-summary.html b/distribution/json4p-0.1.1/reference/org/json/package-summary.html new file mode 100644 index 000000000..133c778e9 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/package-summary.html @@ -0,0 +1,239 @@ + + + + + + +org.json (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.json +

+ + + + + + + + + +
+Interface Summary
JSONStringThe JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
CDLThis provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CookieConvert a web browser cookie specification to a JSONObject and back.
CookieListConvert a web browser cookie list string to a JSONObject and back.
HTTPConvert an HTTP header to a JSONObject and back.
HTTPTokenerThe HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
JSONArrayA JSONArray is an ordered sequence of values.
JSONMLThis provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONObjectA JSONObject is an unordered collection of name/value pairs.
JSONStringerJSONStringer provides a quick and convenient way of producing JSON text.
JSONTokenerA JSONTokener takes a source string and extracts characters and tokens from + it.
JSONWriterJSONWriter provides a quick and convenient way of producing JSON text.
XMLThis provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XMLTokenerThe XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
+  + +

+ + + + + + + + + +
+Exception Summary
JSONExceptionThe JSONException is thrown by the JSON.org classes when things are amiss.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/org/json/package-tree.html b/distribution/json4p-0.1.1/reference/org/json/package-tree.html new file mode 100644 index 000000000..46fe20674 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/org/json/package-tree.html @@ -0,0 +1,160 @@ + + + + + + +org.json Class Hierarchy (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.json +

+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/overview-tree.html b/distribution/json4p-0.1.1/reference/overview-tree.html new file mode 100644 index 000000000..931cb7bc4 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/overview-tree.html @@ -0,0 +1,162 @@ + + + + + + +Class Hierarchy (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.json
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/package-list b/distribution/json4p-0.1.1/reference/package-list new file mode 100644 index 000000000..6374a8ef9 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/package-list @@ -0,0 +1 @@ +org.json diff --git a/distribution/json4p-0.1.1/reference/resources/inherit.gif b/distribution/json4p-0.1.1/reference/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/distribution/json4p-0.1.1/reference/serialized-form.html b/distribution/json4p-0.1.1/reference/serialized-form.html new file mode 100644 index 000000000..0090de154 --- /dev/null +++ b/distribution/json4p-0.1.1/reference/serialized-form.html @@ -0,0 +1,178 @@ + + + + + + +Serialized Form (Javadocs: json4p) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Serialized Form

+
+
+ + + + + +
+Package org.json
+ +

+ + + + + +
+Class org.json.JSONException extends java.lang.Exception implements Serializable
+ +

+serialVersionUID: 0L + +

+ + + + + +
+Serialized Fields
+ +

+cause

+
+java.lang.Throwable cause
+
+
+
+
+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4p by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4p-0.1.1/reference/stylesheet.css b/distribution/json4p-0.1.1/reference/stylesheet.css new file mode 100644 index 000000000..54998c2bc --- /dev/null +++ b/distribution/json4p-0.1.1/reference/stylesheet.css @@ -0,0 +1,310 @@ +/* Javadoc style sheet */ +/* Define colors, fonts and other style attributes here to override the defaults */ +/* processingLibs style by andreas schlegel, sojamo */ + + +body { + margin : 0; + padding : 0; + padding-left : 10px; + padding-right : 8px; + background-color : #FFFFFF; + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.7em; + font-weight : normal; + line-height : normal; + margin-bottom:30px; +} + + + + +/* Headings */ +h1, h2, h3, h4, h5, th { + font-family :Arial, Helvetica, sans-serif; + font-size:1.2em; +} + + +p { + font-size : 1em; + width:80%; +} + +pre, code { + font-family : "Courier New", Courier, monospace; + font-size : 12px; + line-height : normal; +} + + + +table { + border:0; + margin-bottom:10px; + margin-top:10px; +} + + +tr, td { + border-top: 0px solid; + border-left: 0px solid; + padding-top:8px; + padding-bottom:8px; +} + + + +hr { + border:0; + height:1px; + padding:0; + margin:0; + margin-bottom:4px; + +} + + + +dd, th, td, font { + font-size:1.0em; + line-height:1.0em; +} + + + +dt { + margin-bottom:0px; +} + + + +dd { + margin-top:2px; + margin-bottom:4px; +} + + + +a { + text-decoration: underline; + font-weight: normal; +} + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + +img { + border: 0px solid #000000; +} + + + +/* Navigation bar fonts */ +.NavBarCell1 { + border:0; +} + +.NavBarCell1Rev { + border:0; +} + +.NavBarFont1 { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + + +.NavBarFont1 b { + font-weight:normal; +} + + + +.NavBarFont1:after, .NavBarFont1Rev:after { + font-weight:normal; + content: " \\"; +} + + +.NavBarFont1Rev { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + +.NavBarFont1Rev b { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; + font-weight:normal; +} + +.NavBarCell2 { + font-family: Arial, Helvetica, sans-serif; +} + +.NavBarCell3 { + font-family: Arial, Helvetica, sans-serif; +} + + + +font.FrameItemFont { + font-family: Helvetica, Arial, sans-serif; + font-size:1.1em; + line-height:1.1em; +} + +font.FrameHeadingFont { + font-family: Helvetica, Arial, sans-serif; + line-height:32px; +} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { + font-family: Helvetica, Arial, sans-serif +} + + +.toggleList { + padding:0; + margin:0; + margin-top:12px; +} + +.toggleList dt { + font-weight:bold; + font-size:12px; + font-family:arial,sans-serif; + padding:0px; + margin:10px 0px 10px 0px; +} + +.toggleList dt span { + font-family: monospace; + padding:0; + margin:0; +} + + +.toggleList dd { + margin:0; + padding:0; +} + +html.isjs .toggleList dd { + display: none; +} + +.toggleList pre { + padding: 4px 4px 4px 4px; +} + + + + + +/* COLORS */ + +pre, code { + color: #000000; +} + + +body { + color : #333333; + background-color :#FFFFFF; +} + + +h1, h2, h3, h4, h5, h6 { + color:#555; +} + +a, +.toggleList dt { + color: #1a7eb0; +} + +a:hover, +a:active { + color: #1a7eb0; +} + +a:visited, +a:link:visited { + color: #1a7eb0; +} + +td,tr { + border-color: #999999; +} + +hr { + color:#999999; + background:#999999; +} + + +.TableHeadingColor { + background: #dcdcdc; + color: #555; +} + + +.TableSubHeadingColor { + background: #EEEEFF +} + +.TableRowColor { + background: #FFFFFF +} + + +.NavBarCell1 { + background-color:#dcdcdc; + color:#000; +} + +.NavBarCell1 a { + color:#333; +} + + +.NavBarCell1Rev { + background-color:transparent; +} + +.NavBarFont1 { + color:#333; +} + + +.NavBarFont1Rev { + color:#fff; +} + +.NavBarCell2 { + background-color:#999; +} + +.NavBarCell2 a { + color:#fff; +} + + + +.NavBarCell3 { + background-color:#dcdcdc; +} + diff --git a/distribution/json4p-0.1.1/stylesheet.css b/distribution/json4p-0.1.1/stylesheet.css new file mode 100644 index 000000000..4348b3814 --- /dev/null +++ b/distribution/json4p-0.1.1/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} diff --git a/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip b/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..42dbc4b47885a0904e82bf48589abfcdf8b87c5b GIT binary patch literal 161976 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 literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.1/examples/Hello/Hello.pde b/distribution/json4processing-0.1.1/examples/Hello/Hello.pde new file mode 100644 index 000000000..c14456a35 --- /dev/null +++ b/distribution/json4processing-0.1.1/examples/Hello/Hello.pde @@ -0,0 +1,19 @@ +import template.library.*; + +HelloLibrary hello; + +void setup() { + size(400,400); + smooth(); + + hello = new HelloLibrary(this); + + PFont font = createFont("",40); + textFont(font); +} + +void draw() { + background(0); + fill(255); + text(hello.sayHello(), 40, 200); +} \ No newline at end of file diff --git a/distribution/json4processing-0.1.1/index.html b/distribution/json4processing-0.1.1/index.html new file mode 100644 index 000000000..a5ced3ea2 --- /dev/null +++ b/distribution/json4processing-0.1.1/index.html @@ -0,0 +1,132 @@ + + + +json4processing + + + + + + + + + + + + + + +

+ + + + + +
+ +
+

json4processing

+

+ A library by Andreas Göransson for the programming environment processing. Last update, 11/16/2011. +

+

+ Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. +

+
+ + + +
+

Download

+

+ Download json4processing version 0.1.1 in + .zip format. +

+

Installation

+

+ Unzip and put the extracted json4processing folder into the libraries folder of your processing sketches. Reference and examples are included in the json4processing folder. +

+
+ + +
+

Keywords ?

+

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

+

Source. The source code of json4processing is available at github, and its repository can be browsed here.

+
+ +
+

Examples

+

Find a list of examples in the current distribution of json4processing, or have a look at them by following the links below.

+ +
+ + +
+

Tested

+

+ + Platform linux + + +
Processing 1.5.1 + + +
Dependencies ? +

+
+ + + + + + + + + + + + +
+
+ + +
+ + \ No newline at end of file diff --git a/distribution/json4processing-0.1.1/reference/allclasses-frame.html b/distribution/json4processing-0.1.1/reference/allclasses-frame.html new file mode 100644 index 000000000..e9ad12cc0 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/allclasses-frame.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Javadocs: json4processing) + + + + + + + + + + + +All Classes +
+ + + + + +
CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONException +
+JSONML +
+JSONObject +
+JSONString +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener +
+
+ + + diff --git a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html new file mode 100644 index 000000000..c426ae259 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Javadocs: json4processing) + + + + + + + + + + + +All Classes +
+ + + + + +
CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONException +
+JSONML +
+JSONObject +
+JSONString +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener +
+
+ + + diff --git a/distribution/json4processing-0.1.1/reference/constant-values.html b/distribution/json4processing-0.1.1/reference/constant-values.html new file mode 100644 index 000000000..e3a3307a9 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/constant-values.html @@ -0,0 +1,170 @@ + + + + + + +Constant Field Values (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.json.*
+ +

+ + + + + + + + + + + + +
org.json.HTTP
+public static final java.lang.StringCRLF"\r\n"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/deprecated-list.html b/distribution/json4processing-0.1.1/reference/deprecated-list.html new file mode 100644 index 000000000..d13a0ff18 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/deprecated-list.html @@ -0,0 +1,142 @@ + + + + + + +Deprecated List (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/help-doc.html b/distribution/json4processing-0.1.1/reference/help-doc.html new file mode 100644 index 000000000..9e82f267e --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/help-doc.html @@ -0,0 +1,209 @@ + + + + + + +API Help (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/index-all.html b/distribution/json4processing-0.1.1/reference/index-all.html new file mode 100644 index 000000000..e3b5452a2 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/index-all.html @@ -0,0 +1,893 @@ + + + + + + +Index (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A B C D E G H I J K L M N O P Q R S T U V W X
+

+A

+
+
accumulate(String, Object) - +Method in class org.json.JSONObject +
Accumulate values under a key. +
AMP - +Static variable in class org.json.XML +
The Character '&'. +
APOS - +Static variable in class org.json.XML +
The Character '''. +
append(String, Object) - +Method in class org.json.JSONObject +
Append values to the array under a key. +
array() - +Method in class org.json.JSONWriter +
Begin appending a new array. +
+
+

+B

+
+
back() - +Method in class org.json.JSONTokener +
Back up one character. +
BANG - +Static variable in class org.json.XML +
The Character '!'. +
+
+

+C

+
+
CDL - Class in org.json
This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CDL() - +Constructor for class org.json.CDL +
  +
Cookie - Class in org.json
Convert a web browser cookie specification to a JSONObject and back.
Cookie() - +Constructor for class org.json.Cookie +
  +
CookieList - Class in org.json
Convert a web browser cookie list string to a JSONObject and back.
CookieList() - +Constructor for class org.json.CookieList +
  +
CRLF - +Static variable in class org.json.HTTP +
Carriage return/line feed. +
+
+

+D

+
+
dehexchar(char) - +Static method in class org.json.JSONTokener +
Get the hex value of a character (base16). +
doubleToString(double) - +Static method in class org.json.JSONObject +
Produce a string from a double. +
+
+

+E

+
+
end() - +Method in class org.json.JSONTokener +
  +
endArray() - +Method in class org.json.JSONWriter +
End an array. +
endObject() - +Method in class org.json.JSONWriter +
End an object. +
entity - +Static variable in class org.json.XMLTokener +
The table of entity values. +
EQ - +Static variable in class org.json.XML +
The Character '='. +
escape(String) - +Static method in class org.json.Cookie +
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". +
escape(String) - +Static method in class org.json.XML +
Replace special characters with XML escapes: +
+
+

+G

+
+
get(int) - +Method in class org.json.JSONArray +
Get the object value associated with an index. +
get(String) - +Method in class org.json.JSONObject +
Get the value object associated with a key. +
getBoolean(int) - +Method in class org.json.JSONArray +
Get the boolean value associated with an index. +
getBoolean(String) - +Method in class org.json.JSONObject +
Get the boolean value associated with a key. +
getCause() - +Method in exception org.json.JSONException +
  +
getDouble(int) - +Method in class org.json.JSONArray +
Get the double value associated with an index. +
getDouble(String) - +Method in class org.json.JSONObject +
Get the double value associated with a key. +
getInt(int) - +Method in class org.json.JSONArray +
Get the int value associated with an index. +
getInt(String) - +Method in class org.json.JSONObject +
Get the int value associated with a key. +
getJSONArray(int) - +Method in class org.json.JSONArray +
Get the JSONArray associated with an index. +
getJSONArray(String) - +Method in class org.json.JSONObject +
Get the JSONArray value associated with a key. +
getJSONObject(int) - +Method in class org.json.JSONArray +
Get the JSONObject associated with an index. +
getJSONObject(String) - +Method in class org.json.JSONObject +
Get the JSONObject value associated with a key. +
getLong(int) - +Method in class org.json.JSONArray +
Get the long value associated with an index. +
getLong(String) - +Method in class org.json.JSONObject +
Get the long value associated with a key. +
getNames(JSONObject) - +Static method in class org.json.JSONObject +
Get an array of field names from a JSONObject. +
getNames(Object) - +Static method in class org.json.JSONObject +
Get an array of field names from an Object. +
getString(int) - +Method in class org.json.JSONArray +
Get the string associated with an index. +
getString(String) - +Method in class org.json.JSONObject +
Get the string associated with a key. +
GT - +Static variable in class org.json.XML +
The Character '>'. +
+
+

+H

+
+
has(String) - +Method in class org.json.JSONObject +
Determine if the JSONObject contains a specific key. +
HTTP - Class in org.json
Convert an HTTP header to a JSONObject and back.
HTTP() - +Constructor for class org.json.HTTP +
  +
HTTPTokener - Class in org.json
The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
HTTPTokener(String) - +Constructor for class org.json.HTTPTokener +
Construct an HTTPTokener from a string. +
+
+

+I

+
+
increment(String) - +Method in class org.json.JSONObject +
Increment a property of a JSONObject. +
isNull(int) - +Method in class org.json.JSONArray +
Determine if the value is null. +
isNull(String) - +Method in class org.json.JSONObject +
Determine if the value associated with the key is null or if there is + no value. +
+
+

+J

+
+
join(String) - +Method in class org.json.JSONArray +
Make a string from the contents of this JSONArray. +
JSONArray - Class in org.json
A JSONArray is an ordered sequence of values.
JSONArray() - +Constructor for class org.json.JSONArray +
Construct an empty JSONArray. +
JSONArray(JSONTokener) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a JSONTokener. +
JSONArray(String) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a source JSON text. +
JSONArray(Collection) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a Collection. +
JSONArray(Object) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from an array +
JSONException - Exception in org.json
The JSONException is thrown by the JSON.org classes when things are amiss.
JSONException(String) - +Constructor for exception org.json.JSONException +
Constructs a JSONException with an explanatory message. +
JSONException(Throwable) - +Constructor for exception org.json.JSONException +
  +
JSONML - Class in org.json
This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONML() - +Constructor for class org.json.JSONML +
  +
JSONObject - Class in org.json
A JSONObject is an unordered collection of name/value pairs.
JSONObject() - +Constructor for class org.json.JSONObject +
Construct an empty JSONObject. +
JSONObject(JSONObject, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a subset of another JSONObject. +
JSONObject(JSONTokener) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a JSONTokener. +
JSONObject(Map) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a Map. +
JSONObject(Object) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object using bean getters. +
JSONObject(Object, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object, using reflection to find the + public members. +
JSONObject(String) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a source JSON text string. +
JSONObject(String, Locale) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a ResourceBundle. +
JSONString - Interface in org.json
The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
JSONStringer - Class in org.json
JSONStringer provides a quick and convenient way of producing JSON text.
JSONStringer() - +Constructor for class org.json.JSONStringer +
Make a fresh JSONStringer. +
JSONTokener - Class in org.json
A JSONTokener takes a source string and extracts characters and tokens from + it.
JSONTokener(Reader) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a Reader. +
JSONTokener(InputStream) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from an InputStream. +
JSONTokener(String) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a string. +
JSONWriter - Class in org.json
JSONWriter provides a quick and convenient way of producing JSON text.
JSONWriter(Writer) - +Constructor for class org.json.JSONWriter +
Make a fresh JSONWriter. +
+
+

+K

+
+
key(String) - +Method in class org.json.JSONWriter +
Append a key. +
keys() - +Method in class org.json.JSONObject +
Get an enumeration of the keys of the JSONObject. +
+
+

+L

+
+
length() - +Method in class org.json.JSONArray +
Get the number of elements in the JSONArray, included nulls. +
length() - +Method in class org.json.JSONObject +
Get the number of keys stored in the JSONObject. +
LT - +Static variable in class org.json.XML +
The Character '<'. +
+
+

+M

+
+
more() - +Method in class org.json.JSONTokener +
Determine if the source string still contains characters that next() + can consume. +
+
+

+N

+
+
names() - +Method in class org.json.JSONObject +
Produce a JSONArray containing the names of the elements of this + JSONObject. +
next() - +Method in class org.json.JSONTokener +
Get the next character in the source string. +
next(char) - +Method in class org.json.JSONTokener +
Consume the next character, and check that it matches a specified + character. +
next(int) - +Method in class org.json.JSONTokener +
Get the next n characters. +
nextCDATA() - +Method in class org.json.XMLTokener +
Get the text in the CDATA block. +
nextClean() - +Method in class org.json.JSONTokener +
Get the next char in the string, skipping whitespace. +
nextContent() - +Method in class org.json.XMLTokener +
Get the next XML outer token, trimming whitespace. +
nextEntity(char) - +Method in class org.json.XMLTokener +
Return the next entity. +
nextMeta() - +Method in class org.json.XMLTokener +
Returns the next XML meta token. +
nextString(char) - +Method in class org.json.JSONTokener +
Return the characters up to the next close quote character. +
nextTo(char) - +Method in class org.json.JSONTokener +
Get the text up but not including the specified character or the + end of line, whichever comes first. +
nextTo(String) - +Method in class org.json.JSONTokener +
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +
nextToken() - +Method in class org.json.HTTPTokener +
Get the next token or string. +
nextToken() - +Method in class org.json.XMLTokener +
Get the next XML Token. +
nextValue() - +Method in class org.json.JSONTokener +
Get the next value. +
noSpace(String) - +Static method in class org.json.XML +
Throw an exception if the string contains whitespace. +
NULL - +Static variable in class org.json.JSONObject +
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. +
numberToString(Number) - +Static method in class org.json.JSONObject +
Produce a string from a Number. +
+
+

+O

+
+
object() - +Method in class org.json.JSONWriter +
Begin appending a new object. +
opt(int) - +Method in class org.json.JSONArray +
Get the optional object value associated with an index. +
opt(String) - +Method in class org.json.JSONObject +
Get an optional value associated with a key. +
optBoolean(int) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(int, boolean) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(String) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optBoolean(String, boolean) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optDouble(int) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(int, double) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(String) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, + or NaN if there is no such key or if its value is not a number. +
optDouble(String, double) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, or the + defaultValue if there is no such key or if its value is not a number. +
optInt(int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(int, int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(String) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, + or zero if there is no such key or if the value is not a number. +
optInt(String, int) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, + or the default if there is no such key or if the value is not a number. +
optJSONArray(int) - +Method in class org.json.JSONArray +
Get the optional JSONArray associated with an index. +
optJSONArray(String) - +Method in class org.json.JSONObject +
Get an optional JSONArray associated with a key. +
optJSONObject(int) - +Method in class org.json.JSONArray +
Get the optional JSONObject associated with an index. +
optJSONObject(String) - +Method in class org.json.JSONObject +
Get an optional JSONObject associated with a key. +
optLong(int) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(int, long) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(String) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, + or zero if there is no such key or if the value is not a number. +
optLong(String, long) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, + or the default if there is no such key or if the value is not a number. +
optString(int) - +Method in class org.json.JSONArray +
Get the optional string value associated with an index. +
optString(int, String) - +Method in class org.json.JSONArray +
Get the optional string associated with an index. +
optString(String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
optString(String, String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
org.json - package org.json
 
+
+

+P

+
+
put(boolean) - +Method in class org.json.JSONArray +
Append a boolean value. +
put(Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(double) - +Method in class org.json.JSONArray +
Append a double value. +
put(int) - +Method in class org.json.JSONArray +
Append an int value. +
put(long) - +Method in class org.json.JSONArray +
Append an long value. +
put(Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +
put(Object) - +Method in class org.json.JSONArray +
Append an object value. +
put(int, boolean) - +Method in class org.json.JSONArray +
Put or replace a boolean value in the JSONArray. +
put(int, Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(int, double) - +Method in class org.json.JSONArray +
Put or replace a double value. +
put(int, int) - +Method in class org.json.JSONArray +
Put or replace an int value. +
put(int, long) - +Method in class org.json.JSONArray +
Put or replace a long value. +
put(int, Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +
put(int, Object) - +Method in class org.json.JSONArray +
Put or replace an object value in the JSONArray. +
put(String, boolean) - +Method in class org.json.JSONObject +
Put a key/boolean pair in the JSONObject. +
put(String, Collection) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +
put(String, double) - +Method in class org.json.JSONObject +
Put a key/double pair in the JSONObject. +
put(String, int) - +Method in class org.json.JSONObject +
Put a key/int pair in the JSONObject. +
put(String, long) - +Method in class org.json.JSONObject +
Put a key/long pair in the JSONObject. +
put(String, Map) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +
put(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject. +
putOnce(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the key and the + value are both non-null, and only if there is not already a member + with that name. +
putOpt(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the + key and the value are both non-null. +
+
+

+Q

+
+
QUEST - +Static variable in class org.json.XML +
The Character '?'. +
QUOT - +Static variable in class org.json.XML +
The Character '"'. +
quote(String) - +Static method in class org.json.JSONObject +
Produce a string in double quotes with backslash sequences in all the + right places. +
+
+

+R

+
+
remove(int) - +Method in class org.json.JSONArray +
Remove an index and close the hole. +
remove(String) - +Method in class org.json.JSONObject +
Remove a name and its value, if present. +
rowToJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of strings from a row of comma delimited values. +
rowToJSONObject(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +
rowToString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text row from a JSONArray. +
+
+

+S

+
+
skipPast(String) - +Method in class org.json.XMLTokener +
Skip characters until past the requested string. +
skipTo(char) - +Method in class org.json.JSONTokener +
Skip characters until the next character is the requested character. +
SLASH - +Static variable in class org.json.XML +
The Character '/'. +
stringToValue(String) - +Static method in class org.json.JSONObject +
Try to convert a string into a number, boolean, or null. +
stringToValue(String) - +Static method in class org.json.XML +
Try to convert a string into a number, boolean, or null. +
syntaxError(String) - +Method in class org.json.JSONTokener +
Make a JSONException to signal a syntax error. +
+
+

+T

+
+
testValidity(Object) - +Static method in class org.json.JSONObject +
Throw an exception if the object is a NaN or infinite number. +
toJSONArray(String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONArray, String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(JSONArray) - +Method in class org.json.JSONObject +
Produce a JSONArray containing the values of the members of this + JSONObject. +
toJSONObject(String) - +Static method in class org.json.Cookie +
Convert a cookie specification string into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.CookieList +
Convert a cookie list into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.HTTP +
Convert an HTTP header string into a JSONObject. +
toJSONObject(JSONArray) - +Method in class org.json.JSONArray +
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +
toJSONObject(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.XML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. +
toJSONString() - +Method in interface org.json.JSONString +
The toJSONString method allows a class to produce its own JSON + serialization. +
toString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects. +
toString(JSONArray, JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. +
toString(JSONObject) - +Static method in class org.json.Cookie +
Convert a JSONObject into a cookie specification string. +
toString(JSONObject) - +Static method in class org.json.CookieList +
Convert a JSONObject into a cookie list. +
toString(JSONObject) - +Static method in class org.json.HTTP +
Convert a JSONObject into an HTTP header. +
toString() - +Method in class org.json.JSONArray +
Make a JSON text of this JSONArray. +
toString(int) - +Method in class org.json.JSONArray +
Make a prettyprinted JSON text of this JSONArray. +
toString(JSONArray) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONArray. +
toString(JSONObject) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONObject. +
toString() - +Method in class org.json.JSONObject +
Make a JSON text of this JSONObject. +
toString(int) - +Method in class org.json.JSONObject +
Make a prettyprinted JSON text of this JSONObject. +
toString() - +Method in class org.json.JSONStringer +
Return the JSON text. +
toString() - +Method in class org.json.JSONTokener +
Make a printable string of this JSONTokener. +
toString(Object) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
toString(Object, String) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
+
+

+U

+
+
unescape(String) - +Static method in class org.json.Cookie +
Convert %hh sequences to single characters, and + convert plus to space. +
+
+

+V

+
+
value(boolean) - +Method in class org.json.JSONWriter +
Append either the value true or the value + false. +
value(double) - +Method in class org.json.JSONWriter +
Append a double value. +
value(long) - +Method in class org.json.JSONWriter +
Append a long value. +
value(Object) - +Method in class org.json.JSONWriter +
Append an object value. +
valueToString(Object) - +Static method in class org.json.JSONObject +
Make a JSON text of an Object value. +
+
+

+W

+
+
wrap(Object) - +Static method in class org.json.JSONObject +
Wrap an object, if necessary. +
write(Writer) - +Method in class org.json.JSONArray +
Write the contents of the JSONArray as JSON text to a writer. +
write(Writer) - +Method in class org.json.JSONObject +
Write the contents of the JSONObject as JSON text to a writer. +
+
+

+X

+
+
XML - Class in org.json
This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XML() - +Constructor for class org.json.XML +
  +
XMLTokener - Class in org.json
The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
XMLTokener(String) - +Constructor for class org.json.XMLTokener +
Construct an XMLTokener from a string. +
+
+A B C D E G H I J K L M N O P Q R S T U V W X + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/index.html b/distribution/json4processing-0.1.1/reference/index.html new file mode 100644 index 000000000..db07ba17d --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/index.html @@ -0,0 +1,36 @@ + + + + + + +Javadocs: json4processing + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="org/json/package-summary.html">Non-frame version.</A> + + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/CDL.html b/distribution/json4processing-0.1.1/reference/org/json/CDL.html new file mode 100644 index 000000000..b4f141761 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/CDL.html @@ -0,0 +1,500 @@ + + + + + + +CDL (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CDL

+
+java.lang.Object
+  extended by org.json.CDL
+
+
+
+
public class CDL
extends java.lang.Object
+ + +

+This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text. Comma + delimited text is a very popular format for data interchange. It is + understood by most database, spreadsheet, and organizer programs. +

+ Each row of text represents a row in a table or a data record. Each row + ends with a NEWLINE character. Each row contains one or more values. + Values are separated by commas. A value can contain any character except + for comma, unless is is wrapped in single quotes or double quotes. +

+ The first row usually contains the names of the columns. +

+ A comma delimited list can be converted into a JSONArray of JSONObjects. + The names for the elements in the JSONObjects can be taken from the names + in the first row. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CDL() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArrayrowToJSONArray(JSONTokener x) + +
+          Produce a JSONArray of strings from a row of comma delimited values.
+static JSONObjectrowToJSONObject(JSONArray names, + JSONTokener x) + +
+          Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
+static java.lang.StringrowToString(JSONArray ja) + +
+          Produce a comma delimited text row from a JSONArray.
+static JSONArraytoJSONArray(JSONArray names, + JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONArray names, + java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static java.lang.StringtoString(JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects.
+static java.lang.StringtoString(JSONArray names, + JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CDL

+
+public CDL()
+
+
+ + + + + + + + +
+Method Detail
+ +

+rowToJSONArray

+
+public static JSONArray rowToJSONArray(JSONTokener x)
+                                throws JSONException
+
+
Produce a JSONArray of strings from a row of comma delimited values. +

+

+
Parameters:
x - A JSONTokener of the source text. +
Returns:
A JSONArray of strings. +
Throws: +
JSONException
+
+
+
+ +

+rowToJSONObject

+
+public static JSONObject rowToJSONObject(JSONArray names,
+                                         JSONTokener x)
+                                  throws JSONException
+
+
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +

+

+
Parameters:
names - A JSONArray of names. This is commonly obtained from the + first row of a comma delimited text file using the rowToJSONArray + method.
x - A JSONTokener of the source text. +
Returns:
A JSONObject combining the names and values. +
Throws: +
JSONException
+
+
+
+ +

+rowToString

+
+public static java.lang.String rowToString(JSONArray ja)
+
+
Produce a comma delimited text row from a JSONArray. Values containing + the comma character will be quoted. Troublesome characters may be + removed. +

+

+
Parameters:
ja - A JSONArray of strings. +
Returns:
A string ending in NEWLINE.
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
x - The JSONTokener containing the comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
x - A JSONTokener of the source text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects. The + first row will be a list of names obtained by inspecting the first + JSONObject. +

+

+
Parameters:
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray names,
+                                        JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. The list of names is not included in the + output. +

+

+
Parameters:
names - A JSONArray of strings.
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html new file mode 100644 index 000000000..a1c335179 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html @@ -0,0 +1,357 @@ + + + + + + +Cookie (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class Cookie

+
+java.lang.Object
+  extended by org.json.Cookie
+
+
+
+
public class Cookie
extends java.lang.Object
+ + +

+Convert a web browser cookie specification to a JSONObject and back. + JSON and Cookies are both notations for name/value pairs. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
Cookie() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie specification string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie specification string.
+static java.lang.Stringunescape(java.lang.String string) + +
+          Convert %hh sequences to single characters, and + convert plus to space.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Cookie

+
+public Cookie()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". This is a gentle form + of URL encoding, attempting to cause as little distortion to the + string as possible. The characters '=' and ';' are meta characters in + cookies. By convention, they are escaped using the URL-encoding. This is + only a convention, not a standard. Often, cookies are expected to have + encoded values. We encode '=' and ';' because we must. We encode '%' and + '+' because they are meta characters in URL encoding. +

+

+
Parameters:
string - The source string. +
Returns:
The escaped result.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie specification string into a JSONObject. The string + will contain a name value pair separated by '='. The name and the value + will be unescaped, possibly converting '+' and '%' sequences. The + cookie properties may follow, separated by ';', also represented as + name=value (except the secure property, which does not have a value). + The name will be stored under the key "name", and the value will be + stored under the key "value". This method does not do checking or + validation of the parameters. It only converts the cookie string into + a JSONObject. +

+

+
Parameters:
string - The cookie specification string. +
Returns:
A JSONObject containing "name", "value", and possibly other + members. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie specification string. The JSONObject + must contain "name" and "value" members. + If the JSONObject contains "expires", "domain", "path", or "secure" + members, they will be appended to the cookie specification string. + All other members are ignored. +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie specification string +
Throws: +
JSONException
+
+
+
+ +

+unescape

+
+public static java.lang.String unescape(java.lang.String string)
+
+
Convert %hh sequences to single characters, and + convert plus to space. +

+

+
Parameters:
string - A string that may contain + + (plus) and + %hh sequences. +
Returns:
The unescaped string.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html new file mode 100644 index 000000000..062a87e77 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html @@ -0,0 +1,297 @@ + + + + + + +CookieList (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CookieList

+
+java.lang.Object
+  extended by org.json.CookieList
+
+
+
+
public class CookieList
extends java.lang.Object
+ + +

+Convert a web browser cookie list string to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CookieList() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie list into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie list.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CookieList

+
+public CookieList()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie list into a JSONObject. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The names and the values + will be unescaped, possibly converting '+' and '%' sequences. + + To add a cookie to a cooklist, + cookielistJSONObject.put(cookieJSONObject.getString("name"), + cookieJSONObject.getString("value")); +

+

+
Parameters:
string - A cookie list string +
Returns:
A JSONObject +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie list. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The characters '%', '+', '=', and ';' + in the names and values are replaced by "%hh". +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie list string +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html new file mode 100644 index 000000000..5ad5251f1 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html @@ -0,0 +1,365 @@ + + + + + + +HTTP (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTP

+
+java.lang.Object
+  extended by org.json.HTTP
+
+
+
+
public class HTTP
extends java.lang.Object
+ + +

+Convert an HTTP header to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.StringCRLF + +
+          Carriage return/line feed.
+  + + + + + + + + + + +
+Constructor Summary
HTTP() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert an HTTP header string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into an HTTP header.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+CRLF

+
+public static final java.lang.String CRLF
+
+
Carriage return/line feed. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+HTTP

+
+public HTTP()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert an HTTP header string into a JSONObject. It can be a request + header or a response header. A request header will contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header will contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ In addition, the other parameters in the header will be captured, using + the HTTP field names as JSON names, so that
+    Date: Sun, 26 May 2002 18:06:04 GMT
+    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
+    Cache-Control: no-cache
+ become +
{...
+    Date: "Sun, 26 May 2002 18:06:04 GMT",
+    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
+    "Cache-Control": "no-cache",
+ ...}
+ It does no further checking or conversion. It does not parse dates. + It does not do '%' transforms on URLs. +

+

+
Parameters:
string - An HTTP header string. +
Returns:
A JSONObject containing the elements and attributes + of the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into an HTTP header. A request header must contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header must contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ Any other members of the JSONObject will be output as HTTP fields. + The result will end with two CRLF pairs. +

+

+
Parameters:
jo - A JSONObject +
Returns:
An HTTP header string. +
Throws: +
JSONException - if the object does not contain enough + information.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html new file mode 100644 index 000000000..551b2c7bd --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html @@ -0,0 +1,277 @@ + + + + + + +HTTPTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTPTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.HTTPTokener
+
+
+
+
public class HTTPTokener
extends JSONTokener
+ + +

+The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HTTPTokener(java.lang.String string) + +
+          Construct an HTTPTokener from a string.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextToken() + +
+          Get the next token or string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HTTPTokener

+
+public HTTPTokener(java.lang.String string)
+
+
Construct an HTTPTokener from a string. +

+

+
Parameters:
string - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextToken

+
+public java.lang.String nextToken()
+                           throws JSONException
+
+
Get the next token or string. This is used in parsing HTTP headers. +

+

+ +
Returns:
A String. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html new file mode 100644 index 000000000..b595cc460 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html @@ -0,0 +1,1473 @@ + + + + + + +JSONArray (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONArray

+
+java.lang.Object
+  extended by org.json.JSONArray
+
+
+
+
public class JSONArray
extends java.lang.Object
+ + +

+A JSONArray is an ordered sequence of values. Its external text form is a + string wrapped in square brackets with commas separating the values. The + internal form is an object having get and opt + methods for accessing the values by index, and put methods for + adding or replacing values. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the + JSONObject.NULL object. +

+ The constructor can convert a JSON text into a Java object. The + toString method converts to JSON text. +

+ A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

+ The generic get() and opt() methods return an + object which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. +

+ The texts produced by the toString methods strictly conform to + JSON syntax rules. The constructors are more forgiving in the texts they will + accept: +

    +
  • An extra , (comma) may appear just + before the closing bracket.
  • +
  • The null value will be inserted when there + is , (comma) elision.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
  • +
  • Values can be separated by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the + 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONArray() + +
+          Construct an empty JSONArray.
JSONArray(java.util.Collection collection) + +
+          Construct a JSONArray from a Collection.
JSONArray(JSONTokener x) + +
+          Construct a JSONArray from a JSONTokener.
JSONArray(java.lang.Object array) + +
+          Construct a JSONArray from an array
JSONArray(java.lang.String source) + +
+          Construct a JSONArray from a source JSON text.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.Objectget(int index) + +
+          Get the object value associated with an index.
+ booleangetBoolean(int index) + +
+          Get the boolean value associated with an index.
+ doublegetDouble(int index) + +
+          Get the double value associated with an index.
+ intgetInt(int index) + +
+          Get the int value associated with an index.
+ JSONArraygetJSONArray(int index) + +
+          Get the JSONArray associated with an index.
+ JSONObjectgetJSONObject(int index) + +
+          Get the JSONObject associated with an index.
+ longgetLong(int index) + +
+          Get the long value associated with an index.
+ java.lang.StringgetString(int index) + +
+          Get the string associated with an index.
+ booleanisNull(int index) + +
+          Determine if the value is null.
+ java.lang.Stringjoin(java.lang.String separator) + +
+          Make a string from the contents of this JSONArray.
+ intlength() + +
+          Get the number of elements in the JSONArray, included nulls.
+ java.lang.Objectopt(int index) + +
+          Get the optional object value associated with an index.
+ booleanoptBoolean(int index) + +
+          Get the optional boolean value associated with an index.
+ booleanoptBoolean(int index, + boolean defaultValue) + +
+          Get the optional boolean value associated with an index.
+ doubleoptDouble(int index) + +
+          Get the optional double value associated with an index.
+ doubleoptDouble(int index, + double defaultValue) + +
+          Get the optional double value associated with an index.
+ intoptInt(int index) + +
+          Get the optional int value associated with an index.
+ intoptInt(int index, + int defaultValue) + +
+          Get the optional int value associated with an index.
+ JSONArrayoptJSONArray(int index) + +
+          Get the optional JSONArray associated with an index.
+ JSONObjectoptJSONObject(int index) + +
+          Get the optional JSONObject associated with an index.
+ longoptLong(int index) + +
+          Get the optional long value associated with an index.
+ longoptLong(int index, + long defaultValue) + +
+          Get the optional long value associated with an index.
+ java.lang.StringoptString(int index) + +
+          Get the optional string value associated with an index.
+ java.lang.StringoptString(int index, + java.lang.String defaultValue) + +
+          Get the optional string associated with an index.
+ JSONArrayput(boolean value) + +
+          Append a boolean value.
+ JSONArrayput(java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(double value) + +
+          Append a double value.
+ JSONArrayput(int value) + +
+          Append an int value.
+ JSONArrayput(int index, + boolean value) + +
+          Put or replace a boolean value in the JSONArray.
+ JSONArrayput(int index, + java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(int index, + double value) + +
+          Put or replace a double value.
+ JSONArrayput(int index, + int value) + +
+          Put or replace an int value.
+ JSONArrayput(int index, + long value) + +
+          Put or replace a long value.
+ JSONArrayput(int index, + java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
+ JSONArrayput(int index, + java.lang.Object value) + +
+          Put or replace an object value in the JSONArray.
+ JSONArrayput(long value) + +
+          Append an long value.
+ JSONArrayput(java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
+ JSONArrayput(java.lang.Object value) + +
+          Append an object value.
+ java.lang.Objectremove(int index) + +
+          Remove an index and close the hole.
+ JSONObjecttoJSONObject(JSONArray names) + +
+          Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONArray.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONArray.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONArray as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONArray

+
+public JSONArray()
+
+
Construct an empty JSONArray. +

+

+
+ +

+JSONArray

+
+public JSONArray(JSONTokener x)
+          throws JSONException
+
+
Construct a JSONArray from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.String source)
+          throws JSONException
+
+
Construct a JSONArray from a source JSON text. +

+

+
Parameters:
source - A string that begins with + [ (left bracket) + and ends with ] (right bracket). +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.util.Collection collection)
+
+
Construct a JSONArray from a Collection. +

+

+
Parameters:
collection - A Collection.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.Object array)
+          throws JSONException
+
+
Construct a JSONArray from an array +

+

+ +
Throws: +
JSONException - If not an array.
+
+ + + + + + + + +
+Method Detail
+ +

+get

+
+public java.lang.Object get(int index)
+                     throws JSONException
+
+
Get the object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value. +
Throws: +
JSONException - If there is no value for the index.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(int index)
+                   throws JSONException
+
+
Get the boolean value associated with an index. + The string values "true" and "false" are converted to boolean. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth. +
Throws: +
JSONException - If there is no value for the index or if the + value is not convertible to boolean.
+
+
+
+ +

+getDouble

+
+public double getDouble(int index)
+                 throws JSONException
+
+
Get the double value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(int index)
+           throws JSONException
+
+
Get the int value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value is not a number.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(int index)
+                       throws JSONException
+
+
Get the JSONArray associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONArray value. +
Throws: +
JSONException - If there is no value for the index. or if the + value is not a JSONArray
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(int index)
+                         throws JSONException
+
+
Get the JSONObject associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONObject value. +
Throws: +
JSONException - If there is no value for the index or if the + value is not a JSONObject
+
+
+
+ +

+getLong

+
+public long getLong(int index)
+             throws JSONException
+
+
Get the long value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getString

+
+public java.lang.String getString(int index)
+                           throws JSONException
+
+
Get the string associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A string value. +
Throws: +
JSONException - If there is no string value for the index.
+
+
+
+ +

+isNull

+
+public boolean isNull(int index)
+
+
Determine if the value is null. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
true if the value at the index is null, or if there is no value.
+
+
+
+ +

+join

+
+public java.lang.String join(java.lang.String separator)
+                      throws JSONException
+
+
Make a string from the contents of this JSONArray. The + separator string is inserted between each element. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
separator - A string that will be inserted between the elements. +
Returns:
a string. +
Throws: +
JSONException - If the array contains an invalid number.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of elements in the JSONArray, included nulls. +

+

+ +
Returns:
The length (or size).
+
+
+
+ +

+opt

+
+public java.lang.Object opt(int index)
+
+
Get the optional object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value, or null if there is no + object at that index.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index)
+
+
Get the optional boolean value associated with an index. + It returns false if there is no value at that index, + or if the value is not Boolean.TRUE or the String "true". +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index,
+                          boolean defaultValue)
+
+
Get the optional boolean value associated with an index. + It returns the defaultValue if there is no value at that index or if + it is not a Boolean or the String "true" or "false" (case insensitive). +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - A boolean default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index)
+
+
Get the optional double value associated with an index. + NaN is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index,
+                        double defaultValue)
+
+
Get the optional double value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - subscript
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index)
+
+
Get the optional int value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index,
+                  int defaultValue)
+
+
Get the optional int value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(int index)
+
+
Get the optional JSONArray associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONArray value, or null if the index has no value, + or if the value is not a JSONArray.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(int index)
+
+
Get the optional JSONObject associated with an index. + Null is returned if the key is not found, or null if the index has + no value, or if the value is not a JSONObject. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONObject value.
+
+
+
+ +

+optLong

+
+public long optLong(int index)
+
+
Get the optional long value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optLong

+
+public long optLong(int index,
+                    long defaultValue)
+
+
Get the optional long value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index)
+
+
Get the optional string value associated with an index. It returns an + empty string if there is no value at that index. If the value + is not a string and is not null, then it is coverted to a string. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A String value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index,
+                                  java.lang.String defaultValue)
+
+
Get the optional string associated with an index. + The defaultValue is returned if the key is not found. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
A String value.
+
+
+
+ +

+put

+
+public JSONArray put(boolean value)
+
+
Append a boolean value. This increases the array's length by one. +

+

+
Parameters:
value - A boolean value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Collection value)
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
value - A Collection value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(double value)
+              throws JSONException
+
+
Append a double value. This increases the array's length by one. +

+

+
Parameters:
value - A double value. +
Returns:
this. +
Throws: +
JSONException - if the value is not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int value)
+
+
Append an int value. This increases the array's length by one. +

+

+
Parameters:
value - An int value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(long value)
+
+
Append an long value. This increases the array's length by one. +

+

+
Parameters:
value - A long value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Map value)
+
+
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
value - A Map value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.lang.Object value)
+
+
Append an object value. This increases the array's length by one. +

+

+
Parameters:
value - An object value. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     boolean value)
+              throws JSONException
+
+
Put or replace a boolean value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - A boolean value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Collection value)
+              throws JSONException
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
index - The subscript.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     double value)
+              throws JSONException
+
+
Put or replace a double value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A double value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     int value)
+              throws JSONException
+
+
Put or replace an int value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - An int value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     long value)
+              throws JSONException
+
+
Put or replace a long value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A long value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Map value)
+              throws JSONException
+
+
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +

+

+
Parameters:
index - The subscript.
value - The Map value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.lang.Object value)
+              throws JSONException
+
+
Put or replace an object value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - The value to put into the array. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(int index)
+
+
Remove an index and close the hole. +

+

+
Parameters:
index - The index of the element to be removed. +
Returns:
The value that was associated with the index, + or null if there was no value.
+
+
+
+ +

+toJSONObject

+
+public JSONObject toJSONObject(JSONArray names)
+                        throws JSONException
+
+
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. These will be + paired with the values. +
Returns:
A JSONObject, or null if there are no names or if this JSONArray + has no values. +
Throws: +
JSONException - If any of the names are null.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONArray. For compactness, no + unnecessary whitespace is added. If it is not possible to produce a + syntactically correct JSON text then null will be returned instead. This + could occur if the array contains an invalid number. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, transmittable + representation of the array.
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+                          throws JSONException
+
+
Make a prettyprinted JSON text of this JSONArray. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of + indentation. +
Returns:
a printable, displayable, transmittable + representation of the object, beginning + with [ (left bracket) and ending + with ] (right bracket). +
Throws: +
JSONException
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+                     throws JSONException
+
+
Write the contents of the JSONArray as JSON text to a writer. + For compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html new file mode 100644 index 000000000..32ef6f692 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html @@ -0,0 +1,291 @@ + + + + + + +JSONException (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONException

+
+java.lang.Object
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.json.JSONException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public class JSONException
extends java.lang.Exception
+ + +

+The JSONException is thrown by the JSON.org classes when things are amiss. +

+ +

+

+
Author:
+
JSON.org
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
JSONException(java.lang.String message) + +
+          Constructs a JSONException with an explanatory message.
JSONException(java.lang.Throwable cause) + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.ThrowablegetCause() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONException

+
+public JSONException(java.lang.String message)
+
+
Constructs a JSONException with an explanatory message. +

+

+
Parameters:
message - Detail about the reason for the exception.
+
+
+ +

+JSONException

+
+public JSONException(java.lang.Throwable cause)
+
+
+ + + + + + + + +
+Method Detail
+ +

+getCause

+
+public java.lang.Throwable getCause()
+
+
+
Overrides:
getCause in class java.lang.Throwable
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html new file mode 100644 index 000000000..c07b073a5 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html @@ -0,0 +1,422 @@ + + + + + + +JSONML (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONML

+
+java.lang.Object
+  extended by org.json.JSONML
+
+
+
+
public class JSONML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONArraytoJSONArray(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static JSONObjecttoJSONObject(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static java.lang.StringtoString(JSONArray ja) + +
+          Reverse the JSONML transformation, making an XML text from a JSONArray.
+static java.lang.StringtoString(JSONObject jo) + +
+          Reverse the JSONML transformation, making an XML text from a JSONObject.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONML

+
+public JSONML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(XMLTokener x)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child content and tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(XMLTokener x)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener of the XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONArray. +

+

+
Parameters:
ja - A JSONArray. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONObject. + The JSONObject must contain a "tagName" property. If it has children, + then it must have a "childNodes" property containing an array of objects. + The other properties are attributes with string values. +

+

+
Parameters:
jo - A JSONObject. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html new file mode 100644 index 000000000..2f742288f --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html @@ -0,0 +1,1883 @@ + + + + + + +JSONObject (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONObject

+
+java.lang.Object
+  extended by org.json.JSONObject
+
+
+
+
public class JSONObject
extends java.lang.Object
+ + +

+A JSONObject is an unordered collection of name/value pairs. Its + external form is a string wrapped in curly braces with colons between the + names and values, and commas between the values and names. The internal form + is an object having get and opt methods for + accessing the values by name, and put methods for adding or + replacing values by name. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the JSONObject.NULL + object. A JSONObject constructor can be used to convert an external form + JSON text into an internal form whose values can be retrieved with the + get and opt methods, or to convert values into a + JSON text using the put and toString methods. + A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

+ The generic get() and opt() methods return an + object, which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. The opt methods differ from the get methods in that they + do not throw. Instead, they return a specified value, such as null. +

+ The put methods add or replace values in an object. For example, +

myString = new JSONObject().put("JSON", "Hello, World!").toString();
+ produces the string {"JSON": "Hello, World"}. +

+ The texts produced by the toString methods strictly conform to + the JSON syntax rules. + The constructors are more forgiving in the texts they will accept: +

    +
  • An extra , (comma) may appear just + before the closing brace.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
  • +
  • Keys can be followed by = or => as well as + by :.
  • +
  • Values can be followed by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.ObjectNULL + +
+          It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONObject() + +
+          Construct an empty JSONObject.
JSONObject(JSONObject jo, + java.lang.String[] names) + +
+          Construct a JSONObject from a subset of another JSONObject.
JSONObject(JSONTokener x) + +
+          Construct a JSONObject from a JSONTokener.
JSONObject(java.util.Map map) + +
+          Construct a JSONObject from a Map.
JSONObject(java.lang.Object bean) + +
+          Construct a JSONObject from an Object using bean getters.
JSONObject(java.lang.Object object, + java.lang.String[] names) + +
+          Construct a JSONObject from an Object, using reflection to find the + public members.
JSONObject(java.lang.String source) + +
+          Construct a JSONObject from a source JSON text string.
JSONObject(java.lang.String baseName, + java.util.Locale locale) + +
+          Construct a JSONObject from a ResourceBundle.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONObjectaccumulate(java.lang.String key, + java.lang.Object value) + +
+          Accumulate values under a key.
+ JSONObjectappend(java.lang.String key, + java.lang.Object value) + +
+          Append values to the array under a key.
+static java.lang.StringdoubleToString(double d) + +
+          Produce a string from a double.
+ java.lang.Objectget(java.lang.String key) + +
+          Get the value object associated with a key.
+ booleangetBoolean(java.lang.String key) + +
+          Get the boolean value associated with a key.
+ doublegetDouble(java.lang.String key) + +
+          Get the double value associated with a key.
+ intgetInt(java.lang.String key) + +
+          Get the int value associated with a key.
+ JSONArraygetJSONArray(java.lang.String key) + +
+          Get the JSONArray value associated with a key.
+ JSONObjectgetJSONObject(java.lang.String key) + +
+          Get the JSONObject value associated with a key.
+ longgetLong(java.lang.String key) + +
+          Get the long value associated with a key.
+static java.lang.String[]getNames(JSONObject jo) + +
+          Get an array of field names from a JSONObject.
+static java.lang.String[]getNames(java.lang.Object object) + +
+          Get an array of field names from an Object.
+ java.lang.StringgetString(java.lang.String key) + +
+          Get the string associated with a key.
+ booleanhas(java.lang.String key) + +
+          Determine if the JSONObject contains a specific key.
+ JSONObjectincrement(java.lang.String key) + +
+          Increment a property of a JSONObject.
+ booleanisNull(java.lang.String key) + +
+          Determine if the value associated with the key is null or if there is + no value.
+ java.util.Iteratorkeys() + +
+          Get an enumeration of the keys of the JSONObject.
+ intlength() + +
+          Get the number of keys stored in the JSONObject.
+ JSONArraynames() + +
+          Produce a JSONArray containing the names of the elements of this + JSONObject.
+static java.lang.StringnumberToString(java.lang.Number number) + +
+          Produce a string from a Number.
+ java.lang.Objectopt(java.lang.String key) + +
+          Get an optional value associated with a key.
+ booleanoptBoolean(java.lang.String key) + +
+          Get an optional boolean associated with a key.
+ booleanoptBoolean(java.lang.String key, + boolean defaultValue) + +
+          Get an optional boolean associated with a key.
+ doubleoptDouble(java.lang.String key) + +
+          Get an optional double associated with a key, + or NaN if there is no such key or if its value is not a number.
+ doubleoptDouble(java.lang.String key, + double defaultValue) + +
+          Get an optional double associated with a key, or the + defaultValue if there is no such key or if its value is not a number.
+ intoptInt(java.lang.String key) + +
+          Get an optional int value associated with a key, + or zero if there is no such key or if the value is not a number.
+ intoptInt(java.lang.String key, + int defaultValue) + +
+          Get an optional int value associated with a key, + or the default if there is no such key or if the value is not a number.
+ JSONArrayoptJSONArray(java.lang.String key) + +
+          Get an optional JSONArray associated with a key.
+ JSONObjectoptJSONObject(java.lang.String key) + +
+          Get an optional JSONObject associated with a key.
+ longoptLong(java.lang.String key) + +
+          Get an optional long value associated with a key, + or zero if there is no such key or if the value is not a number.
+ longoptLong(java.lang.String key, + long defaultValue) + +
+          Get an optional long value associated with a key, + or the default if there is no such key or if the value is not a number.
+ java.lang.StringoptString(java.lang.String key) + +
+          Get an optional string associated with a key.
+ java.lang.StringoptString(java.lang.String key, + java.lang.String defaultValue) + +
+          Get an optional string associated with a key.
+ JSONObjectput(java.lang.String key, + boolean value) + +
+          Put a key/boolean pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Collection value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
+ JSONObjectput(java.lang.String key, + double value) + +
+          Put a key/double pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + int value) + +
+          Put a key/int pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + long value) + +
+          Put a key/long pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Map value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
+ JSONObjectput(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject.
+ JSONObjectputOnce(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the key and the + value are both non-null, and only if there is not already a member + with that name.
+ JSONObjectputOpt(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the + key and the value are both non-null.
+static java.lang.Stringquote(java.lang.String string) + +
+          Produce a string in double quotes with backslash sequences in all the + right places.
+ java.lang.Objectremove(java.lang.String key) + +
+          Remove a name and its value, if present.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static voidtestValidity(java.lang.Object o) + +
+          Throw an exception if the object is a NaN or infinite number.
+ JSONArraytoJSONArray(JSONArray names) + +
+          Produce a JSONArray containing the values of the members of this + JSONObject.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONObject.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONObject.
+static java.lang.StringvalueToString(java.lang.Object value) + +
+          Make a JSON text of an Object value.
+static java.lang.Objectwrap(java.lang.Object object) + +
+          Wrap an object, if necessary.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONObject as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+NULL

+
+public static final java.lang.Object NULL
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null". +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+JSONObject

+
+public JSONObject()
+
+
Construct an empty JSONObject. +

+

+
+ +

+JSONObject

+
+public JSONObject(JSONObject jo,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from a subset of another JSONObject. + An array of strings is used to identify the keys that should be copied. + Missing keys are ignored. +

+

+
Parameters:
jo - A JSONObject.
names - An array of strings. +
Throws: +
JSONException +
JSONException - If a value is a non-finite number or if a name is duplicated.
+
+
+ +

+JSONObject

+
+public JSONObject(JSONTokener x)
+           throws JSONException
+
+
Construct a JSONObject from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener object containing the source string. +
Throws: +
JSONException - If there is a syntax error in the source string + or a duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.util.Map map)
+
+
Construct a JSONObject from a Map. +

+

+
Parameters:
map - A map object that can be used to initialize the contents of + the JSONObject. +
Throws: +
JSONException
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object bean)
+
+
Construct a JSONObject from an Object using bean getters. + It reflects on all of the public methods of the object. + For each of the methods with no parameters and a name starting + with "get" or "is" followed by an uppercase letter, + the method is invoked, and a key and the value returned from the getter method + are put into the new JSONObject. + + The key is formed by removing the "get" or "is" prefix. + If the second remaining character is not upper case, then the first + character is converted to lower case. + + For example, if an object has a method named "getName", and + if the result of calling object.getName() is "Larry Fine", + then the JSONObject will contain "name": "Larry Fine". +

+

+
Parameters:
bean - An object that has getter methods that should be used + to make a JSONObject.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object object,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from an Object, using reflection to find the + public members. The resulting JSONObject's keys will be the strings + from the names array, and the values will be the field values associated + with those keys in the object. If a key is not found or not visible, + then it will not be copied into the new JSONObject. +

+

+
Parameters:
object - An object that has fields that should be used to make a + JSONObject.
names - An array of strings, the names of the fields to be obtained + from the object.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String source)
+           throws JSONException
+
+
Construct a JSONObject from a source JSON text string. + This is the most commonly used JSONObject constructor. +

+

+
Parameters:
source - A string beginning + with { (left brace) and ending + with } (right brace). +
Throws: +
JSONException - If there is a syntax error in the source + string or a duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String baseName,
+                  java.util.Locale locale)
+           throws JSONException
+
+
Construct a JSONObject from a ResourceBundle. +

+

+
Parameters:
baseName - The ResourceBundle base name.
locale - The Locale to load the ResourceBundle for. +
Throws: +
JSONException - If any JSONExceptions are detected.
+
+ + + + + + + + +
+Method Detail
+ +

+accumulate

+
+public JSONObject accumulate(java.lang.String key,
+                             java.lang.Object value)
+                      throws JSONException
+
+
Accumulate values under a key. It is similar to the put method except + that if there is already an object stored under the key then a + JSONArray is stored under the key to hold all of the accumulated values. + If there is already a JSONArray, then the new value is appended to it. + In contrast, the put method replaces the previous value. + + If only one value is accumulated that is not a JSONArray, then the + result will be the same as using put. But if multiple values are + accumulated, then the result will be like append. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the value is an invalid number + or if the key is null.
+
+
+
+ +

+append

+
+public JSONObject append(java.lang.String key,
+                         java.lang.Object value)
+                  throws JSONException
+
+
Append values to the array under a key. If the key does not exist in the + JSONObject, then the key is put in the JSONObject with its value being a + JSONArray containing the value parameter. If the key was already + associated with a JSONArray, then the value parameter is appended to it. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the current value + associated with the key is not a JSONArray.
+
+
+
+ +

+doubleToString

+
+public static java.lang.String doubleToString(double d)
+
+
Produce a string from a double. The string "null" will be returned if + the number is not finite. +

+

+
Parameters:
d - A double. +
Returns:
A String.
+
+
+
+ +

+get

+
+public java.lang.Object get(java.lang.String key)
+                     throws JSONException
+
+
Get the value object associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The object associated with the key. +
Throws: +
JSONException - if the key is not found.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(java.lang.String key)
+                   throws JSONException
+
+
Get the boolean value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The truth. +
Throws: +
JSONException - if the value is not a Boolean or the String "true" or "false".
+
+
+
+ +

+getDouble

+
+public double getDouble(java.lang.String key)
+                 throws JSONException
+
+
Get the double value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The numeric value. +
Throws: +
JSONException - if the key is not found or + if the value is not a Number object and cannot be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(java.lang.String key)
+           throws JSONException
+
+
Get the int value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The integer value. +
Throws: +
JSONException - if the key is not found or if the value cannot + be converted to an integer.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(java.lang.String key)
+                       throws JSONException
+
+
Get the JSONArray value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value. +
Throws: +
JSONException - if the key is not found or + if the value is not a JSONArray.
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(java.lang.String key)
+                         throws JSONException
+
+
Get the JSONObject value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value. +
Throws: +
JSONException - if the key is not found or + if the value is not a JSONObject.
+
+
+
+ +

+getLong

+
+public long getLong(java.lang.String key)
+             throws JSONException
+
+
Get the long value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The long value. +
Throws: +
JSONException - if the key is not found or if the value cannot + be converted to a long.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(JSONObject jo)
+
+
Get an array of field names from a JSONObject. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(java.lang.Object object)
+
+
Get an array of field names from an Object. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getString

+
+public java.lang.String getString(java.lang.String key)
+                           throws JSONException
+
+
Get the string associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value. +
Throws: +
JSONException - if there is no string value for the key.
+
+
+
+ +

+has

+
+public boolean has(java.lang.String key)
+
+
Determine if the JSONObject contains a specific key. +

+

+
Parameters:
key - A key string. +
Returns:
true if the key exists in the JSONObject.
+
+
+
+ +

+increment

+
+public JSONObject increment(java.lang.String key)
+                     throws JSONException
+
+
Increment a property of a JSONObject. If there is no such property, + create one with a value of 1. If there is such a property, and if + it is an Integer, Long, Double, or Float, then add one to it. +

+

+
Parameters:
key - A key string. +
Returns:
this. +
Throws: +
JSONException - If there is already a property with this name + that is not an Integer, Long, Double, or Float.
+
+
+
+ +

+isNull

+
+public boolean isNull(java.lang.String key)
+
+
Determine if the value associated with the key is null or if there is + no value. +

+

+
Parameters:
key - A key string. +
Returns:
true if there is no value associated with the key or if + the value is the JSONObject.NULL object.
+
+
+
+ +

+keys

+
+public java.util.Iterator keys()
+
+
Get an enumeration of the keys of the JSONObject. +

+

+ +
Returns:
An iterator of the keys.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of keys stored in the JSONObject. +

+

+ +
Returns:
The number of keys in the JSONObject.
+
+
+
+ +

+names

+
+public JSONArray names()
+
+
Produce a JSONArray containing the names of the elements of this + JSONObject. +

+

+ +
Returns:
A JSONArray containing the key strings, or null if the JSONObject + is empty.
+
+
+
+ +

+numberToString

+
+public static java.lang.String numberToString(java.lang.Number number)
+                                       throws JSONException
+
+
Produce a string from a Number. +

+

+
Parameters:
number - A Number +
Returns:
A String. +
Throws: +
JSONException - If n is a non-finite number.
+
+
+
+ +

+opt

+
+public java.lang.Object opt(java.lang.String key)
+
+
Get an optional value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value, or null if there is no value.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key)
+
+
Get an optional boolean associated with a key. + It returns false if there is no such key, or if the value is not + Boolean.TRUE or the String "true". +

+

+
Parameters:
key - A key string. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key,
+                          boolean defaultValue)
+
+
Get an optional boolean associated with a key. + It returns the defaultValue if there is no such key, or if it is not + a Boolean or the String "true" or "false" (case insensitive). +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key)
+
+
Get an optional double associated with a key, + or NaN if there is no such key or if its value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A string which is the key. +
Returns:
An object which is the value.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key,
+                        double defaultValue)
+
+
Get an optional double associated with a key, or the + defaultValue if there is no such key or if its value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key)
+
+
Get an optional int value associated with a key, + or zero if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key,
+                  int defaultValue)
+
+
Get an optional int value associated with a key, + or the default if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(java.lang.String key)
+
+
Get an optional JSONArray associated with a key. + It returns null if there is no such key, or if its value is not a + JSONArray. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(java.lang.String key)
+
+
Get an optional JSONObject associated with a key. + It returns null if there is no such key, or if its value is not a + JSONObject. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key)
+
+
Get an optional long value associated with a key, + or zero if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key,
+                    long defaultValue)
+
+
Get an optional long value associated with a key, + or the default if there is no such key or if the value is not a number. + If the value is a string, an attempt will be made to evaluate it as + a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key)
+
+
Get an optional string associated with a key. + It returns an empty string if there is no such key. If the value is not + a string and is not null, then it is converted to a string. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key,
+                                  java.lang.String defaultValue)
+
+
Get an optional string associated with a key. + It returns the defaultValue if there is no such key. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
A string which is the value.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      boolean value)
+               throws JSONException
+
+
Put a key/boolean pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A boolean which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Collection value)
+               throws JSONException
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
key - A key string.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      double value)
+               throws JSONException
+
+
Put a key/double pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A double which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the number is invalid.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      int value)
+               throws JSONException
+
+
Put a key/int pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - An int which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      long value)
+               throws JSONException
+
+
Put a key/long pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A long which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Map value)
+               throws JSONException
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
key - A key string.
value - A Map value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.lang.Object value)
+               throws JSONException
+
+
Put a key/value pair in the JSONObject. If the value is null, + then the key will be removed from the JSONObject if it is present. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, + or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is non-finite number + or if the key is null.
+
+
+
+ +

+putOnce

+
+public JSONObject putOnce(java.lang.String key,
+                          java.lang.Object value)
+                   throws JSONException
+
+
Put a key/value pair in the JSONObject, but only if the key and the + value are both non-null, and only if there is not already a member + with that name. +

+

+
Parameters:
key -
value - +
Returns:
his. +
Throws: +
JSONException - if the key is a duplicate
+
+
+
+ +

+putOpt

+
+public JSONObject putOpt(java.lang.String key,
+                         java.lang.Object value)
+                  throws JSONException
+
+
Put a key/value pair in the JSONObject, but only if the + key and the value are both non-null. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, + or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is a non-finite number.
+
+
+
+ +

+quote

+
+public static java.lang.String quote(java.lang.String string)
+
+
Produce a string in double quotes with backslash sequences in all the + right places. A backslash will be inserted within +
+
Parameters:
string - A String +
Returns:
A String correctly formatted for insertion in a JSON text.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(java.lang.String key)
+
+
Remove a name and its value, if present. +

+

+
Parameters:
key - The name to be removed. +
Returns:
The value that was associated with the name, + or null if there was no value.
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+testValidity

+
+public static void testValidity(java.lang.Object o)
+                         throws JSONException
+
+
Throw an exception if the object is a NaN or infinite number. +

+

+
Parameters:
o - The object to test. +
Throws: +
JSONException - If o is a non-finite number.
+
+
+
+ +

+toJSONArray

+
+public JSONArray toJSONArray(JSONArray names)
+                      throws JSONException
+
+
Produce a JSONArray containing the values of the members of this + JSONObject. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. This + determines the sequence of the values in the result. +
Returns:
A JSONArray of values. +
Throws: +
JSONException - If any of the values are non-finite numbers.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONObject. For compactness, no whitespace + is added. If this would not result in a syntactically correct JSON text, + then null will be returned instead. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, portable, transmittable + representation of the object, beginning + with { (left brace) and ending + with } (right brace).
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+                          throws JSONException
+
+
Make a prettyprinted JSON text of this JSONObject. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of + indentation. +
Returns:
a printable, displayable, portable, transmittable + representation of the object, beginning + with { (left brace) and ending + with } (right brace). +
Throws: +
JSONException - If the object contains an invalid number.
+
+
+
+ +

+valueToString

+
+public static java.lang.String valueToString(java.lang.Object value)
+                                      throws JSONException
+
+
Make a JSON text of an Object value. If the object has an + value.toJSONString() method, then that method will be used to produce + the JSON text. The method is required to produce a strictly + conforming text. If the object does not contain a toJSONString + method (which is the most common case), then a text will be + produced by other means. If the value is an array or Collection, + then a JSONArray will be made from it and its toJSONString method + will be called. If the value is a MAP, then a JSONObject will be made + from it and its toJSONString method will be called. Otherwise, the + value's toString method will be called, and the result will be quoted. + +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
value - The value to be serialized. +
Returns:
a printable, displayable, transmittable + representation of the object, beginning + with { (left brace) and ending + with } (right brace). +
Throws: +
JSONException - If the value is or contains an invalid number.
+
+
+
+ +

+wrap

+
+public static java.lang.Object wrap(java.lang.Object object)
+
+
Wrap an object, if necessary. If the object is null, return the NULL + object. If it is an array or collection, wrap it in a JSONArray. If + it is a map, wrap it in a JSONObject. If it is a standard property + (Double, String, et al) then it is already wrapped. Otherwise, if it + comes from one of the java packages, turn it into a string. And if + it doesn't, try to wrap it in a JSONObject. If the wrapping fails, + then null is returned. +

+

+
Parameters:
object - The object to wrap +
Returns:
The wrapped value
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+                     throws JSONException
+
+
Write the contents of the JSONObject as JSON text to a writer. + For compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html new file mode 100644 index 000000000..65a5541db --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html @@ -0,0 +1,216 @@ + + + + + + +JSONString (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Interface JSONString

+
+
+
public interface JSONString
+ + +

+The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object). The + toJSONString method will be used instead of the default behavior + of using the Object's toString() method and quoting the result. +

+ +

+


+ +

+ + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoJSONString() + +
+          The toJSONString method allows a class to produce its own JSON + serialization.
+  +

+ + + + + + + + +
+Method Detail
+ +

+toJSONString

+
+java.lang.String toJSONString()
+
+
The toJSONString method allows a class to produce its own JSON + serialization. +

+

+ +
Returns:
A strictly syntactically correct JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html new file mode 100644 index 000000000..ff0a60a82 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html @@ -0,0 +1,303 @@ + + + + + + +JSONStringer (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONStringer

+
+java.lang.Object
+  extended by org.json.JSONWriter
+      extended by org.json.JSONStringer
+
+
+
+
public class JSONStringer
extends JSONWriter
+ + +

+JSONStringer provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONStringer can produce one JSON text. +

+ A JSONStringer instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting cascade style. For example,

+ myString = new JSONStringer()
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject()
+     .toString();
which produces the string
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONStringer adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONStringer() + +
+          Make a fresh JSONStringer.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoString() + +
+          Return the JSON text.
+ + + + + + + +
Methods inherited from class org.json.JSONWriter
array, endArray, endObject, key, object, value, value, value, value
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONStringer

+
+public JSONStringer()
+
+
Make a fresh JSONStringer. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+toString

+
+public java.lang.String toString()
+
+
Return the JSON text. This method is used to obtain the product of the + JSONStringer instance. It will return null if there was a + problem in the construction of the JSON text (such as the calls to + array were not properly balanced with calls to + endArray). +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
The JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html new file mode 100644 index 000000000..5a03a3643 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html @@ -0,0 +1,667 @@ + + + + + + +JSONTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+
+
+
Direct Known Subclasses:
HTTPTokener, XMLTokener
+
+
+
+
public class JSONTokener
extends java.lang.Object
+ + +

+A JSONTokener takes a source string and extracts characters and tokens from + it. It is used by the JSONObject and JSONArray constructors to parse + JSON source strings. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONTokener(java.io.InputStream inputStream) + +
+          Construct a JSONTokener from an InputStream.
JSONTokener(java.io.Reader reader) + +
+          Construct a JSONTokener from a Reader.
JSONTokener(java.lang.String s) + +
+          Construct a JSONTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidback() + +
+          Back up one character.
+static intdehexchar(char c) + +
+          Get the hex value of a character (base16).
+ booleanend() + +
+           
+ booleanmore() + +
+          Determine if the source string still contains characters that next() + can consume.
+ charnext() + +
+          Get the next character in the source string.
+ charnext(char c) + +
+          Consume the next character, and check that it matches a specified + character.
+ java.lang.Stringnext(int n) + +
+          Get the next n characters.
+ charnextClean() + +
+          Get the next char in the string, skipping whitespace.
+ java.lang.StringnextString(char quote) + +
+          Return the characters up to the next close quote character.
+ java.lang.StringnextTo(char delimiter) + +
+          Get the text up but not including the specified character or the + end of line, whichever comes first.
+ java.lang.StringnextTo(java.lang.String delimiters) + +
+          Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
+ java.lang.ObjectnextValue() + +
+          Get the next value.
+ charskipTo(char to) + +
+          Skip characters until the next character is the requested character.
+ JSONExceptionsyntaxError(java.lang.String message) + +
+          Make a JSONException to signal a syntax error.
+ java.lang.StringtoString() + +
+          Make a printable string of this JSONTokener.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONTokener

+
+public JSONTokener(java.io.Reader reader)
+
+
Construct a JSONTokener from a Reader. +

+

+
Parameters:
reader - A reader.
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.io.InputStream inputStream)
+            throws JSONException
+
+
Construct a JSONTokener from an InputStream. +

+

+ +
Throws: +
JSONException
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.lang.String s)
+
+
Construct a JSONTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+back

+
+public void back()
+          throws JSONException
+
+
Back up one character. This provides a sort of lookahead capability, + so that you can test for a digit or letter before attempting to parse + the next number or identifier. +

+

+ +
Throws: +
JSONException
+
+
+
+ +

+dehexchar

+
+public static int dehexchar(char c)
+
+
Get the hex value of a character (base16). +

+

+
Parameters:
c - A character between '0' and '9' or between 'A' and 'F' or + between 'a' and 'f'. +
Returns:
An int between 0 and 15, or -1 if c was not a hex digit.
+
+
+
+ +

+end

+
+public boolean end()
+
+
+
+
+
+
+ +

+more

+
+public boolean more()
+             throws JSONException
+
+
Determine if the source string still contains characters that next() + can consume. +

+

+ +
Returns:
true if not yet at the end of the source. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next()
+          throws JSONException
+
+
Get the next character in the source string. +

+

+ +
Returns:
The next character, or 0 if past the end of the source string. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next(char c)
+          throws JSONException
+
+
Consume the next character, and check that it matches a specified + character. +

+

+
Parameters:
c - The character to match. +
Returns:
The character. +
Throws: +
JSONException - if the character does not match.
+
+
+
+ +

+next

+
+public java.lang.String next(int n)
+                      throws JSONException
+
+
Get the next n characters. +

+

+
Parameters:
n - The number of characters to take. +
Returns:
A string of n characters. +
Throws: +
JSONException - Substring bounds error if there are not + n characters remaining in the source string.
+
+
+
+ +

+nextClean

+
+public char nextClean()
+               throws JSONException
+
+
Get the next char in the string, skipping whitespace. +

+

+ +
Returns:
A character, or 0 if there are no more characters. +
Throws: +
JSONException
+
+
+
+ +

+nextString

+
+public java.lang.String nextString(char quote)
+                            throws JSONException
+
+
Return the characters up to the next close quote character. + Backslash processing is done. The formal JSON format does not + allow strings in single quotes, but an implementation is allowed to + accept them. +

+

+
Parameters:
quote - The quoting character, either + " (double quote) or + ' (single quote). +
Returns:
A String. +
Throws: +
JSONException - Unterminated string.
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(char delimiter)
+                        throws JSONException
+
+
Get the text up but not including the specified character or the + end of line, whichever comes first. +

+

+
Parameters:
delimiter - A delimiter character. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(java.lang.String delimiters)
+                        throws JSONException
+
+
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +

+

+
Parameters:
delimiters - A set of delimiter characters. +
Returns:
A string, trimmed. +
Throws: +
JSONException
+
+
+
+ +

+nextValue

+
+public java.lang.Object nextValue()
+                           throws JSONException
+
+
Get the next value. The value can be a Boolean, Double, Integer, + JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. +

+

+ +
Returns:
An object. +
Throws: +
JSONException - If syntax error.
+
+
+
+ +

+skipTo

+
+public char skipTo(char to)
+            throws JSONException
+
+
Skip characters until the next character is the requested character. + If the requested character is not found, no characters are skipped. +

+

+
Parameters:
to - A character to skip to. +
Returns:
The requested character, or zero if the requested character + is not found. +
Throws: +
JSONException
+
+
+
+ +

+syntaxError

+
+public JSONException syntaxError(java.lang.String message)
+
+
Make a JSONException to signal a syntax error. +

+

+
Parameters:
message - The error message. +
Returns:
A JSONException object, suitable for throwing
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a printable string of this JSONTokener. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
" at {index} [character {character} line {line}]"
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html new file mode 100644 index 000000000..48e56ace5 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html @@ -0,0 +1,506 @@ + + + + + + +JSONWriter (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONWriter

+
+java.lang.Object
+  extended by org.json.JSONWriter
+
+
+
Direct Known Subclasses:
JSONStringer
+
+
+
+
public class JSONWriter
extends java.lang.Object
+ + +

+JSONWriter provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONWriter can produce one JSON text. +

+ A JSONWriter instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting a cascade style. For example,

+ new JSONWriter(myWriter)
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject();
which writes
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONWriter adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONWriter(java.io.Writer w) + +
+          Make a fresh JSONWriter.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONWriterarray() + +
+          Begin appending a new array.
+ JSONWriterendArray() + +
+          End an array.
+ JSONWriterendObject() + +
+          End an object.
+ JSONWriterkey(java.lang.String string) + +
+          Append a key.
+ JSONWriterobject() + +
+          Begin appending a new object.
+ JSONWritervalue(boolean b) + +
+          Append either the value true or the value + false.
+ JSONWritervalue(double d) + +
+          Append a double value.
+ JSONWritervalue(long l) + +
+          Append a long value.
+ JSONWritervalue(java.lang.Object object) + +
+          Append an object value.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONWriter

+
+public JSONWriter(java.io.Writer w)
+
+
Make a fresh JSONWriter. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+array

+
+public JSONWriter array()
+                 throws JSONException
+
+
Begin appending a new array. All values until the balancing + endArray will be appended to this array. The + endArray method must be called to mark the array's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+endArray

+
+public JSONWriter endArray()
+                    throws JSONException
+
+
End an array. This method most be called to balance calls to + array. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+endObject

+
+public JSONWriter endObject()
+                     throws JSONException
+
+
End an object. This method most be called to balance calls to + object. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+key

+
+public JSONWriter key(java.lang.String string)
+               throws JSONException
+
+
Append a key. The key will be associated with the next value. In an + object, every value must be preceded by a key. +

+

+
Parameters:
string - A key string. +
Returns:
this +
Throws: +
JSONException - If the key is out of place. For example, keys + do not belong in arrays or if the key is null.
+
+
+
+ +

+object

+
+public JSONWriter object()
+                  throws JSONException
+
+
Begin appending a new object. All keys and values until the balancing + endObject will be appended to this object. The + endObject method must be called to mark the object's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+value

+
+public JSONWriter value(boolean b)
+                 throws JSONException
+
+
Append either the value true or the value + false. +

+

+
Parameters:
b - A boolean. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(double d)
+                 throws JSONException
+
+
Append a double value. +

+

+
Parameters:
d - A double. +
Returns:
this +
Throws: +
JSONException - If the number is not finite.
+
+
+
+ +

+value

+
+public JSONWriter value(long l)
+                 throws JSONException
+
+
Append a long value. +

+

+
Parameters:
l - A long. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(java.lang.Object object)
+                 throws JSONException
+
+
Append an object value. +

+

+
Parameters:
object - The object to append. It can be null, or a Boolean, Number, + String, JSONObject, or JSONArray, or an object that implements JSONString. +
Returns:
this +
Throws: +
JSONException - If the value is out of sequence.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/XML.html b/distribution/json4processing-0.1.1/reference/org/json/XML.html new file mode 100644 index 000000000..8be4949d0 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/XML.html @@ -0,0 +1,601 @@ + + + + + + +XML (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XML

+
+java.lang.Object
+  extended by org.json.XML
+
+
+
+
public class XML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static java.lang.CharacterAMP + +
+          The Character '&'.
+static java.lang.CharacterAPOS + +
+          The Character '''.
+static java.lang.CharacterBANG + +
+          The Character '!'.
+static java.lang.CharacterEQ + +
+          The Character '='.
+static java.lang.CharacterGT + +
+          The Character '>'.
+static java.lang.CharacterLT + +
+          The Character '<'.
+static java.lang.CharacterQUEST + +
+          The Character '?'.
+static java.lang.CharacterQUOT + +
+          The Character '"'.
+static java.lang.CharacterSLASH + +
+          The Character '/'.
+  + + + + + + + + + + +
+Constructor Summary
XML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Replace special characters with XML escapes:
+static voidnoSpace(java.lang.String string) + +
+          Throw an exception if the string contains whitespace.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
+static java.lang.StringtoString(java.lang.Object object) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+static java.lang.StringtoString(java.lang.Object object, + java.lang.String tagName) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+AMP

+
+public static final java.lang.Character AMP
+
+
The Character '&'. +

+

+
+
+
+ +

+APOS

+
+public static final java.lang.Character APOS
+
+
The Character '''. +

+

+
+
+
+ +

+BANG

+
+public static final java.lang.Character BANG
+
+
The Character '!'. +

+

+
+
+
+ +

+EQ

+
+public static final java.lang.Character EQ
+
+
The Character '='. +

+

+
+
+
+ +

+GT

+
+public static final java.lang.Character GT
+
+
The Character '>'. +

+

+
+
+
+ +

+LT

+
+public static final java.lang.Character LT
+
+
The Character '<'. +

+

+
+
+
+ +

+QUEST

+
+public static final java.lang.Character QUEST
+
+
The Character '?'. +

+

+
+
+
+ +

+QUOT

+
+public static final java.lang.Character QUOT
+
+
The Character '"'. +

+

+
+
+
+ +

+SLASH

+
+public static final java.lang.Character SLASH
+
+
The Character '/'. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XML

+
+public XML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Replace special characters with XML escapes: +
+ & (ampersand) is replaced by &amp;
+ < (less than) is replaced by &lt;
+ > (greater than) is replaced by &gt;
+ " (double quote) is replaced by &quot;
+ 
+

+

+
Parameters:
string - The string to be escaped. +
Returns:
The escaped string.
+
+
+
+ +

+noSpace

+
+public static void noSpace(java.lang.String string)
+                    throws JSONException
+
+
Throw an exception if the string contains whitespace. + Whitespace is not allowed in tagNames and attributes. +

+

+
Parameters:
string - +
Throws: +
JSONException
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. This is much less ambitious than + JSONObject.stringToValue, especially because it does not attempt to + convert plus forms, octal forms, hex forms, or E forms lacking decimal + points. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. Some information may be lost in this transformation + because JSON is a data format and XML is a document format. XML uses + elements, attributes, and content text, while JSON uses unordered + collections of name/value pairs and arrays of values. JSON does not + does not like to distinguish between elements and attributes. + Sequences of similar elements are represented as JSONArrays. Content + text may be placed in a "content" member. Comments, prologs, DTDs, and + <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object,
+                                        java.lang.String tagName)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject.
tagName - The optional name of the enclosing tag. +
Returns:
A string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html new file mode 100644 index 000000000..3e5fb39af --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html @@ -0,0 +1,452 @@ + + + + + + +XMLTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XMLTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.XMLTokener
+
+
+
+
public class XMLTokener
extends JSONTokener
+ + +

+The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.util.HashMapentity + +
+          The table of entity values.
+  + + + + + + + + + + +
+Constructor Summary
XMLTokener(java.lang.String s) + +
+          Construct an XMLTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextCDATA() + +
+          Get the text in the CDATA block.
+ java.lang.ObjectnextContent() + +
+          Get the next XML outer token, trimming whitespace.
+ java.lang.ObjectnextEntity(char ampersand) + +
+          Return the next entity.
+ java.lang.ObjectnextMeta() + +
+          Returns the next XML meta token.
+ java.lang.ObjectnextToken() + +
+          Get the next XML Token.
+ booleanskipPast(java.lang.String to) + +
+          Skip characters until past the requested string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+entity

+
+public static final java.util.HashMap entity
+
+
The table of entity values. It initially contains Character values for + amp, apos, gt, lt, quot. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XMLTokener

+
+public XMLTokener(java.lang.String s)
+
+
Construct an XMLTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextCDATA

+
+public java.lang.String nextCDATA()
+                           throws JSONException
+
+
Get the text in the CDATA block. +

+

+ +
Returns:
The string up to the ]]>. +
Throws: +
JSONException - If the ]]> is not found.
+
+
+
+ +

+nextContent

+
+public java.lang.Object nextContent()
+                             throws JSONException
+
+
Get the next XML outer token, trimming whitespace. There are two kinds + of tokens: the '<' character which begins a markup tag, and the content + text between markup tags. +

+

+ +
Returns:
A string, or a '<' Character, or null if there is no more + source text. +
Throws: +
JSONException
+
+
+
+ +

+nextEntity

+
+public java.lang.Object nextEntity(char ampersand)
+                            throws JSONException
+
+
Return the next entity. These entities are translated to Characters: + & ' > < ". +

+

+
Parameters:
ampersand - An ampersand character. +
Returns:
A Character or an entity String if the entity is not recognized. +
Throws: +
JSONException - If missing ';' in XML entity.
+
+
+
+ +

+nextMeta

+
+public java.lang.Object nextMeta()
+                          throws JSONException
+
+
Returns the next XML meta token. This is used for skipping over + and structures. +

+

+ +
Returns:
Syntax characters (< > / = ! ?) are returned as + Character, and strings and names are returned as Boolean. We don't care + what the values actually are. +
Throws: +
JSONException - If a string is not properly closed or if the XML + is badly structured.
+
+
+
+ +

+nextToken

+
+public java.lang.Object nextToken()
+                           throws JSONException
+
+
Get the next XML Token. These tokens are found inside of angle + brackets. It may be one of these characters: / > = ! ? or it + may be a string wrapped in single quotes or double quotes, or it may be a + name. +

+

+ +
Returns:
a String or a Character. +
Throws: +
JSONException - If the XML is not well formed.
+
+
+
+ +

+skipPast

+
+public boolean skipPast(java.lang.String to)
+                 throws JSONException
+
+
Skip characters until past the requested string. + If it is not found, we are left at the end of the source with a result of false. +

+

+
Parameters:
to - A string to skip past. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html new file mode 100644 index 000000000..b89871285 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html @@ -0,0 +1,78 @@ + + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + + +org.json + + + + +
+Interfaces  + +
+JSONString
+ + + + + + +
+Classes  + +
+CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONML +
+JSONObject +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener
+ + + + + + +
+Exceptions  + +
+JSONException
+ + + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html new file mode 100644 index 000000000..159182151 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html @@ -0,0 +1,239 @@ + + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.json +

+ + + + + + + + + +
+Interface Summary
JSONStringThe JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
CDLThis provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CookieConvert a web browser cookie specification to a JSONObject and back.
CookieListConvert a web browser cookie list string to a JSONObject and back.
HTTPConvert an HTTP header to a JSONObject and back.
HTTPTokenerThe HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
JSONArrayA JSONArray is an ordered sequence of values.
JSONMLThis provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONObjectA JSONObject is an unordered collection of name/value pairs.
JSONStringerJSONStringer provides a quick and convenient way of producing JSON text.
JSONTokenerA JSONTokener takes a source string and extracts characters and tokens from + it.
JSONWriterJSONWriter provides a quick and convenient way of producing JSON text.
XMLThis provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XMLTokenerThe XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
+  + +

+ + + + + + + + + +
+Exception Summary
JSONExceptionThe JSONException is thrown by the JSON.org classes when things are amiss.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html new file mode 100644 index 000000000..8549ae0f9 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html @@ -0,0 +1,160 @@ + + + + + + +org.json Class Hierarchy (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.json +

+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/overview-tree.html b/distribution/json4processing-0.1.1/reference/overview-tree.html new file mode 100644 index 000000000..4c505b64d --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/overview-tree.html @@ -0,0 +1,162 @@ + + + + + + +Class Hierarchy (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.json
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/package-list b/distribution/json4processing-0.1.1/reference/package-list new file mode 100644 index 000000000..6374a8ef9 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/package-list @@ -0,0 +1 @@ +org.json diff --git a/distribution/json4processing-0.1.1/reference/resources/inherit.gif b/distribution/json4processing-0.1.1/reference/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.1/reference/serialized-form.html b/distribution/json4processing-0.1.1/reference/serialized-form.html new file mode 100644 index 000000000..6f8c4d813 --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/serialized-form.html @@ -0,0 +1,178 @@ + + + + + + +Serialized Form (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Serialized Form

+
+
+ + + + + +
+Package org.json
+ +

+ + + + + +
+Class org.json.JSONException extends java.lang.Exception implements Serializable
+ +

+serialVersionUID: 0L + +

+ + + + + +
+Serialized Fields
+ +

+cause

+
+java.lang.Throwable cause
+
+
+
+
+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Göransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.1/reference/stylesheet.css b/distribution/json4processing-0.1.1/reference/stylesheet.css new file mode 100644 index 000000000..54998c2bc --- /dev/null +++ b/distribution/json4processing-0.1.1/reference/stylesheet.css @@ -0,0 +1,310 @@ +/* Javadoc style sheet */ +/* Define colors, fonts and other style attributes here to override the defaults */ +/* processingLibs style by andreas schlegel, sojamo */ + + +body { + margin : 0; + padding : 0; + padding-left : 10px; + padding-right : 8px; + background-color : #FFFFFF; + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.7em; + font-weight : normal; + line-height : normal; + margin-bottom:30px; +} + + + + +/* Headings */ +h1, h2, h3, h4, h5, th { + font-family :Arial, Helvetica, sans-serif; + font-size:1.2em; +} + + +p { + font-size : 1em; + width:80%; +} + +pre, code { + font-family : "Courier New", Courier, monospace; + font-size : 12px; + line-height : normal; +} + + + +table { + border:0; + margin-bottom:10px; + margin-top:10px; +} + + +tr, td { + border-top: 0px solid; + border-left: 0px solid; + padding-top:8px; + padding-bottom:8px; +} + + + +hr { + border:0; + height:1px; + padding:0; + margin:0; + margin-bottom:4px; + +} + + + +dd, th, td, font { + font-size:1.0em; + line-height:1.0em; +} + + + +dt { + margin-bottom:0px; +} + + + +dd { + margin-top:2px; + margin-bottom:4px; +} + + + +a { + text-decoration: underline; + font-weight: normal; +} + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + +img { + border: 0px solid #000000; +} + + + +/* Navigation bar fonts */ +.NavBarCell1 { + border:0; +} + +.NavBarCell1Rev { + border:0; +} + +.NavBarFont1 { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + + +.NavBarFont1 b { + font-weight:normal; +} + + + +.NavBarFont1:after, .NavBarFont1Rev:after { + font-weight:normal; + content: " \\"; +} + + +.NavBarFont1Rev { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + +.NavBarFont1Rev b { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; + font-weight:normal; +} + +.NavBarCell2 { + font-family: Arial, Helvetica, sans-serif; +} + +.NavBarCell3 { + font-family: Arial, Helvetica, sans-serif; +} + + + +font.FrameItemFont { + font-family: Helvetica, Arial, sans-serif; + font-size:1.1em; + line-height:1.1em; +} + +font.FrameHeadingFont { + font-family: Helvetica, Arial, sans-serif; + line-height:32px; +} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { + font-family: Helvetica, Arial, sans-serif +} + + +.toggleList { + padding:0; + margin:0; + margin-top:12px; +} + +.toggleList dt { + font-weight:bold; + font-size:12px; + font-family:arial,sans-serif; + padding:0px; + margin:10px 0px 10px 0px; +} + +.toggleList dt span { + font-family: monospace; + padding:0; + margin:0; +} + + +.toggleList dd { + margin:0; + padding:0; +} + +html.isjs .toggleList dd { + display: none; +} + +.toggleList pre { + padding: 4px 4px 4px 4px; +} + + + + + +/* COLORS */ + +pre, code { + color: #000000; +} + + +body { + color : #333333; + background-color :#FFFFFF; +} + + +h1, h2, h3, h4, h5, h6 { + color:#555; +} + +a, +.toggleList dt { + color: #1a7eb0; +} + +a:hover, +a:active { + color: #1a7eb0; +} + +a:visited, +a:link:visited { + color: #1a7eb0; +} + +td,tr { + border-color: #999999; +} + +hr { + color:#999999; + background:#999999; +} + + +.TableHeadingColor { + background: #dcdcdc; + color: #555; +} + + +.TableSubHeadingColor { + background: #EEEEFF +} + +.TableRowColor { + background: #FFFFFF +} + + +.NavBarCell1 { + background-color:#dcdcdc; + color:#000; +} + +.NavBarCell1 a { + color:#333; +} + + +.NavBarCell1Rev { + background-color:transparent; +} + +.NavBarFont1 { + color:#333; +} + + +.NavBarFont1Rev { + color:#fff; +} + +.NavBarCell2 { + background-color:#999; +} + +.NavBarCell2 a { + color:#fff; +} + + + +.NavBarCell3 { + background-color:#dcdcdc; +} + diff --git a/distribution/json4processing-0.1.1/stylesheet.css b/distribution/json4processing-0.1.1/stylesheet.css new file mode 100644 index 000000000..4348b3814 --- /dev/null +++ b/distribution/json4processing-0.1.1/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} diff --git a/examples/Hello/Hello.pde b/examples/Hello/Hello.pde new file mode 100644 index 000000000..c14456a35 --- /dev/null +++ b/examples/Hello/Hello.pde @@ -0,0 +1,19 @@ +import template.library.*; + +HelloLibrary hello; + +void setup() { + size(400,400); + smooth(); + + hello = new HelloLibrary(this); + + PFont font = createFont("",40); + textFont(font); +} + +void draw() { + background(0); + fill(255); + text(hello.sayHello(), 40, 200); +} \ No newline at end of file diff --git a/examples/README b/examples/README new file mode 100644 index 000000000..f2c0a4fab --- /dev/null +++ b/examples/README @@ -0,0 +1 @@ +add examples for your tool here. \ No newline at end of file diff --git a/lib/README b/lib/README new file mode 100644 index 000000000..780d5776c --- /dev/null +++ b/lib/README @@ -0,0 +1,6 @@ +The lib folder: +In case your library requires 3rd party libraries, which need to be +added to the distribution, put them into the lib folder. +These 3rd party libraries will be added to your distribution and are +located next to your library's jar file. +This does not apply to .jar files that are considered core processing libraries. \ No newline at end of file diff --git a/readme.html b/readme.html new file mode 100644 index 000000000..3df730a99 --- /dev/null +++ b/readme.html @@ -0,0 +1,202 @@ + + +Library Template >> Develop Processing + + + + + + + + + + + + + + + + + +
 
+ + + + + + + + + + + + +
  + + + + + + + + + + + + + + + + + + + + + + + +
Cover \ Build \ Source \ Bugs  + \ Reference \ Libraries  
      + Overview \ Guidelines \ Template \ Basics + +
+
 
  
+ + + + + +
 
+ + + + + + + +
+ + + +
+

Eclipse Library Template

+

The following describe how to set up a Processing library project in Eclipse and build it successfully, and to make your library ready for distribution.

+
    +
  1. Download the latest Eclipse template from here. Don't unzip the .zip file yet.

  2. + +
  3. Create a new java project in eclipse. from the menubar choose File → New → Java Project. Give the project the name of your library.

  4. +
  5. Right-click (ctrl-click) onto the folder icon of your newly created project in the "Package Explorer" and choose "Import" from the menu that pops up. Select General → Archive File, click "Next" and navigate to the zip file you downloaded earlier in step 1. Confirm the archive with "Finish".

  6. + +
  7. Open your project's "Properties" window. Under "Java Build Path", select the "Libraries" tab and use "add external JARs" and add processing's core.jar to your build path. It is recommended that a copy of core.jar is located in your eclipse workspace in a folder libs. If folder libs does not exist yet, create it. Read the section below regarding where to find the core.jar file.

  8. +
  9. Confirm the setup with "finish".

  10. + +
  11. Open the "resources" folder inside of your java project and double click the build.properties file. This file will be used to store properties required to compile your library using the ant based build.xml file. After double clicking the file, you should see its content in the eclipse editor. Edit the properties file, make changes to items 1-5 so that propeties, values and paths are properly set for your project to compile. A path can be a relative path or absolute. (1-4 are settings for compiling your project. under 5 you find settings for the automatically generated html document.)

  12. +
  13. From the menu bar, choose Window → Show View → Ant. A tab with the title ant will pop up on the right side of your eclipse editor. Drag the resources/build.xml file in there, and a new item "processingLibs" will appear. Press the play button inside the ant tab.

  14. +
  15. BUILD SUCCESSFUL. The library template will start to compile, control-messages will appear in the console window, warnings can be ignored. When finished it should say BUILD SUCCESSFUL. congratulations, you are set and you can start writing your own library by making changes to the source code in folder "src".

  16. + +
  17. BUILD FAILED. In case the compile process fails, check the output in the console which will give you a closer idea of what went wrong. Wrrors may have been caused by

    +
      +
    • Incorrect path settings in the build.xml file.

    • +
    • Error "Javadoc failed". if you are on windows, make sure you are using a JDK instead of a JRE in order to be able to create the javadoc for your library. JRE does not come with the javadoc application, but it is required to create libraries from this template.
    • +
    +
  18. + +
+ After having compiled and built your project successfully, you should be able to find your library in processing's sketchbook folder, examples will be listed in processing's sketchbook menu. Files that have been created for the distribution of the library are located in your eclipse's workspace/yourProject/distribution folder. In there you find the web folder which contains the documentation, a zip file for downloading your library, a folder with examples as well as the index.html and css file. +

To distribute your library please refer to the guidelines.

+
+ + +Source code + +

If you want to share your library's source code, we recommend to use an online repository available for free at code.google.com, sourceforge.net, or github.com.

+
+ +Adding core.jar and other .jar files to your classpath +
+

The core.jar file contains the core classes of processing and has to be part of your classpath when building a library. On Windows and Linux, the file is located in the Processing distribution folder inside a folder named "lib". On Mac OS X, right-click Processing.app and use Show Package Contents to see the guts. The lib folder is at Contents → Resources → Java → lib. For further information about the classes in core.jar, you can see the source here and the developer documentation here.

+ +

If you created a "libs" folder as described above, put the libraries you need to add to your classpath in there. In the "Properties" of your java project, navigate to Java Build Path → Libraries, and click "Add External JARs". Select the .jar files from the libs folder that are required for compiling you project. Adjust the build.xml file accordingly.

+ +

The libs folder is recommended but not a requirement, nevertheless you need to specify where your jar files are located in your system in order to add them to the classpath.

+ +

In case a library depends on systems libraries, put these dependencies next to the jar file. For example processing's opengl.jar library depends on jogl hence the dlls (for windows) or jnilibs (for osx) have to be located next to the opengl.jar file.

+ +
+What is the difference between JDK and JRE? + +

JDK stands for Java Development Kit whereas JRE stands for Java Runtime Environment. +For developers it is recommended to work with a JDK instead of a JRE since more Java development related applications such as Javadoc. Javadoc is a requirement to properly compile and document a Processing library as described on the guidelines page.

+ +

You can have both, a JDK and a JRE, installed on your system. in eclipse you need to specify which one you want to use.

+ +
+The JRE System Library + +

This primarily affects Windows and Linux users (because the full JDK is installed by default on Mac OS X). It is recommended that you use the JDK instead of a JRE. The JDK can be downloaded from Sun's download site. Also see the Java webnotes which contain useful information about installation.

+ +

To change the JRE used to compile your java project: + +

    + +
  1. open the properties of your project from the menu Project → Properties", select "Java Build Path" and in its sub menu, click on the "Libraries" tab. +
  2. A list of JARs and class folders in the build path will show up. In this list you can find the JRE System Library that is used to compile your code. Remove this JRE System library. +
  3. Click "Add Library..." In the popup window choose "JRE System Library" and press "Next". +
  4. Select an alternate JRE from the pull-down menu or click and modify the "installed JREs". Confirm with "Finish" and "OK". +
+
+Compiling with ant and javadoc + +

+Ant is a Java-based build tool. For more information visit the ant web site. Ant uses a file named build.xml to store build settings for a project. + +

+ +

+Javadoc is an application that creates an HTML-based API documentation of Java code. You can check for its existence by typing javadoc on the command line. On Mac OS X it is installed by default. On Windows and Linux, installing the JDK will also install the javadoc tool. +

+
+ + +
+ + + + + + + + + + + + + + + + + + +









+
 
 Processing is an open project + initiated by Ben Fry and Casey + Reas 
 © + Info \ Site hosted by Media Temple! 
+ + + diff --git a/resources/ChangeLog.txt b/resources/ChangeLog.txt new file mode 100644 index 000000000..a79d9e71c --- /dev/null +++ b/resources/ChangeLog.txt @@ -0,0 +1,29 @@ +2010-05-07 Andreas Schlegel + * version 0.3.2 + * build.xml: removing delete tag for bin folder, did cause issues with class referencing inside eclipse + +2010-05-01 Andreas Schlegel + * version 0.3.1 + * the option to create a tool with the library template has been excluded. to create tools for processing see http://code.google.com/p/processing-tool-template + * build.properties and build.xml files have been adjusted accordingly + * modified: src, examples + +2010-04-25 Andreas Schlegel + * version 0.2.1 + * build.xml: zip method adjusted, tested on osx 10.x and windows xp + * screencasts available for both library and tool, see wiki. + +2010-04-12 Andreas Schlegel + * version 0.2.0 + * the template now support both, processing libraries and tools + * added an install file for a library/tool distribution included in the .zip file. + * data: adding data folder, see README file for details + * lib: adding lib folder, see README file for details + * resources: excluding project related properties from build.xml, now located inside build.properties + * distribution: distributions are now archived with a version number + * bin: folder removed + * build.xml: ant build file has been mostly rewritten, now supports tool and library + * build.properties: adding properties file for build.xml. please read comments inside build.properties. + * changeLog: adding ChangeLog file + + \ No newline at end of file diff --git a/resources/build.properties b/resources/build.properties new file mode 100644 index 000000000..394cd0300 --- /dev/null +++ b/resources/build.properties @@ -0,0 +1,124 @@ +# Create libraries for the open source programming language +# and environment processing (http://www.processing.org) +# +# Customize the build properties to make the ant-build-process +# work for your environment. How? Please read the comments below. +# +# The default properties are set for OSX, for Windows-settings +# please refer to comments made under (1) and (2). + + + +# (1) +# Where is your processing sketchbook located? +# If you are not sure, check the sketchbook location in your +# processing application preferences. +# ${user.home} points the compiler to your home directory +# For windows the default path to your sketchbook would be +# ${user.home}/My Documents/Processing (make adjustments below). + +sketchbook.location=/media/Contents/sketchbook +#${user.home}/Documents/Processing + + + +# (2) +# Where are the jar files located that are required for compiling +# your library such as e.g. core.jar? +# by default the local classpath location points to folder libs +# inside eclipse's workspace (by default found in your home directory). +# For Windows the default path would be ${user.home}/workspace/libs +# (make adjustments below) + +classpath.local.location=/media/Contents/workspace_projects/libs +#${user.home}/workspace/libs + + + +# For OSX users. +# The following path will direct you into processing's +# application source code folder in case you put processing inside your +# Applications folder. Uncommenting the line below will overwrite the +# classpath.local.location from above. + +# classpath.local.location=/Applications/Processing.app/Contents/Resources/Java/ + + +# Add all jar files that are required for compiling your project +# to the local and project classpath, use a comma as delimiter. +# These jar files must be inside your classpath.local.location folder. + +classpath.local.include=core.jar + + +# Add processing's libraries folder to the classpath. +# If you don't need to include the libraries folder to your classpath, +# comment out the following line. + +classpath.libraries.location=${sketchbook.location}/libraries + + + +# (3) set the java version that should be used to compile your library. + +java.target.version=1.6 + + +# set the description of the ant build.xml file + +ant.description=processingLibs. ant build file. + + + +# (4) +# project details. +# Give your library a name. + +project.name=json4processing + + +# use normal or fast as value for project.compile +# (fast will only compile the project into your sketchbook, +# using normal as property will compile the distribution including the +# javadoc-reference and all web-files - the compile process here +# takes longer) + +project.compile=normal + +# all files compiled with project.compile=normal are stored +# in folder distribution + + + +# (5) +# the following items are properties that will be used to +# make changes to the html document template. values of properties +# will be implemented ito the document automatically. + +# set the current version of your project. + +project.version=0.1.1 +project.copyright=(c) 2011 +project.dependencies=? +project.keywords=? + +author.name=Andreas Göransson +author.url= + +tested.platform=linux +tested.processingversion=1.5.1 + +# recommendations for storing your source code online are: code.google or github. + +source.host=github +source.url=https://github.com/agoransson/json4p +source.repository=https://github.com/agoransson/json4p + + +# include javadoc references into your project's javadoc + +javadoc.java.href= +#http://java.sun.com/javase/6/docs/api/ +javadoc.processing.href= +#http://dev.processing.org/reference/everything/javadoc/ + diff --git a/resources/build.xml b/resources/build.xml new file mode 100644 index 000000000..55e1bf272 --- /dev/null +++ b/resources/build.xml @@ -0,0 +1,369 @@ + + + + + + + + + + + ${ant.description} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${line} + building a processing library, ${project.name} ${project.version} +${line} + src path ${project.src} + bin path ${project.bin} + classpath.local ${classpath.local.location} + sketchbook ${sketchbook.location} + java version ${java.target.version} +${line} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +${line} +Name ${project.name} +Version ${project.version} +Compiled ${project.compile} +Sketchbook ${sketchbook.location} +${line} +done, finished. +${line} + + + + + diff --git a/resources/code/ExampleTaglet.java b/resources/code/ExampleTaglet.java new file mode 100644 index 000000000..461ea082e --- /dev/null +++ b/resources/code/ExampleTaglet.java @@ -0,0 +1,231 @@ +/* + * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * -Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * -Redistribution in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Sun Microsystems, Inc. or the names of + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * This software is provided "AS IS," without a warranty of any + * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND + * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY + * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY + * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR + * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR + * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE + * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, + * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER + * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF + * THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * You acknowledge that Software is not designed, licensed or + * intended for use in the design, construction, operation or + * maintenance of any nuclear facility. + */ + +import com.sun.tools.doclets.Taglet; +import com.sun.javadoc.*; +import java.util.Map; +import java.io.*; +/** + * A sample Taglet representing @example. This tag can be used in any kind of + * {@link com.sun.javadoc.Doc}. It is not an inline tag. The text is displayed + * in yellow to remind the developer to perform a task. For + * example, "@example Hello" would be shown as: + *
+ *
+ * To Do: + *
Fix this! + *
+ *
+ * + * @author Jamie Ho + * @since 1.4 + */ + +public class ExampleTaglet implements Taglet { + + private static final String NAME = "example"; + private static final String HEADER = "example To Do:"; + + /** + * Return the name of this custom tag. + */ + public String getName() { + return NAME; + } + + /** + * Will return true since @example + * can be used in field documentation. + * @return true since @example + * can be used in field documentation and false + * otherwise. + */ + public boolean inField() { + return true; + } + + /** + * Will return true since @example + * can be used in constructor documentation. + * @return true since @example + * can be used in constructor documentation and false + * otherwise. + */ + public boolean inConstructor() { + return true; + } + + /** + * Will return true since @example + * can be used in method documentation. + * @return true since @example + * can be used in method documentation and false + * otherwise. + */ + public boolean inMethod() { + return true; + } + + /** + * Will return true since @example + * can be used in method documentation. + * @return true since @example + * can be used in overview documentation and false + * otherwise. + */ + public boolean inOverview() { + return true; + } + + /** + * Will return true since @example + * can be used in package documentation. + * @return true since @example + * can be used in package documentation and false + * otherwise. + */ + public boolean inPackage() { + return true; + } + + /** + * Will return true since @example + * can be used in type documentation (classes or interfaces). + * @return true since @example + * can be used in type documentation and false + * otherwise. + */ + public boolean inType() { + return true; + } + + /** + * Will return false since @example + * is not an inline tag. + * @return false since @example + * is not an inline tag. + */ + + public boolean isInlineTag() { + return false; + } + + /** + * Register this Taglet. + * @param tagletMap the map to register this tag to. + */ + public static void register(Map tagletMap) { + ExampleTaglet tag = new ExampleTaglet(); + Taglet t = (Taglet) tagletMap.get(tag.getName()); + if (t != null) { + tagletMap.remove(tag.getName()); + } + tagletMap.put(tag.getName(), tag); + } + + /** + * Given the Tag representation of this custom + * tag, return its string representation. + * @param tag the Tag representation of this custom tag. + */ + public String toString(Tag tag) { + return createHTML(readFile(tag.text())); + } + + + /** + * Given an array of Tags representing this custom + * tag, return its string representation. + * @param tags the array of Tags representing of this custom tag. + */ + public String toString(Tag[] tags) { + if (tags.length == 0) { + return null; + } + return createHTML(readFile(tags[0].text())); + } + + + + String createHTML(String theString) { + if(theString!=null) { + String dd = ""; + + return dd+"\n
" + + "
+Example
" + + "
"+theString+"
" + + "
"; + } + return ""; + } + + + /** + * check if the examples directory exists and return the example as given in the tag. + * @param theExample the name of the example + */ + String readFile(String theExample) { + String record = ""; + String myResult = ""; + int recCount = 0; + String myDir = "../examples"; + File file=new File(myDir); + if(file.exists()==false) { + myDir = "./examples"; + } + try { + FileReader fr = new FileReader(myDir+"/"+theExample+"/"+theExample+".pde"); + BufferedReader br = new BufferedReader(fr); + record = new String(); + while ((record = br.readLine()) != null) { + myResult += record+"\n"; + } + } catch (IOException e) { + System.out.println(e); + return null; + } + return myResult; + } +} + + diff --git a/resources/code/ant-contrib-1.0b3.jar b/resources/code/ant-contrib-1.0b3.jar new file mode 100644 index 0000000000000000000000000000000000000000..062537661a514c2ce97d18948f4f25f7226cc1a0 GIT binary patch literal 224277 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 z zrVv)d{2)7fN;}MUKI)T&T?!xrM|rp!X-xa+OE;newZkwz+>6?^0hwbFw{TjG%gb(m z!^7L|I#8Fe#yDuOLtlVs7)WGFqa%NYjcoU+PI=5|!9vR${RWtSXu5;IIE@9`g}UXP zV|XHo_MMjB#PFmta0{}wg&E;m3^#dM*v;45!>U>EqSh)jXZU^l4)dRzRfK6mWP)F> zhUP0I{54hdi!${m<67_!?)D!=cCdV(3?MyRHlPBK5)u*@2JOX=!+meO83BG@*zHa= z)qaDKIqN130`FuX?v5yWDJEVX2@VOPx9!p7_{07A`*#2iyQ%!X-J}8Zz&QbtT_Fu4 zyICAFL@;zo--vz-Y+?Zl%B$#{eA|vK#6S(dmeOQlW6&}{PUARR&v$GCBj_>qK$CUM zi35QMxkygrQp$qyJg>$F`j&hZ@KBOK6lh*Ogn3NgGFC>5O!aX`t%6*R{pC-z>re9m z&!ZUv^hD~MxXO5$=-5_$p^U|xoay2Wt#)~kRETOZovbQZ7AZCt;{X$Xkt&T-u+NbhNQaNY#25+^&*WgBjvNTHLXAW_+toUeMcanAnHK*+QGQS ziC0Klq^$fMg5%C2*q?{6`e#uT2oKyq%jL4dnoc9pCZ*G1rbrhcL!p(E;Kmw;O*mI#p8&n-8>A>`$Q)5qy0fWO3{ zuWCgh5Yqo}tCNyl)#X^#rC$`)OF?CyWS8bvyaw^<(i)ER zrR)}!Y1ehYA(I`;)ANi6O^?w28nB0H_wLeT;NKUgrhvl=b<#G)8OP(zQ#OJjnKp&k z#E=;_uj!Z`Z`hd7UHjzzmdv_m6&}jY-jn14wSA(*1FZ~IHe$`F&k_jjjyV-i6$MdB zsl`P+CQKKo6M@y4occG0tn#ZoDwYPh#zixL`{}JnRl6XAwiTY2z>7n!8Z<%quQpwU zPaGLaiB~k=96c$*1?onKOs*Y@h=08|JsUncrMwYReCM>u4Pp2-C%;pqO`P0<1m0-h z8G3f`M7K$sZAE!15sj@dQr4V8iH>zq0<_n13B(;WJkyLS+OZ!bma&0qibm7 zA!#}=#6QP9W~k^h3~L$dGVxX?##O=3CGw_-yE^s6GUg({Wu86AF3S7BC$=ut99sal z8U{*WcZ96rvAe)A+NBm3 ze_vG9cHHzOS-%h}vgi&X>STEBZX?^$w9tB9*Pas0Oe^d@_nl_wiLQ5S|I!3L$P&de zES(tdd^&q?`**djps&I!Q5n4#d(I_?sY9~GQ|TCxydEvy?#C`70`f{)$-zKTrJ!!r z1K6o^b{N=3SduuU(i?U0j6;b4(?BUw#YJJ7N|^{xr779qes4JMG?773xRnvY3qfXB zJjq>_SIZP013KahL*h@ljGyCD1iHqE=n{ylB)IM%@eWc4mKjxq1nog$r^`t2w242h zy)xlWBXuNt7@K1iGQwne`p|`*g&E?n3369`|D}IX4j}N=v;hDh`{Lk}{4Yyc`HS@b zXGB%hlttu6;}-1bu%>p6*o)3I(+mdoF96PzBdBkdBk2GBywd_zS9FnZiS!FJ?fJVG z{cX0X&J5ZX$x&wG_F2c~+8&{E zjLS*dna0kC>N4J%9xtvE3}#&FYmG3}^DdJCjx%zVV~I;2R<~HxtV)PmH>0Ox-uTtj z75bM#jGb=}*2*|!>&|MTjqg^UZ#{82;udqO@*PqN2gA@2U=KPvDtIc@?au0KljJOH z6oAy3?h#LbH1dZOl`a+|Q{i%YR*Tkd%I#*a*%80B(e5n=XJcT#&)XZ(8Scnq5xQC7 zVUAE8?YRZO_+LpDfkVC3jss%z>rFbiOgI?Js*JW*gHx+_U(Iw+8fi4BNg>mwSh$Gy zirE}N1|!i*PaAvdKVwd-+-<~%76M22;}vu!?o6HyAP=^;I4lRS!0bvMZ-@^bP_$W` z(!!1SOQM=`1BA{@viqF*;SjYw=A){f4(a93(@IzsGlpNsSD}oZ zzc(GK2JspZobpg7g=O)LpA>eN=km#-fxkNsv;DrOg#Q2{^ak7q(_nF!h`1*+0FP(n zQAYsXPV%RJhOI(IG-3?bmx50phLWWpanC7j4PzgkV&n*AxbqKDJz$T*Y!hLIFX)ar zZ~B>iGPwg^yMtl_s-Zd)`z;92GEN(;(Z>JQbtM?>K9(+01_rWCa=e$@BLp3NR}6$( z>K*u>QX6xK zTXw~;dHf3<0tWdhubQ{6`MZ9u0u(p+~yZ0uTvu;H(w`i})1D$osk} z)HDQ#BT3X8MlI0p4VY!d4r$nBMt|8r>)!9-WG&q|(_Rgk&+=%8zS{Ma@$3}uurhI# z?c&4Yq@dxbN7?R0VVQP4qYN{1o%I>&Sh<94FWq26Z!6D;6xPSP&B>XaaN=M`f*{Tw z*xB_;j3f?dLtG`Lw;(CO5-XbDx54jQTj!?Zz=$X=Fa@NTlQ8s|%|UEk-IOPwRat)G!{JA(lRj0>gxC@WgDiYv=J`6E-%VJs86O9W4I{Hztm3_#FGSQvNb9vnO6>|`GVK^G={@OOjAOAG=Zqdo zqlm7%1*FySbB%xhgD$i(gdLDIe@oO|x=W5NyU%rOrZPKp=#HHWQcSyp9`P(r0F0eGaEz>?`&1vc@Z@|kNP~^v~u#g7lQfl3aa zfMusQBvfXtCHinm2uzeY50TF4F!Wn`!=I`};j6j&68YYJv?}_mQqfrz4wFKPSRgPq zrM_1L=DC6nB4LdyXV>YW=k-#d{R}V1WAX*o-Pyyz33TP_O2j0d?WgDiYnEu`+2AO_ z>*Ky^WxobQhS=)8g^wLue=9(wLMQiEFszO(cCP7ehCN$7swyL-q^`)-PbC}Mm1!Fb zDxtetQ|YgH*BWT<4!dh!MQM|)Xs@LgH!sg@GQyq33b}+n;zIul9pEI~)FL9Cw;v}P zUOmahEFqd#kM?>0rq<&}{nOnDR=~)S?KSG4j@iIh+=CKrsL1B5kj)ci78zl zphHF-qz6y4@~NcNgY^=AE~|NB#pZX|w2kerZrow$x826*p1HG~glMS=V#(Ezjd7NP zwI+PkLg;oh>z|XRf>$h<4qfm|0``ZOyY7^>;B%Wnl;7v&{HL(A{F&JofH)lNWY;uW zZ>rXhK_RF_I?C|d$5 z+UW{j=9^Pl%-r4FToIU+Io@P&b-GiLh{9?OBnbAS+%csb$;no2WsfvC5RMU7^ z9n=;0)lB5amt+n;M3`5N<)<$%I#_3kNWxTqbA_?)Y&ohwngVZorQy%@gYOPnn_?w2 zYSQlgHv0kH33&Ic#uxq_XA-e&a~DMurjb4tGiZxU)G}WEnht%EBY%1QLDhn!J`6X0 zTx-fw{lr|$n7(!o8nZjNXV3O#7xy`C@sT{$LTR#-lbSQqnX99Galrq?c>Jkf2*|Y% z7j_pWYoGL#_##yn=@K_Tl-2-3^mHGpdc@2d=o&9(d!Owi2=O7gpjFOt@}+SEUAFNny~4 z3}W92^m8NW={7cZrhn!mlzq)3nK*TLBB`rkPdG>Mmq2mk;BP+YSI*IIz@nb)UCs42 znc%iZglozb=Cl}YJTTC*a#vi$xkQJ6D!b?wT7w>)d|j#KF9a=m0sFq;C_2T_;u`MJ zus0BwQuMJ}r>9Iv4Jr#{2KfjiGvz`3e7C1{qB0-YQwQy&;F-00-Z+?Jp-gcj!{Bbe zfl?1JW&)V8h+stx30YR_uyJXLTA?|nEv2qd4?4w9b>%;(E#5LXY!x51E#6Z+t`*L) zK|VVa5G*C5H;oKm!-1_X{IZ2alU;BIvt>BO24>^18FW6v-o4te-J4K#sTmKP1xL=o zZniTWrwx&3VLlS|5sd&hctuMgP$6z4tzc3!*99E28IQt1&Zn|P6O(4BS<@4j>zh#& zeuy0#i>yS4zMw6sEF8m{4dJey@HT4u>MMTAl>0K=``)H^hC+QvXMZZ3d-L?dO8jEi zEQ^I&aWhwp*@yJ<+B;^!I=XjMUO1L~e0;zA*CRI%G9_&PFDkMwG5`SM|5CF4Q!4)l zyZw)Jo~`Pxhop-B*>z!J%9suWMpVbQjz=w>Vkj?R#tKHfOP2;DL2wwiG-xQW-+ROp^}}@!$?xSkHp=4SVJ`*{$extd)xI$@GghokGbAYc?Oq;db6~P7xDEEn z@!l^8)L3I(JIsKKNIy0Te1&q~aAjn2;O*7k1}FX&oQp!gCyIRH65t86{e_4%*C0+% z>fYQ2C-DaT3U=HLOZI1)KdCVme=Vvk@}9X@3*1+vZ+92zN9}wrKoy1D9igYqNxmh< zO0d%sz`d6iJ9*k;M~9^A{UjyII>@D!e2xfGM38|Lqi0^gnPv7*_+5R*!VIVUtA#Jo zTI8X{;+t!!{u*F`OfM#b0lhM;Ciz?&b~wnACH^{HxYE^v6s5sx#S|tBI8sYR{0WA4 zusKGFpQ*i2?206i7IN}Ac-s;f;=KK@!47&H%h?H&X5zCj{h);tkHx4PUxzvCR?#rq zJe}nWzeS9%FEs>7@ipDd%#TrMz|43W4aEJlU6x^I z*#+4L8|eF2P=1Fa^Gp;w-}7j+XfZDmq!Ue7(3}g_a0>PWCNUXnjDr3_=BgjYqn&_R zW3(TZIQMWf2F9r}MVh=3Pa{!dnpB_sCVl=Dwlh~E!Pr$J$GW|L<=Kiv@kz&4Q!`38 zm&#m6tsj(TU=(V*dnCoQZqcm+YC{V6*TF+FDL^eICeBq*R-8s*EgE2GwmnD(QG%4B z4-vE|W)EGdG3k|W`j;4EsyKx<$#5E+2+8;AYg!Iw(~*$oGM8kWGgZ#dP)D;w*p+yV zN6T@Iw&n@WbEu*tIS^U46)X2%lWkmv&6Z~bnHIAw3=+=Pnbat;w?5RZ?4tOmr*8KZ zX|(pfQ59Kc`}~AdQeoA;o?G~~P%WN|YE(CB4sIJP0|nZ8Zy~nxgPxkn>nf)YikOb` ziEEg>YBVep-+D%W1iG}iT3w2xZ#`}%0 z54K*RFZQM&2$%91d@2#s_~HCk(|ixzF&V zB!o{)B!rKDD)L)`XivYe|EVExdVubJL69m^XT)}0UQhB3CvffVlaotJ;tEk`%?|8y zVGu9*Gvi0WPVF1RaJKKP=me5b z;1k}G#+tpU%E^7qsK$3u3f(2flrK)s#GCA$qd;Qdi>mVM77HmR+Ic4ys?{J36A?%d zn<~!~g_fHxXIiAt_@$1eY{Z{xmKblOaxzTn&0-30U9OoJ(Lu^J-x(=}Nn9wljm<>1 ztg||#glp87W*aJHjyYw+j4~1z7)GG91u_{?$Qh3U`jF!{1Y9pv%;ejpI9m7yRu0*f zqaCT`myZNQ1%#?f+{lW|^`nDs%CfUDBpFH9-|Yt%^eQT*@Nn;DXGgnQ=-Coa^~%TF zC@p3T)KSQ@5^+R7j-YuOaIzw76%O5GUNK&Cgf0Fe``@ zp9?MxpdGp}k*{+pO9#{}Kd^Lcf;)K}v=O$T>^~^5B1GCDt<_DK^w`(fHaa+ft+9Gn z{Ur9(EH4ejicu@qOG}8^-mt;Ye#0uT;*0Ia>(cV~I*~Sn*G*UkP4yL!_Qc)rQN_J`zv6LwBgMDA2yKN09>L0UmG@-k z_UDhN#f$6GR&CpH7z)}|lB`+q2V$LLDeZdBHsH<81k>jt6KpgfUS8_Q4G8V#0TQaF zGG(0?nKDYMSos`E%V<*ff=^K^IU99~n-lIcd&*W#}OzU zjJrP_Wc3hs-uMB*UA-VG(`zb7J;ds&_U87b4w%y3!G!~$CF3OSuRX+Swh~{NZ&>ve zM>0XiCqSd64;6)X_bCvURcSpKvQ9*O6tW%BZMS?&GYbe0wq`s_E9M=)B}lMO`JiU? z2Sk%`+!^hhv>q{~eJk@|;^&O=BM*2nCkXztrpVNfMMdI&xSXO#0^aRno@52%j7QMo zJ6fHn#{{%>1FUIEqDYD zzehr|er#O({=GS)c&Mtk{^{({eKsMv|En9_|Dp2yM@;emwR*CY{%TC3zMFb#mJqr| za-h2XBn#T{HzOYGXH8$W>i@RW)4X!NOm7ZguUFoUjTgz0@w$S1%8vptRGKIQpBNph zwp=GOxxV{)e}HU%Sz}AA+1Uj~4$-q?l}!nwtzy6yirq%#uFv9))NBV!b>YE#nac%l zQB2hpgU)IQkg+O{RB9@`trubMzf3u=- z#ATv&A=4a{GT|$2Yf5RF=|bkL6^j57?wq-s90=adJ+xI}9S7}K^1P>t1Hv^%=vpyV zpgeU(k<^*^cV>r>laP2U6@n%DbH`8gkd4V_xb^Q29u%6tL7oWC4Ze_^kQ z7e^nXzc>W;IK))dMS9Xx!w&qhDR0`cx|mMB|-hISZC!Zb_sWY0; z5HUh>XXC@PTc~7~v6Up7kPazbXat2QE@}@j*i4aP6%ULFTkSwmDmXs%3x(v3Uz87w zIT=gc8E9<{kgQrRA4~N~`ZlilCyfcgBn1bVruq-}Z+EZZz^<#PMFT6_DpPk@8i7u8 zn0>qY?y%2U`2w)f^VBZ(IUeiKy-vf=$@rrFZe-_oQogYJwP>`2p}c*!9~tH#^ro2E zdSRU#;j;bmt*}Wjv~Ybwv#!IcQkDFlNcuB8F#(}D-es)l|cg#A2Nh;f#y*<_YCtw{wMCpX7M6*g_^!QBm zS_xmZJVCw1x~$k==2qm`rz#=QAM?Wn*o)LVTJc1Ir!9gl8Iqx}%_U1~#ky+9u#7L@ zX&e-(f5477sSaruK-(@!g`~g#g9gVO;ePa2e!BjDQeP4#R#vv^whmUt|EMo*%fIZB zInoVMS!-GA&V^N0y?AIja9c#A0?H;@QM2gnHDeZXWp)+=7vz_GuWQjBNMFD2Qm>}S zyTW7<2s~Tone{B8mqSywTOemUHdx?R==S+hbn8(yc)92Xp$6A!v!i@~VYYPZkk_sg zsgNWMb9Yv3rvg5ttVHgGWl~~mm~t;Z>qA|A6Igj8I=m@ z|LKjWU&-bcn^+kxj}(>Y!uGUE3urO@7SYSg_!z>#J2Kb7f;9CV+X}9vaLeaY(LTwZ z8a4tM1$XiUAcoHk#!lapN))(y2*L5rFdh%hz|RG*shTr=lE%owi&lP69?}i-ScA7% z-jJKIdJ*_6X6{IZ;y=q#R>b;Lwkv~N7#E&N(8Q=%$-PcIQ6%eS+w2#Nyzk#VvGCtf zu0<&v)ktl`%BS)t6fAe{OQ-pKW}6T9jLF!KG-b7u)A7@$!+aA)I0`*015I(*_RVF@ zsmuY6s3R!c(kk{5QHBPOG|K=fbcG^ECe~Apyn1F31)ZW{I}jS>n|!|^cS9CL4)Q*# z89;dp=DYd;_C!a&cALDv;fbCz(Ia^4dU2Wx*Yx9Y9YVl5JzszyOY5x4Bp{^*f12#i ziAk?+F0Xuj`JFCI#L_?QHF{A6%EZqqV)~y{k;1>JTz_G&49so*Pxw9yxF!Y4gc$O1 zx83Bt;86w`pefIzq0FPC{-%e9M%^jDq@moTIbs9zM+G`!I~ZYGI6UE8E4PXRd02*= z<-;q%%d4vsbh%dvM00!}*i*4`NIR~rQByMip zlsTFLMR4|w@FkqE&^XTN`!Lf&<|{~itYA@I`pN$@JoFbqlHi&}EBW)Z`94pZ@4u@_ zN+zZz4kk86CjZHC_kFS!KF)g@n6j-uv!8WptN{V2qTqsv5dmnI%_mJ&4LHjMdQbmx z-1X+X3VYFDE-n-wueTEyYcFFoesr{J!-nj!u!rN!wgx@DdBJ2M73h_7 zGxvq zA=kEDw}a7FLfAA?l3SH9Z5=TkEUuww9#yo*@4&oRtvSyk8P^DMd65Qgr`4iinWh`q z2gDIEvqq|~<;Kc`l;@dU-;6MehZ+4xmb>4W-9&!BkNu#OvLQv6H{hn{4||f()$|pz zsCi>wI1_;%=%RLEn^O3C!gDZy&g`&A*s-|DsF&yC11$>4s~9=0lN^wXtF@p{=zXu)G=|Db!f(u-OtmtSShGBnpzNK-nbFB-FU5?R|&v>+PJu8~@|! zj^imiZDmE8!uq6sDw}KTpkwPL>(cAU>*MJ-Q2C2ZHv#KiZoCk~LnP&VIU&Ej=lsy%G zU8w1#Q=3t#F|(?!-5N%R^W<)ybENh35D@h2aX=;I?Mq|l1J_!iN|GI_m*HS8aZ_XB zF*xju7Y3bRDwY{)xMdcuKf{`<<;~Yn`FW-m*JLHn%^BVoE}Lxa9;j1T>?$NUWLGMH zpAxOv)LO~RW6r%dXxv?q$Ps}OVkF6Pc6Mb-YgmC(FUxQ$XVMz$H9~$Vsi-@*V#~ea zW$vx${#poyrElyFP!w*J-aU-+E6a?J=1}l!#&HGYnM^H zu#F8^*mhxkl0U;u1WWQlCU8G5hsOlbWdSHfrHCb?&RTVzG50ho;ya(XO12@hSsrqXZ8X}) zVs2yhQJk`SM8h=Hgh;H(WYw9A&8zw*yBj48U8+B0hbDG5T5*Dzty;&msy68;rP;%q z5xH0@8obQeV16`m{faFlNYLnx*(ciPe1Kos%6P2`Y$R<22D;bNHt3-JGV}zL?(R=8 z+Oi)cH`d|c;nXM&9o5PWc~mG*Z+L7tqsL919Af|nu<@26HE4FpIx2S2@O}-JN2S6b zFI;28JBEHX-0p2>YVoR1-9WXSagprn?>eb=>2OuAn_{-M+3|+#bb3Oh+kLnznWJ9FJt@#J6Ot<In0>ZDsT}O|%|;$#Uc=N|_rGl{MPks=#a#0;9Tidz}l*B(!|Wbs`*i1b(kU zyx|R9XD>>_e>3odkP@nS(Z9%PL+qJxB?(xmia(Gxd7`d z?k%lIYsKq6r62yvn$f7mH4)d5R7i5|P>{hv+mQ<4O-#;T`?qs>H2`0{{{S^fZ^d*x z{>>Q!AdJ#%8eec7q*xL5dvW3CbS!$nrUKeyY>EXOhn0raaa44OlS^MPv!UbH)2!{= z>Xd3#J=zkp1mivmtBie|j|{k9q-(Q*ipSSMcU760)mMCqFX<}V0x*NSIe%>`s z<;se9Zb>?war;klk$#S=t%tUTJ76Iv;yjm}i$}mXA<^~$Rfn%3k3lFQYQpuw^}Bzx z{7BZvIz9757%@Wn(Rm?*^Vg$p!wM4u5*Mzf8)nu>}pVdfIe~SLBZ{ zv3|cblgR3(1(9JtGSSUY(|=Un1tJCZ}Skcxh)wpjk zU3(2rkoKjvw|;!DB%>e&enX*oE*F=3;?4;0;+dpV(%LZx zDEl`oryP+-dPVsk2K2y_andr4#OrDqv`Fv5&WJIx_ALL4<^)w*;Fq#SWmQ_VM^$@K zIaLQqvXs%1%RMRZDWhmJEb!u5+LUo8HG4EjWh@~b-GSn-=jqh^-cNf7113a4Mf$GRcq@aRQ+A7(UySTZ4p!W?@v(`^K*6!_}vbpDZoJ*jbV3zjvCThi4p{KH~&-h+n?&{0{_M z#lQjZ$uRm`(?I>j5$BU$w1`mIu*!?Qt3c+Dj9fxul-LxWFl-*NhiS)1L^>EJAiXrZ zx+=1&>Z;z8i||txM-N1Zh^Rx05)mH@!ZeJz8y1vBpm;y@UA%B>C21+XO-?6v$aSjo zG4s;raousU^UuZi9B+^xD3g}UeoD}%29k~%14wYXI})1d5v)y7T#_nmuMkzx@`3RB z>FH6pXeUH7X_9-G_{oRO)IJn_zm{r{eW$O!;iH`}0pCk@<*DB*4B(`&)%F;Ovk*`0 zf!T=d6ou|m19Q}JWo}}Ey&UW2bLusQXEpZo!%3go?Aq;0=jox~ujZUpcJe3rL=>BC zi~5LsJm9h=Zzo;3$Z{2YW}3F$xGmW>aSS?97RX9t3X*-B!=Ss@vL8WGkb-Blft`TV-*^&lrEb_24c)~1aKP^DWZ#-LoT75LO&n)XB<$VTrOiS+}; zd@D4#9L7_RAzW8(fJ(H`$oO-N@&lMylXEHs4sE$wUrc}{L$!>m;~?!knA<6u-(wJy zF;}Z%yVfmMQjsDSEU{3N(dv7ux%>+m`4;{z`=HxJt;@K2k)}KQcKx;GONeX1@bL(o zcw0PG7Yp;4*3QR*>o_4M5 zkThrct_j}fWFB7iE*m&#Q^Glfe)v&+cUg_F+zmf0u*uDtsYYqtQY9kEBODn)~l zlPrL~y{I7Bd8b$~{x5q2cGhcC*?87$#!)t;P6-{?fiO6_ll~b)vlT=(cNxxlyy}_S zH!4xv8rw7O_lX*a)VS9Mz zS8gg04r2zP5f?pyP}Z!KsTt=h;x-0CCWX?gPF1Zm=tx+_%gZ`%_uI$Cqr=<~ z&Di;3pjxsZfGFuj0%I%A|EaWDe<>}5B;&sx^;Xx}{-v}}N3|mJF2s-h$SYX#BGwcR z->vaeLnWF7_c26iabE`)x<+0;vFg&gdyY;D+;A>vO1n@ z2>=gLEc^SXLgR>t*;#^GmiQ;dW1f_gEWo?MO7gCQr9^BiwL~kD+T|~!fEEw-@Cmhu zANjX~8iA~5!B!*MNdK7FnCc0l=iUU%6+whHa?t-`&+*_GgE-3Z`a83IzFDZ8>e0N5bV>?f zsAbL>cUqe18&M(G94h0kf-fXk1advT{Te`l`zAY5OcLh*&Cprz1=mu;f6;+Ei)g~~ zcME%>kIInqetebDM(gFTq@*g_2n-C%75-q>?8D2=gcgXYIz9d&RNevTC*HTmulWa} z_+#dSQ&@lQY2kNFLjKTj_NFMqRU3p%8#>ySjITwspM2d(Y|<_xjYSrD1ii zD6i<-Ck%dAT>XOxC-eO$X}Fi|83(%*~G^9FR0(&)llu!5k(dC!+Op*!33s|E?6LmP-u=A zjuIUX+zN)Waau~c7942putrx@;5YKCc&3&uds zBZ3D|hy}BiMAsSWR;NwR3a1y|a!pmZD7De$b}k{xjpIj}hxED8c_&J0Yb5kWkd22! zO-QWPf*6plSh~gtP9E6r;M&M$54K3aTZ( z9U&9%9Ty1-n0U@?jheOc#PEr@K;EucYOrc#Z^Y@MYNB~-1WbVGve*O%xBxTfXFZf0 zCG3S8mKp|)w8W$fM8=sW8YWI6?zIoifp$714&<(JS5LFOq|}q)BFS)uAYOPw)frMp|1-eF!-E?r*QqIr~YOU!CL+EqrJQ-`T`k?6SmE+OhC&okq)I&rY zO{H!~(wQT_lO@DhL$y8t^;QyLPEW8f zBE6K>xGm8dZ7JIY)lt4CYLY5>G{b}9d7sjFs{!*m^r;p zxF?vHk>Ky-v&c$!pI8zt8CZPE@3W3WQxyLA!|o{AG&Mvnp+Vn>qA@AJc-e(@tTy(< z>ypbzZ1ldUB#-s0w`tQ^_(Ou-b@-xZ%?6clF>6xUN*~Y_6<9dyH9s?VHy((6Wd5(PkzNjhjy=|9C3zXgw#rqkAjl%ETE!_ob>c^1q==a>;q0k5C*`rf= zoj-L{6&^Oq6l@+M$fX@}iqsPGApQ$+Ou?Mv{-Eq!;1HTno zRfz8x>jM95g65LQ+y&`}UoJ7>z`+Ah&KD|907Rnu9K_`{fC8})d00`NFl$pFQHpR# z@~EH0&uS9%B(LMZ3hTL|+2QRX&lGir=*6Nid0o*%9P zxYpoBtcnQ&?aH}!D_#Cu;lBi4J^O#jzy7+)(gu=zi^ml*;{6#dhKV|TkNyz z{ofZ6GiN7bTUVREi-^*g4GI$~Uv@znvKF-WwT-ItoRfb$vM2l-G(~-o!Rdt|wQ7o#n&8tDLvQDqjtuxxvM+1G=wqj{;rh9kfd;&*;vir& z%4@RQqd?mT7RPs=sbNcBitTzeop}KLz+0QEl>eBq=3bk{4UILq#t;3|r-!}PH@}1^ zbQSu;W&KFM+F?PrS&L}eFYgFo=&d(`gz_f#@cyINqx@*BJj&@V=40@|v&;dFOdD@4 zYKQSSOg{lVJ?MQCb#svZ%DuSfYDj_10mxuu5<#dzp7IP6Z@?h+sKqhlsIoD~6^VXZ zc4S_Xu!u&iH2e&q{=magX_mB4c)*|YK)x>i^^ZazU_`km{`Td|^d}2P;J&=XiAu<(Of>W0+@oDi>|F|opq{eTUuV~XlYYPA%9&}OZ2&l^tq<^m6P*E=^OAp z=W*P$E-2{7_p>xdciSWH?Az>m-?z(F`7i4+zfvWLtPQ_ZvA$T=pktu~4of+9_Y3ZS zE;|w56oH#%zJjeN7X?8Wjbi8&@W_qH^EUtumBAeh3lF`rqeI_@oCRZc?eFfqdCT=D z!20B#>lCiw>NkfHx`%f}&2ZW57!xPRo1E zX|YreJVTD_oWbIlEtRPw=*9}6({0rh;@z7Z_uVTJ+ywP_UumCkt4hyxDONv@npV{o z+DL?!FKhnJV(S8>{;8+lGFG8X-!4s^R(et5iaX~yI_bE;&{S!XeV?Q@b}}3LL_`R5 zX!xVBt3cnV7}+su=H1T>Xg&rE2{|R|>`8+epqF}U->BVN<}CIh6@qR*4JIna?Q!JH z0DXC@t4W2a8R_QHtAv>p&CI1+e+9jv$fC407Sx8zmaCWxTAvW`P$HJ7t(+1pzDTlm z!-xHQqgiX$gvBW!@OqLCD~YVgIB#vt*x2ggI>Kl5d=wgBn;jfxIRFf<{^St;s<~p; ztG$x$urL5+|NWE{ymZwTtiK0`XRGA~vqoFdhqpf6pbRkJ>#EqZhPm9|e+>-Y+D#0OwO{SMEO_+H%;jW3M+bFwsB6ue z(yeSEPru^`JyD?bq~ZdM^U{8T z^_{iv>CLg15?;fo2En$;6mnPp0EsX&OMMfNIjQXYvwf+i@3ERQf$A-uIUxQAT3iv2 zRC`ube{y2q4QcAhiHg~VAB37F3;PUfpS;{+?|zYqnd=gNH5*WO>mZ{gC01PzL0-yh zt=Ly~S}S<)hbuVmxM*}MFU=yyIL;GcBXv?XT0JGONb|RKo&qccTLry(IAu-g$!{u% zeN<>0pPxo?Ak>Wx^?V&2Mea(hZG(;THc^qUXzG3% zI-G&fmU={G#L5TWntM?g!EL(_N2vW`$D+A6w4y;L&IqA=zdLI^Rl;ne@y)Cz}gC3xbj zjDr#Mc2Bs{?sMK`#`R6gx0fP+dNaM{Y&fhh!4y8ALbeh60@MLHY{*3K4q{9$739TC>c_dC^*mL zXWF(UQCe+;;_`z<8>pUZcgNA6%Mw<{e0TX-c*OT z(lKb8)PHM_E76$Vq0LoG>>rN;x7Ga+e*-}_)jBta%9FGkZ&q7C*@+jW`szGoZ8(HW z?lMTuPf0Y3=HC-d8bf5S#mpCi^Sv)13);^ZOu*9N^BdNX0Td0TaCF0(M9lscnSq%v zf#>w&eKrBt*2~8O)Lx;b=SIAbb_p+|0>=?XXVe2``DlDH-r$YD&BX<#&B{@mUDAvq zZ&Co!8UFOA=5M%a(z7*-{QTVh^k?jeITvK6r;T(b`Y?H6Zkhgne_I z5`XXsVGx)BT&BL?9+gf(+;r$_j`j?|I3wb0JBha}`(y@)boRIEe;I(KJbk~?=M3=O zLwbdbrLMp?9BjVLS!)ghpwaQi@L83cUkVbhLB6jQ40WDiHN1J}t@qseCYGEVO%=qh zUF$wrfHz}ak1_3jC~&IV5%>ZsyhYsb2#mM#$+$c|I~bX|%9EPt$&06ZX9?pciidYp zVt24BkF;DbxcT1xncmkhb`S5V^%$JVo%(I)09)iq{9oxgPy?wYg)Z}NzPba>R?mPA-f)U5em&yJp{J>BRDNR-f}O7)csl*& zb+@qZ;flc`{?F?IK|w$$EiW0Sx`@3n;6ej7lTz_{7!ZO_B&s4eHVo)suM=_Ifx7o> zK0fRi5gKp=>X@<>>6oZ5KJxhS4>w*E&tF*-=F69q&z*Ju)kXCGbN~3;o{KDX7&p|v zHWL_g)ThCM`GX~khnHY}HSiYGQ1rhdCzbdTUP(7*`mMa3=j4JG!Mx|Is!BtHLZk#t z7tR@TNN%4lSDS%`Hor_U|fI3ijm?2#cO}8JV^zePUeexq<^()Ln%{2pOao zYw>?#3fL`|11?8*=+U<36#OcwFBTaQ*HqT?4G4bZ*=31Ul@3vv6gcd z>@cRAc)hx*4KS$SDqc(bub0&JrlYfypoMJ_ZqvkKCo^>QV}xl5vRDiV zMUr807>-4yGO($x%<+Du#~6;u=)r-N-mbVg1s(g!A6{Lj=`f>(&GMCXW=RtkGOw}A zot>f4f<6{{zgd?p1rj|Jj*5{V6;4wfIuXrV?icqHvjd0`EsG_rf5(l&e2Ihzy0j*C z{AOB@fSVv8di)ku(U=x?1We*Xze5^UG`1j(u~;!=9-9G)*wKbP4Wf}=T|~io#VX?5 zc2yD=2Ie#oo(oghXenETduanKCH9J_VVxmV6^w-|9enDYLn;X-vv-1;)?mK|ZA~4s z!2($Yb>u3EOBQSh20A4*hf!mffG%On{8eRGkoTm}u~=WTor}BbAK{R=Mp7Y^BUd;( zD;YK;pdYQPnjI5d)Q1;VM&h?%%TZzbu`q5i*|dkAG(Tz#efb`&nZ+LCH0EQXbK_Of ziiMzE!68^j=Sn~Pc&X8Gi6BvA&T8%N%7*iM;aJz)EZ9fcm@{<7Hc~N|2F5OI8ySjR zCZf|N2{R7XZsmE&!JyY}!6T^Td2E%zsA)lJ*sDR+!^bdMdA2ys058T&ZVs)av@r1K zQli#e81A!KCZ)ibV2uJJ`ZA~So&|1d1#^Ff$R1{ETYS!T~ zM|LXkQ>UCE`jVgw-|oz-6>s$CnGkNBy+qq;zATlvNe+#`_ILDDV*2#^ZB;sQ_hes_A#Le5jI4qM0Vt^HO%F`ea>q}2KGl1qo5-BSkT0S1 za+(HUC~D%)??P$$&ET&eAMP{P@Ny?^7?&q*1isVP;$A;LcNvgPS0^my?oB-@{4i^t z2w3X?;01`6h-V27=@+Q`CiQJy0b_pcIpckFe|OFt{N?njZG%vqK%QSDoV=V<9#x_n zdncJ#`huBr{1glO`pZpppqP8|YCX51-MC0)$UA|hl1RBYz`RIxd6s$B=9|teNwlgo ziW=OSi#7&}0XuZ9of2PCX*;pyuZrPVBw>QJwKc*NOx0iV^aUiYWT1Ir178m0sQk9xE+4 z&qcTE=o1T-nd@&2M<0dPYs!#&ej3bU@?uuySr(4?Fp(J2v#hq#ny^?mn?yEvj;y#z zsfh_K8ndK^O<%gxobK-t4Vd(0S%LNWYjktnyIgn&PAHKHIsiXDl-U@@8!RSH?gmkS8(`I zNoVeQ?}7|^R=7xG?hDh-gK}GmNcT`@=x_GfEFTeIZKIV*Y@nq0JdDdxanz!s%FY*fn7 zY>S~p685$&p3(~%@Uno)lU27Pla_*f#0XGgES$JB?`;>H=FX#oOERjc+ua%r;)(6Xqj}f85mc5kcZKOa zll)0SXL~8#jwn3xwRKZxwRJf|`b4@Tor5D>noH5SRGs8c9qAx<(IDB5Eym%&d9PJ7 zuO7XpR&wbO)F-~6!={y4g!yTV3^2Aq8F#08#tLuQaLOceRR+lfl&+dRbK0ell)cBK zPZ_-!{HZ3LpzW2a^kKeGB0P+j)IaahLM@hnpVjXqIo3BUNH$Lnj z_n9z@*vc(ccBtw5c>FC@2L<37$VtaP$Z9V(qEyEuds4Yi1Ih$Pf1S$=#*&02RjVZQ zE-F>Z9CIsT(#A~Fs5f$HalmbY1Q3RzGMG%RlhVx6(vMUe6*EbwOM9&xbuocF@-RuM zqiEdhuICiNvYAR6_43p!x2icJKk&O@J;+hbR*tdfugX-AbFfjsK4^2iIC-|1MSCqX zK206sukoXJ#YU|ON52`zsE16vd5twv#+q_*K+_&Eb_ps+B7TQh52Iv3={pbGqbI%k zrp7F9IU`}iqPD}>6_ej^&Fnrj!ZYv;I$2zs{awW7(DEHU*C=p!sM3(p1_iL^q8Jq2 z8_LtKu}(#9knrtCeG8Opc=R$gyHUon|G6Q<1zPML|25bJhPVPl%r3|^G(Pgsb&VTj zY#2g~wpUo-E(vSo9A_^lLZrN%N@fp?6uO>Cp`MaTN7db6h7`YCogoD(!=~ZD1C{X1 zPuL+r6R`9oLtKM zK@8yxh5JLoqY*8U+9Q@1`m2as=+YCN-Go*I&cqBkklNFh>H2NRTzG1E!ZswW_-fn3 zHiXag3~|EDi4VUp$)nuDGEE`h;xY||x%;Q?^=A?uk}}!u;T`Cz1$1U};SXZp3(;9- z_gQqr7FJlr#C>0?26(fn9kK->3DVaMyi_!ez!WOr3gdN+;wjUnYrb(_2HO)uMe-2h z><#eK_BoWC3AWb;@bvbr2YQ;I)urCE9!w|*hyOy-Ct)M+y9Jcoz_JY`C#VqiMH-i| zVOiiE7>j6*>!&xf2%k?VOcj*qjVq>m@W_sM(mO*^k5XOiEp&kE>gWe%xasjei5-$L zCT`tK(OtgtJru4ulqTEhSQ4~2fBa+NDOALlD(FwE@%1yg|Njfh{`al?-yh2VS^@v> z30c(*Thvc~apU|#jt7>2t^qv41ai2tdEh=`QbDPvh=)9Y#m@&j_qyXpO6d>Ua5@ycMb^>fU|=a=Ip*W={n z$LkG^-{Vzd1P9YH7#>9-C)t2G)g&dR5^%5v6;Q}ooacuGo=?qgP=jQol#{X>fQq3S zWhB&7Os!=n88L;bqsCa82dBROYC%#()ly~1!Jo2Q5r9Ljbsen3iYi0Jh$aI=3flLJ zDvp6uE$$I;6M~Xjh2r**i2Em*1K|Fw5glp~0P+S~(V|C47y^!3{hPB%dH*azfSb}i zS@1Zyw}J_t?Xc3_PJhb ziFGsub}IRHITco_i6PF@ncOt>22}W>f`|laLD^NN9C^8Fk0vh8XIrghn9i}CwLz@C zVdM2`xsJhrwcbiwj`1R$gD#Iv+=dxAEP_#J%sFQ=hQj$ujRoHpW0Z#MLm5F5)YW?d zmVBg2y|nHBl7oF-<4(brix*Pw~WN-J5Xa6$YY`uqg zN>w<=7P>gTJ&3kkaklx1gM`bO6vvpzX%f5R4^;WO4Wwf)_czw{;PM@sJ7}j)2aM{{ z$>n+4aCc!f84P#*e4N=TTPoJK^_*%&mq8v8}lMKxA3b&ie6elUd90wqihi0}v7wcgVR}TGW zd68E_+*yqWc;i>rd6ic98u;LlJScf`6%NDa27YOvuZ1m+e&4gf?bqwVbq_~3nDs#X zCeBQO6l1Ig74tl(FosJX#07%4B3eL^7Dil}L!>EgRFJNAtbGjY^$kwE22Wga4MWKS zNkqn-a`PDS6+VG-^(;3IQzDc{r$?pKe@|j(PgUatQ#y`L4AB>fO?EAS(m3HJF`Gy= zv@J|F0cKi@eW^CMNCZ#&bh&7LrXws_(pZlgSn5DU$ z43cxn7)2`j7V0N5sO@fn@{uV5&D`&<3LFqEVOTgy2G)WMv!B3YdJ1=Wr9GDpYqrqVUKu&$NN<W9#b0v?#v3gTMK>H z>^Uug{pXCB!dTQ0i=@3(1Wy*RM7pIeW&r&MFyY(-$X)B#QkveTHN0u5S~5P@X?tP) zDT>ID-!Dj@zdWv+aJ)%DOiAb4MFJJgf48-k5R_;0LYc{DLNllZ0q&|A`CEqQ30iuP zY$2qA40u)Y9{{%W(D+Sd_HLCLIAO{;Na zyRy8fS^kmITSL@GasjVf&Cn9>fM`x_+yDLpz0g0?;8cswNaLNtqXQr!1&@`jR^<*a zdBg&AxEEZn)cNhyPB4n%J;<{Fzj(sE>LjjwrvQ_Hbf3@xQnV)hfIjhHmIZ9iLQ1Wl zKF%R=P8QiB=ZR%qp*~0qKiZCo!5uO}lHQjDO=hT7+OL;8L5N7IaQK7w8_K{QmyPHc zs3xWkNu#VgmB1C}*hTn;Hn`OQV5BlFqTpCiPG>eOD=`|I1ZNI~2P%;mPXX~+CZ$9+e>(vr9uIYezDU}*QyZ`$y=?yj z0xMUTc47Ky`}TfT-+xYyG&XTG2iP!(nAm+z3_1QAqz9ak>lHu^o=Th*s*L#dl#oi< z_9aSf37Z{T4GaVG!5YgFN=8=Oi(ZzMoZjmT!KhoY3Zp%s%GyV zo;_e+pY|FS`C)fsC?C(=0he{zbteIn%38pXniF7!*acM3Z0Psx@MDnk1VPKOII2n& z-QbuA->yAHS}c;(qmNvnmiJ0WD`)CFtQZGoD822o11gIwcM?7dw*z_IH0HxcdUP)1 zSgSq6dbGX3RPn4MGiAJxYO+PZYun$|?P-@^h}fe{^B zvqa^zjfCUg6WVB0jaZLBQZIs}XJQ;RinCO_D!XK!Z8~!Xm2$=&mSnSB%pgNDyNNkv zK?NKt2L0pL1M>?93TcMs=kK@AN{&>DNx%NV_$-WC&EIh=eI==&%$2b@a;;arv}X(A9Jj_NV+!tz z@KW|`{?ef*X9%pGp8vK5t7Wx)7liV>N{ZUL5auQ4Tjh^jvA{Y7|qZBl$ zGRt>|V!jDH+$wl>HGd}&`W`*YslNT4oDcQx2G5DU1c_7KF>7iWEN-5=fJ^yXVf>(C4*utxJaE`4@WDg5_ zDry!D7l;QJ4KU}`c4<>d=b9Z~cw#=Dx+T`3n0i*!8oRHP3mlBb<{0@=&q~MKBCr>H zQzx;9VAi3rN59*)QxoN5PUiVP;EOJ>Gcw%7O78Et#`f+s1udilijXI7e{8ilN)IsH92ff^n;4 zs>8BW<~eUVoEj%B^eA`c)5uX~**l0e<)*ZIwj6Jl1755O47~AWP?yO~6N91uMc6k* zXBI_i##Y6)?WAJcw)MxhZB}gCwr$&1RVDdTaWd(dewgmHrf02t-p|Y3`|NLjhyqor z<7ocCtHBq;Jt~^Vr{|=~&QaB~jql#bnbjCmK*AWPgte+g7=%m33t#H=r?VW-q^)aN zcDILA_1TR(m-xfyIlDiD{@W3CD${-IY7!Z!lNo2>Fok+UoVI0aVe9n-HQecsr!mL# z)>ijpI@PC;4jHUKfbLwhtHr)X@yrlrCffh@=S#-CF$urvDJ!ND)(=}S*LV4`I9C?p zX{}9PTIlGkD6xnXg)P6A*wnxM^R>MFaKURGp&VAFXyV}wabLM07D|90cYSR7T_1Yb zG$e;djPnnyMy1E1*9{XVDk#P-utP4)O&!+UwcG@A+TelxDoOLDoprBdq^eLn%byEP zsM&@foRR0!fN7bUJ@Yaii4h}d8)5?v?AZRhgNX^Rl&iD!=soHV{QlV#n)aYALSiyG z)jJ+qXYZUHT&jG9nmx33s9t>K%NHvG5e8BeyBUN|xSBb$9J%(?Sz2;NrZ6$s-)TzD zIsIYf)G@*vh2z@h6cpZt(OYqsP066jCX3cH`^hZO(6w?Nn3*n(T#N2HYa2AzB5upM zvAdS#v%lnmtH`iG$-yB(C@F5$s@QsIa_3(QQ5`F$oU&^@=O(GW!=c3JcFn_C>oS5u znj$3<$(dy3VSR5MRcK&3zL%{zsVpwR^Cf|D%4QNpJh7)AElu)B=(O>{fxwJL)@ zgXqmpn)u;MwLxU;9q%(cPLH%tDF-YvQH*8J$$Ll5auU+HVPZ)6<59uX^+*O)%BeaO z&;6yjImqU*@%wmoC5hH9{Q&|B$k)I~_WT0LahPMFrOOl`wkr=2BhMeBlHvyX0+;Cc z3%-H&%bc{aK{|pW!G%juZ>92t1xYvWNCBu%;88*2OiTPqKU%X-1i5ayL+gs*1m%g;-o|6>t8y7G|yv7vr_#k0-Fz0T26tD6)w>POTW=p{u<{@@Ge=N+> zBYiw8)=6?5%G1euuqYo0c=jjXNPW}iJeIF{{E`gTUPOHp=AM?O<(8vm_Y)PrT@C08 z+*`||NIJU^wI`)EV8O%1f<*gac{8r!e&x<;!xpd0@Zd~0xXgzCAX1jWabI&xmX@oU z;(@$w*r7Ki&Yv|dVmY`Of_o7jR>0#Xi{l5U0dEBVvo}s8fsYeL^p!E-`g`fc-&^_| z`dK(vaEJ&}i42lIzU30g&L4GLXI9$C>QEkyzkbOfdb)Il1P*(Ywd|Uaec{|~_ z?SSf!8ny4zC3i2il3?Y-_=|Cw*CW=y;^q9sYAGt^pGEi7flGd%J+$!dg@Sc#aeN^N zfR3c`gvh28-?;aaK9nKzZHKiNG$1PTcHKkq`($!*j8NWqsJ-%`ShHi1cDdr>@dOvl z@R@B>CwBO(JvJwFwMcHCqQm7ojX&Seo0~rv6L5U!ChdZg$|1vOoN-&a(*lu%2xsnh z%OOK(e#I2EL^jElmo<(84|5M+*N+>i=hVm~7X;NE6RBA$z7%TNi91MvAUW&wP|aoy ziS;)v1tNyn)Ezg()Qcj5kA{5}+t}h)_MF%&thFp{ljfr*3r9b3AL5a?UH7_uH$nrr z7DX-W$=JM_j0DKDE_W)5UQBWn2_+|ThAMPw*2w{eKg&Esi34?+mgMrW6tQB27TmSr z3j3!aKR#m>9R6C8z5mP=oPTru1Pf3;rwZd=y_O7rV{c@sM`9WQW(iGM$NW|0>6PAJ zegXJX4$bG$slGw)yBF`z;94vM2!M6^vuOshrw5H$cw2$IK;YF&md)uvDXi9<4xY^S zFBQWw;;Po$()4^^kqt%2>dea?jG8qD;HduxDQ8k@yf|L;M2noe9Tj19(n*g-TqOe5 zHv>0>>VE7qwpo{vj11}Yi25p}CiPlwT=gZim1LjyVx8fz3(x!%MxdKl+5rtekeu2y z?Sv>uPCuTRBnxpzSEPeGmexYwMvX<6|A-a=uwq>-(;W=lDExua8G(W%ZezJ8CmaJ; z`MeaR%$(CY53TDu9Gc0+XmI-H8|~*MKDzkw@))*X)>*^$Iz#KQ$tNL;^Q zt4kNls>U%L|22PS$#P7#UWjQ8w;4V(&eFn*m&YxeyfT-u<7St`>J(MIwqa4z4Y*^; z(%AQmWvp}HkyySqEP!p44F`;2u4Z38A@p-i|C#;glm6QK)8C;E7*CsmT(m2^yuet_ z+&ZuW>8UHi2B4WOG-uDRD;Qk~-^W-H)?C!-%34$9wJS??Ws^8+$$AAKA}(iGhBEB8my1u}X`ubs4fCV7)3*lU}Y*;qI5_zTfQxJZaKc&{-cT&&1@*|vsGv0r@ zgm+ZL-dFDGvLDzpm$Am5skG%5{?3qIuRM!%P!7|vtKPDUrn~&Z8J`!ttsEfpaohPw zdV@aJ9)YW%`Y4^%&YNxb+obwq`Ewx;v8@>VuQUnqXQQKD$Nb*yQj8V*@jKD%%K81YHnYNi$TyCYhjJAW^& z2CW;f{8;fb765*tP2D}ioYx~HE%4A6oFhK54wRO zVj*C)H2GyBP?_1BN9r!ORszLJy5N35th&8 zl`XU1k=O1*y<8Iud~mzvS|`VX?W+YT>_XG{q7zjGDcEp#7$IY(h@ok*{B_&4BDlue zQC}nai>0@wL#U&}(pl7o@4v6FE6{18Y*WGsHr{Ui*t*56zpwMtVqAv${%b?+r15lQ zONK?}Un-(Kx3?jr)!#t5cspuFwF`Js&w4OgJot*|oDFCwl;jVJzpv&}|KJl3(gz;6 z2D)_*_p=X{(cin#aL$oVB6$yQ-+tiE6H|XefZnCUL^*_@ISgz&46pwg*cL24ztH#2 zv$=#ckQslr#y#V3%~@ZJiA9*mzO>nip;O9Ipoym#jP^jOkz`>C-fUlbFiHyNXj_6e z(xC7|_JRLH8_Ey4SLh)Jd5!wJ%y_iBRsVc`T$%-o7&k>kY)J3hG3l2SiXni{b3?`n&LgA1ST0EM;xZr(q+MNVcNFP?g81S~ z)VO+wseE8h&AZSH-%O{?r4UhAkTuZh#C;G+^lt4t%y8aF{w>iVr)e!VdRPt+iWlae z_$6-?MMq&q;{jVhDl(_X0T5R5cS+L55D*P!A#>pi&-GIY={~&*ahB0*WM~sdO~!-Q zMON{;aO{ZOlp$9u>JM4n532vlD;uV3z94dR?~B^G_ba(=rn zl6Hbb9mq}xFP&bAdLJE%9@5Ij0(HkXP{7g>cV68_ceOEauT^b+ z8Qfg0xZR_-ove-o=Bpp(h8lN{@rL`Nu2=QnB*YH?m_!Id9!7%`XYx&ZYFzVW{fa=i z1KG0S@^_iX=#!Ce(!2^n3#Aj~vZmb;^v+UHGB7*3xG_-=4Lxny_G`E(HzLlMka$AH|KlkTdl>z`x)%{|sdB4OfK2~Suih}aXhQ^2ZG9lk=RkqfiG6D2!3FX95{V? zDmsdM4u1SW6@xM}_CsO^3P$4_x{bCV?yWy|-iJTLgmv+qg$ zJDcwylfHNO3M8s%%T0dmq`nLLM~V+$-uQr>z>-_C2($cE#l5PvJN9)NSAlpzM`M&pkyzQXvtSRE4{RndRDXaB}>BaDaBsdPc%!j#7jNP!5WzF zpCyLn>Mh^5zjV2M->arjzl_J@Ct3b=pCbHKyPWI4&|kUiar(xet1$J{B(cAK3GM$% z@*!1DbPW{r&k}ct>d3bOs^yd}#GFMzVzAE^po<;(S@Z*?&50l9n2 z7k+{aMf*m{clnKB`b!<9cNcnP&6?$st~{m9WzBWXikAIzr~XKeVRI?2c{LB{x#d^* zD_&W1%WicmoigV*JeoH6_o`U>Lc<(OGr!6-vUmU%0N>PncV{gq&0@=>HBp*AiStdK z`9-g~xd*c%;qw<-4?2xmZ>`O2?RS_2&0=Hv4;xg)uZ6UIW}_EhBMa z4%7c^dD1TQ2h|!mGbhaA#N5+=%xB7Nt+lmswcA-qI_STx{i}1^&fK{(V_L463(d5f z1hxcnC(8v2dwge8k9eaot zr&2936$#8_*fe9!`;ml+6AO{+VNU;JdT*ko)Yvuw>G62a344A&45mh2!uaN7PHX69 z>d_?Z~yG zR)B{qX;_~*TRzBv_&|j+6Wx+2J%*fl8)ZxH6AEw}o)9Da$rd1$!Gl_<=kCLr9xqk! zs8+{I7~?9oIEz1NHtT;0Re0BBM!udfaycW}-BoDTF*-%OM3K9j#pz=b!G%|eUcx$? z{oTuc%U9+~<>>K@oj3^Mv#3tx;u=P%g4ZJ+>uU$MJHk|!^o(vWU zq}so*YcDcaS))l4#b|@VX&At^lS*9__1R65z_Z~T9wP~Zpl!W2`-vOttjGkE-OJVS zn#-HAn{z)04Fq`~q|;g%WOS3x-tI2!Bsh>r+jk6+Cz&}~z7-Nkj)$%m>E#Pq?l^0U zpBd4ovKGHI>lLbS1zZhu2}Arc{pKtYU52ESYO6L$*le`76^oXVOVmjbW%=1K+$ce0qqJ|0-aLk6pAS6OhJOafFXdyMDCUWbH(yw7V4Mn$0~?T z^p6xkfF1tmp5clOrhd&2}XN&QQ8j~#qV+sN2#Yrn-57zK}=Zuu@BWy6hPT8z)?xb0A$kW4{q zvxm8`4~}qBMiRqi6fAlP3oFB1J*)%O*iU-17Z(HU%QH{)cz4i$>~_<{Al`;)ra6tf zb&j*acE)T#_+}5qSZ&eggf}9`Q#?e{2`^%bv({+_Y{GU{V<$5YBa@`an-A^TY(t%> zAH1o2hCmI*Z;vh>rEY_T3-Z$upKu}?NSsDUklH`E|B}7h!~B(y;8)i)+Q^@#zJp~W ziw`kHjQo8d589`lrLboZ|hA~ys#6re{$_9sWd_NDaHAiQS9Y06`3j-3PwZg*m z2`U$MYdc{B1%Q#{!{XrBqrVKRx_do4R7?9bsRvyRo8=SsjL<79McXu2McAwuMU??9 z?>Zep_}d2@dgif`n3$FhHI1mNl?#lTaxa+n;hlXWh(np-CmYf!O<`a$6IKyP-h%1i+ z8XpN=H3$jY6@`}zPENv2Zet|P=aphv;TxeB-}4Msyr2KE!~28LZ}*~jfbML5ME`!^r}kv3;YVoHjW%Ig)Iy`=AayK2^39tQzELPr5fkl7B#?JngEvK?K-PA5FsRPxKc>?&h*wjU)5OE8`1Zl%7~CCuYl7F2}xL^ySvQVA@_J^|UlTezc0C za#2|P^*k*HMmq`k_c0Z!er<6u_z(0lgDbK!Y;`3>f`X8X@u&&$RqQ9;F^=bS$5@*? z(cOwyYJyd))q>Zvn?EFPF*+)K$_iCXSCWt7u$6t(#CN&j`z)`1QqSN(#>DKYzq=cr z;T=heDYCd8#pmo^B{V68nz*%h^p`$!iGSE%%=Pv*$X8}X^gXh`;z$xTb5y=3fo++T z1x7Mtj>LpB(-nx#*#=LNRb}|q<<^$Kx?=Gbd^N5GnVWA#NDFAMPlHQiDb@$c$B(3| zC?c)L5j4hCG{X*c#hM4B4>H$!yY0AwAG8j~a$2e@GxZkhfnPcl-%-7^Quj-K2hlcp z0yq?7myi@5WI#> zw=_x;(v%QYD1bGZ{~&Re#XA%r>xm}oH>JQ&xm7>*bbD3SAXDnuX^?On+eh&Llp zP&j~R2o%QW#St1PvfihRPkc!Q^@YP9$#K|D6LYtk=7}@ET&Mv~l`UR% zGkA7KXAQqbqga|7*^+uihf|1ub`Y0CbG3rfa?02{m|c5&1;55^VSRFEshQnI(cnZK z1={3^IE-RIa~l`pnt`K1%|E>EXGFcA8mCmV13^KxE=9B6V5hl^?mFss2i&CkHsO4#DYbMcA*~;QfEYE`HobH25(HsBdgi zmnjpe<4O7DNrm%dAqEn2JH<#PP=wSJu{@cH{-jM`>BPm4N6>6HCt;wR|hPJlQU%)GV^NAjz*xT^&877aIf{HN;v42u=0co*k z`qOmPf4OZR53C%k({(xQS9fLoQv0?fFK)|Z_ElR}#A`o|)FmL*1<#)V)vVjF#Fv8YYWEWV6-Bq5OY1CGg}K_OQIh!$ z#H01ilw?TM6l!4YFuwn6}5#Q+3%Z@ifT@U0$GF|(zWNVRqv!^v< zpH`-t0VvJ9gtU0=nBm0AxTMI)EoHRbTDpRNNi5S9?Mt*wv~QFbPzXvy_H9EXmiN`# zu)r(AWZtX86l&bnpzUuU`~KA235)zJ0q2CEtNJ0XHWQkBH4eq$Bp{mz_kj*Jzat`ksAu3^dVCfoo zTAcP3)IXuRw0TGH%Vk=oduQyu(vhq0gY{l|hxJ{*a{A3bQtG?+ zitl@TB>P`@C-|SNU5x*x0j70F`yU}KEABpA+Ihf#?DS^rIn@^$QvdD5d%TUfbkp)e z2^$>lKoN*B_{kXSVRTmv!XzY5n6=Pc0O-Gl{ySX!clWk#`ij&s1@tAM@Vv0%nzzFY z>FDahO+Ppv3G5lU!=N}oLb2F?z54IA@KT{iaNYpL86KEh`JsF@PeA3kk1jAKufdv zlz$vvAUW(cIW6_I8j2I(J_)LvCtmSgYNZFML&o#Ow~)+U^Qz<6ls9x6{f1fFCm=f6 zd>bHUjlIf{=k=Vr?IKOenP4Agzse)$)jX@be?Z!g=Rma9;{O7scw@;wWS2u z?A52%V^vZGSc_==(&jd2ve3n0EglHw!}-{#V$R1b7g>>F&Xp~-q&cP)s*3-CHYLL~ z?z*PM^2@inSyptn&O|qBGIKfSorU(eD^$YrIu&WmAte74!XT;VHfz=~J)DWf@g_~wfjFscBibQnxBFuS?oXofVxZS6SLvwoz+*9OwB)5YFr0Fz|GYO` zl9Yy!41d269ngYF5S55E012umGJrMar*W62oTtu&k*98me^>LGd~|oZ5B6VYe#*qo zmd9_yIwQ1i6Y2kH=9jj2admbxb^VsoYXDpTt`5%shsRNy{-%q+iZk9H5teJr76)NU z|ARxBT(3E+1dF7?OtfhmMQS)aL)I?B*gdmhrlz@>+_SQEtE#rQ0$^inbF1#dwVFuT z_HU2q)#WSs6V&gOpAG(oaRy{w)t|fliTC^?$7RoD@6_%*h5Fg0L4tDmec{PwqWLfYLh=t(ERjk zCPZJLrMfRm(D~mQ`n>efbhA5i?Vf@oaqa$+BRbl?sv~m@L)AMsjD4lMSqOu{YFdMo zM{|sQl{>r5_jq~(O(*d+hl=OA;6F6aeSs>jIYY|Jm=}a@JH9GRS7Wi6Ijl1xtPWdc zHaL^NOw;*x|0zH$2?uEnPQveSSZ5nF{gPd>;BGtDQJn-do1NaCRHT&C69OUJBj}Ld zQqhT8Y^QysjM{95$rnMcd2aL2t>k_#mklr!r`g4)o|nmSRV!j}FY#PqdmF2GFl^Q% zaC)<8NEZnDULnBlHXUlm^8-@p=bbt^Sr{7J4BS;OlU5p6{)%Z7u$kn_(h@0SgFV>` z$(B+nQpjcMQ)h)ZBi5Y0GG07*Hx+EZoIq$AO`~o97LDh5bzS9wcpXx{ZUJ>9q0PDK zM^W;tHzg~FbPw|>;?Kwx@{p)X0AE*EE&S?^~?tihvdHIkO?=?n%$V z>Mv%b*b#!EJ>UTAYAZ(HPqkAsg8|?mtzAyiU|Y&6c9UHYFv$!9KoVI!gMUu!97f1R zgd^Wk{d>>7iOjkJCA`bO!$J%g-7j)|t9ax6{6Vp)ShXi#0&eixu+7S<3B*h@Z)Egp zcdvi@%@%e3Z8$7=l^J(F_ZPY=nd->9(Q0e?^SYl_-L)PUu5Q&R*Vp$d7~rYwyy_DC zV=uk#TVS_U+{DN9jO&Th>2|9OkKW;vn-A^l_Z>wp?bC?JCwZjX(_>$+)0g-RN=EataumD!Tvxc+-@N`9M-<`cdC9f90Pa7 z-It^ibdVP8t$E^ruXd3}bO?cd=1dk|Wrsy$0bbd!5)~V%hU_obo8x{m7WRpfagC4}AOG2vah)(D1$?8Q z69z%YaW(BvdJz|wz2V_`eKwJgKts`E^{?s>dXIuAbEZ^3D+$3i6DE6cR8jm}*uHU5 zPwcdg$t zmp1e!4Yw&xJ_&JYSU4GRaebKFhdlHKTS9a)-jqJnRu@tGx@l{ z?{v0zS2;_)?Yh^rwws)|5I>B^e5|Z&5SsVsYUPdBkN|NJ+J90sO1HXN5W%f&Eb)j+ z_%)v?+bV1IV=nx`w>Pegui=gyTzb5#41T8S@T+HUp{A4Rxqb!e)b4htwH1dAPwE_g zREM$>pGc{Toh*#0oO>y-@F299W?9&HQI(M*r4jp8h`1XSI@`%=+~TKi0nngkS5{<|xGB98=AX3q-h#}WI-NKf*~ zJ6}OK`Nyx7qZuHdA5o$g7|il}N|Q>8>;^UtHcke%P+$_I6&*Ny2w! z{*7iV`c3ic6{AF*0b#eYrX#Bx z6Phg#U?6WTSd({#(H$(8;v!?IJ)(py?6^JP)2kDn5EvUyrvt@=aa7NGhWa~DQ_8ncK0jC zQ|2~c5m{|lNq?_dx88*PQAVd&j;1DRai%Op%L#Wl9%=gik)6X%t2dp-a8*=c6&$Mx z%l<7wt0P&^VyNb~lV^ni51+3nG~y+0|A=?rv6l(qBqe_A9NLi#4QL zcDaL|a2z?B!03AR3#0H5j&I}+?_X$oe|R%@?O_hOgHg_;2j6VF&TF18DQy+5bw!2I zbJVd+tudY(VoJu6qi{5U#@!59Z1-`;vxzg-ojP7*P1NOlo}wttXLpTA$9zyXm~&%% z^_R@jM%%9sD4J^SaZ{F38Z2i)H=;U05Yj$k|ByN0cDHLs7sxOJ?)pe~8v^S}# z>`lX@=mXGpWqat(+lKf>5~YJ}U9+GxskWK;I#(x4zu)xmZ$ZOe7)0KML|z=&f8IjA zns=TXH_r_=3SmA)vifslckFj9Hb~jJhP|||;W&Ro#xx3PI?lp!j;lby`&$qV4+f`O zsS6YxaB({=t&{r!F@2xQg$CP2;6IhQC!|os%H>b7|Ko~e!inD06TaLNRw!oaoM$Y= zL=nNUP{MiP!StaaBf-S`3l@K{6El?(wNOsBl@f!$FyROz&*I)T3Y|Qh`b1IpJr1n| z;=etDNQp$56xg5H17JqA-CHz1|C@|Yd5ycb|C{kY`#qD;{ZF-2!`vBQ;U)IJB>?}) zC{MBbPT4{k|I($^oPx!KJP~e5i%F(dn+x&L@^pp>RsjN^;B#WE2EOnra{Q5Ve79&kPjf!4T zdrd2v{+fPXi<8~f+Oy7Bme`zDm&2?8A~w1hY`7k83D){sai_7$oa(@VZ))hJ@zH^g zG<6$VB=ppEsx=rcr0MT&NUZHFe+1N|m%MEg&`52ks^;{9qP3UbdRuDt+;OK25uL`$ z=-jI6$*K=tUqYKWq5E@61<uPpJkgM&DJRqOZm^rhtBL zs+vwCfI-NE%${PI|G)ucQLI<$#-)|daItcuXUu5o)f-Qg)ez8F~tE_T7t@nvg(VM=D9zx*%cWG9*)FLdef0K1BsS~xEEjOI%&fBy$! z=CcT>L=yRlugD)zp(xod zXCPqgD>@G9YSpdutL1CkFzL|PX*<+(b?t0CbVu9P>fD>#TJiS3dY&v;VN*sG13I7j zeCGL|Zq9djdtUp?^T~>|uXu9fo#V!;-Bk2a6bba`W^n;?=@zx@*CpEZcTl;mc-F=2 z*(IAdr#zSKQq8N=sbDTa>Fr)GB20!S=J)rb21wqQ897ctbB{X*r9_wbCaT90xnnLV z3XeVd=gfZ=g3QYcq9^p4*_Go=aoaD{hByp9LxD~J)FpDatg+fAoAkMEuY@r>=OKe! ziwBA&J=$4wNZ+4^ho^o9eJV!vOV8H1w4VKA>ldz^hIH5KuqThs|3C|Y;b4794#{U0 zo6a#ayHyW%zTL6E6Nd#aPZhmh6tq8E#yq40+7(uPm5xPm1IDKFAMg2jY7c#See;1& zJ};o4o(t3YXhTHz_rtgWd(*c(t5fS(J@1k9eAFf{MPmukAOm}L?-}X++ zx2@?n^G^z<0QuMS-uGyb0DXZzk|A$(qrS?!cGs=>`pNNYo`CHSvM)|UwmojP74_CUw=mC;h*?3eNV*knWBLFkni>h|Ft?zH1V$=){-bX`jheO z8JX!zHU4#C`YSm#K=y$M@Ogdu<@G`y9z9}Tw}fsZ1E5WiM$U|KRCN{SHep4q+xxMD zL61B>b^1n6=^@M9$v>!O#?(SNoOB;&A z2#Ly-D_0*sl0O|xGa7bp=EI2*M?D?1YVzgB6i%QzQDQ0Nv8J3xi)-3IiJ?3`e0BDz z-JwJu@RsG&%FC4s4*eX)U0=LPBlBvUSp8k2_K9+R6NNB>U7M<^w5Zu%sU2ubotH z5+8upHPYtfKt-c-&ccYzmN0d5b68W)(Y~=a%IX}qwUQTU@S<=oqq2t*rMw^luymLI zRLO(+O|!43+PkI$5>o}*M14KK5_*z4Xhm&uI~l>1p}v@=fq!{TiEV?bVG5NEnw}oX z1ta!vlT)mQV~^N+rk&5ltEE-j>W0-Ylf|wsYz)(p{oAzEEj4=`;`n>v%n`^^An_DB z1w}o#prfA6FGx9kvfd_7Bz)(f;AOPT_7dYeD+MmX*Pd zoSx&-!dt&*&3S?|Bhwsf`Y99*l@_;FDV$waFAQeQYI~-kwzH?X;pc{igF9PYq4r@l zt@T@k#e7%+>YH3<9fBQ~@cOIPmR@=~5YGeZ#G*$OVE}?D|%dnr~j$k7=}6zVYtXvAoiWCa7KQwHd~V}Kv8MObW` zgZd?Pb>k!!TNDY5Eknz?7eWIJj-|B5wXLM5=2SKP9xO5Ris5c0XbWR)qC%k8hBku=!QNPixv)o}uTjz2vcaXwiOemjR9jEoM)PZwEadicHRpDCEsn?xS)Mu7d&fm$#0(UkDCO`v?^r zZTl}1aVEM9I8>V|Nx92L8+F_pdTHYZ)w1M1q#$X^!2?_&8T2g-g;3);In}p`R?hEe ziEm33W6VPz38DxgJwz#?#IR=dHgN`U{3Of{aThyZ^)26s))7-gn5az%)>NbntZmF( zoTSY)&>IMSQSY4T7K;H(q?1ru5_%?laW!fygmE1$H1zQ15a^Is&KhFlw2w zyoIwJx7xNAP6D*?yQ+&=(q*UfppmT}n(anZtf^#haM}$M7YzH;L5UOsRoq0->RIv6 zAajqA9dnVNUAgskA1}`8W^9mg!u88OkwN@1wjp_imWbZ*@i?w}S?8r*!dY0C*v_jo z=GDT6eM?ZPkP3Snzz znQ;I6Uxncnh2gX+!|WV8N~6FsVZj0-Tp+s}u5~CbphDT2e7OYF%p0b;oI1UQlQSBW zzIAsxVF$ue)awjc^27bcRfBlcLhNTi(Wq@hv`YXpT!H?e6!!@hnYI;mJ}$#7ARM=N zOk~A6NBFDsiJfCl$)6*LhWRh#VqOKko!n2JFC1RMMZ!J4 zXqj}Sd=~ij2=iNN;b!wnj+{C`lzwRofAmS@W$vk1OmU6t@J>#HbB3=afLz>=-K zaBFl5a1ElPF)(F2L>eSB>Y}AYP>TpD^YfK+CM!NvcI{Z?GC_OiRk`l+k+_wE5He58 zv{-P*Di@3_PHgMF`;c}S(S7iAm6fIY)PxZ2tzHAM6|7Mtw^{?YN`~b1B1p)~sBAR7 za8C8OK+(n`LXYtF@Hg>JozAM2b!(xu`5Ue}4K4rvf%1*$5xSLpEyoH^tAT*W^x094 zdGa8dC+QU8xfJ0vcT*iFT$zZ%AucDHIVo#Pcdf>Wo$Ov3cgb;tD{3tRLsA2UrQ~%y z^)x+%WuS))zeU9?h=!YWOj#SLAaVr?s<0k0i*a@tBm0VY z@S#cTo|3S-!(U$k@Sm>4ZZQYKeGDJi95J@AI8*3-xaui|ZPg8B?h}i=nc;7>U#yVh zLsmBA&Q~phCPQwW!KZnNtx%v9c8P{!hvC=4a*E`480swYtyWiP;n8#}%*(I!NNHPb zslQ-0s@w}nF9PPn&BzKosvEPmOe;8Bu?~j{89w%!DUoiA4z#Q*WLHX2^_bXJPLqw` zeT0H<=tdg6stf-`S=6Dc)Tw9|x4>;8qxhGvfGo&~-fFHB@A=k5{fOa$PSFPCV8RwL*38jo+63lu_`zEj8SIas;Fb`_ zjN2N#Q!Kj}auL9I#a`GDJnDl7YcA6Pd;KQZG~1F^%HVe!TD;(_6B<=Gx)*VnI^SevCeq{OdZ0CF<3MUtv3Qewb+P9 zW>WBDCl^KP*1LksY!Brw}kM2X5?hfO^DoV`(4o5?ngX`wXX0TaS?r-LERuV)FA+X4TSy_E6q_XH6Ds(`Z#a zFWW$g8p*k%V*Q&gcK ztl&+gQQRq1Xdsl4B1q2lT~v^r&XMfG_$^0kiwZ}|8u+}=5F&NE&f(v@R(4UMqEc+` zr?AowoNq zPt%7^JFb}Q;>P967i7D2|DkCYDDrssJP}|&Z)@yd9)3OP3blti85p*>PSztA0I!Qu zF>2D~cm?dDWg$`8i$;1rXE`-@7L+&4Nj>IX?T-Vk?Q|uV$%_y#D(jj3+_ds(80YXK z=bT**<+su4`*g(=v(FL@G!C3AdJ$Q}(SF zB5?hckyj*Ka*~@2^T7tJSrwEVulej)7W@Nb;{J$H_(JuYy)rD*toghKB31{i4nD|3 z|JDWKzAAJ7aeL+5`h#*uJ~a%t=of@^Bt%u&g*3%0QU`+D&Q1tu3A~2!DxHLmMal>! zGjk0>MlBc&Dk71rU{>-D4Ts7jFRq{#ALi69KFm~hvS24=!~Hhd{C2v}T(rU=Xv2PH z+=^3+ZOhVgMM5kbWzV6Vl$5o?XDF3!iIuUUm@TE%5v#VMaTu%!*Es%~Rg-;e2`6hWauT?1{t363$iqXTN4niFkK|y zuF<9}pq~+@IDfEwDG4-%-&eelhu&8hI4R5r@fB5NFSD|Z9wR8f<1nYW2mcC1mq#$- ztGv!2WmZHl5n*=4J=e|*#^6iv6*WxqXIhbR z+0B~_r3_vaiSHUqY@sL9frd94~nv z$$)4!Vd?cdI)1QnF*+#fbqCof3U=(x#?kdt)yW24FZnxuMDH~_on~e{4yAk{f@kFv z(Lf)@tyx_OXDvuCU-48z81VE`Cl;yrK%TJ|hgcAX%%>BTYOm(9cQX>pKD%tYbC-vl zt^G2-kzeGyd{A}u25hRb8!8jW-NiD-id&i>wERYAxG0I{$^2c=tl_b=>Beni99F$@ z?j4P3%%vcB4#R-?C9P~8mQBYe@T3|V>Y6w<0b@*nq;&Wr8S{;gprz*HgcloGX7N4* zhD}i?`>u5;lTYknnSGP(yv)j6IaU4#l6Ii>Eeawk0KL|kTd+PiuS&uYykM0{wb6B6 z^;VcRanY%YU*nap_NSDMOu}+jmaTAJ{^&oQ*ue#!pN_r!d&I|a*x>V&uHxBtA~L)c zzqK4Z+cy511GrYS%PIo+8BI{%g_yx?n!T&V6QtU;^ zdvdofk-YKm?x`(!E|()?JwVrYVW6RZ!2K@VCyw_QdRh*+1Qm!QJc$DSWGs&G#3TSW zzvWBl8?am=(-Tj)e*t1Ulri0LzOo9+8A6UqKD)`>;jMsH<)5`zrUVGj2Oe3z@ZWqf z@XrU7VLcm4c^_djsDXHYDfEw3B2?{{?Js>xzjA>%ulygNK}yvA`Ja(WUg+^JRIhAi zE7G+Z#K41{R3O$X9gUJ3irQBk_Brz4g=p+vxU3(@4ZZy-cYd;AHvW_N95`oDRZ&cp zT}X8ejSGE8&kV}}pxUzJ;s`Fi_;#s<;#sflr&@cyufCcVE$$4pMbR@Ws|R6|J1FZv z$CDeUiS?AEMy#X1qk*WPGvJ`dR(u~R0$?|0B?AGVD)%C(qK<^M1p%f=6!1s00mL9t zKfh*~{}*TP*ko&zZR@VIZQIsL+qSjRwr$(CZQHhOth9}jRl9b?t%`l`Irn^+5%UN1 zcZ@b#@4Y>@u({l)tenwmQ!GWWa3{&dS#tGqwocogs&y8_4sZ%)WJ@bkf%u20Z zwoeoxrE;w|Z7~XBY-`v1PYF9VylH3Q<_@EL??ARsf>a=|0g%IlATmO#Yzi^_HvI2^*LV~ga zkg7sDWPk)@KvB-GxdOj5mSF}-St*jVJ4i`*SJ(+RUvohI*8Tc34)D zSf#8=FL=7ty~Dd1b$a>W5`P}=;TGQm2tBeUCgAlGe*qAFLG*bE0ZdN$BNPsu35w(E zI{^rou*QdDNlCW=Q|qT^iL*D*)Z57yFiM^hs=!&C7I}KYc7Ot$6$&#B271IuT|T&FrjrRHj! zx`)T3fVka9=?|#>f+Pj@1Q{B}&Ko#s4#ru8RNZLW@m<_D7sW()^R%{*v2->{A*L&g zGnI|Unn&-KGU$CaL|=d=x5O=MO67K>HLOkVYV^DR3%Fe72W1L|)ffUchr*RweMI2M ziAJ~$lQ+^9n!T$RY9vHwUsn|L8M^_HKCW|~BRH8`!G@>io6_t6@brrlqz#@ZlV8)7 zT;w&>(8Lyj{%`2gf*ac@WiG>m?*XAsV{-%_5e7_mAd+sJS}^+taGuSEpKGA95;<;I zWZq$jq-IU4L~A8@OIxFp$?V7riDXmDVZ~1*PC7F?(~d_h!ryBltE^MIc#`ph&BJ%p zn3v3P=DFr$o0?EZ1My1byhWzmEo1fv zVosMd!=B#<&K6H_{T=y-Bk4~!^nC+8FWP;H!IxCwRO5h5z1F*6rbj!|PbNP;Q6LBg z37u~*N0pin=sO9@liVFJvGImm4-A8tVK+vkE)BpigkN!FC3@>l*|dUVRKYHa(Vdf3 z5ZM-(gq2M5pGFj-*XRS#mE%ZS(GIw6N1SfDk<+`#(`NzxL8#bE zs?yjQf2S&h)ahf1^8KTmeU!%NnS!WNsoxGPR!2sSF!ztCHvJ#4lcMx^ z2TRB&O^p$(3RpEIlCDVF(GtdZ$4>@V9FsV`o6@D0^DN`WqUxBmd{5+fDxJ|}w}#+8 zTvdA%^pJ30F*nS_kZ9rGjrnkF1%UGMB6F-J$X*RcP~(_Md`H|U+^EJzRPIQ|PL+OBfldJ+E`Pmt^E-Chn^unxoge!V!9Yq3AFO9J6O$pW&_hx?clSjKx zkTzsn@?cvYoTmwLR99d*<|TC~SH3eOrgS1{sU{|?{CA&!2T;q3$Z1Ll&UFnRoAZ-* zgC#r(`Y(m$7KfPQ0}f9>DUaY2m%x2Y{grJ>Fky+{uW}>UAdfBz;YG>&rW`3o7y;=D zHDG&VHo^C(+9FMSAKQ8v6DINkF$2@oZ>Z_QwOD8Te2xyTxFGevMj>5Nj0Qc`MJ7|! zDHWDYaRH^XSva)gP2l`yPM9(+zl2L={TC4jJ37qAb@KfA=C)!_{0GuH7Wl)$X7RR#_1pv3HM?ya|Ko0zYSv60}gUI`Cl^w3pLEhuk(Jjf`w<3BvITthRG-SO<2eu7kvp$@xgQs9t#-tjTnQ6kH?ulRjs>c zQ^rkOK--Ta^aZli9uL?9W%9zDBjkC(y&INc*PZe8m**E~dz?)n=L_kkhIMg)Cloh` zd{(F-HjnX0jg;YQRfVOiLw&>qm*y%fZ}bOpAx#&wuCn`pKRKK_tkrs3Zoh{V*b@S zb&Q`lQxMfDxNF4?c=E&uqqA5MGlu%j+$r~T3>inA?O10X$gQ+CyOj1)fK$LT@LD*x z4K8p?HsBS2@;Ib^J6nX~^xl*W@YF(ug-7g5x}=kPtcTGty3#p1QM56yh>dLN045L* zBrL{AZ`xf*kga*4i}qV#v3~d7kX5zdB7TKoDA+y^+F&r^wmkOb`#&a3l(NA?`G4>U z(OAEJQT~6ncK>U>RNTte^1nK}MQRYPTFNM2HjD{ro!!j@R*-oc7VSo6>E;v5%vDwr zlK2ow!RCFxrHpmrRY{o!CM8XUg+b(%20@U|{d2*?M+v1Nhy3$}<<*sJ`-0l9^IPe5 zeXcUney~qtH)+=sUC&)E$={XF#4+8r-}1jKlmh%NTe}fAZoJib@F!sEJ?VV|Kq+qs z++J*d;W5aC#f%R`G2Jk1BKJ;#8t=d1^U%JNL2vrYj{j8&U}haVuma@?k_EHt@SE9% z1pdwcbP+I|s6u<9#9+Q)cH<7R3Jn_k>^mUc9g73)47M1)Hv5&_G?Kr` z!0)i!aC`Flng~6?L0k611-!_^^TO`0;YWkrA_4IZ&G^5#{ptbVO@Ztd;=)xfy^bUU z(+~)gbDg#R3$-zqY|ES|@yIFPQN)ca*_M~u5s+8~c{KOp+n+z3df8m~rujmE9n&UW zQbVF&lIf==Y2xW?h_ao~A74h%auziRz+bmT>NG%%59B;4!?A~rPK;8GKz7u6TPSe9 z$iXq1gbmvv!__=NL}o&d2^Vsh)W07FsXZPmD zpE|2qj{Sqg|A@p+&W4)VP;n>|3M!9LVE}?NO+?RBZ3CNAf-?mrpwNtq?K6ISK|Z_! zj+hu)Ls*6ySp`KgN$|W3n?ear(T;p_mZQVcg3`acV^U z99Z9F3u#eez599F`ft)hC2L-Sl}Uh&%V?XX_h7Jg1;?XsK%BfhxiMw)vaL!95Jjjp z5f}{-ZH-_gn>d%CSD<$R@fZ&kS{9rZCZ0^_jk`iQmOPg#Q~@OJm!z#E7ZOBs4yH?qhCEJmmaGE_f{K>n>#j4qs2u&jwa?z zx11k5zPza~MA=NYWa?j$CqOR|VLkgckYuilGLuaSp9INrnm@@Zw{To&y}Z&NP%DOJ zZ$)V8@hXL{E&X9C$7Jc&7~7(tD<0g15x#@p47a*mC2|=@H$3W*D`ZAYrZL<@<3RG0&rXP3z+k)@TZn93ICEd5lX z92AgwTp23Wgp#DvmXNh}z7;^zqSC~oy^29!hucIgQk0?O#vrF%RIgUwU;Z6-#|_N$ zdAafMA#EybJPCRSqUEA!PSdu4W|X+I`u+5_ZnxY%{d-2__7@tn=aGbF76H)*yqmk9 zogu=KndV?cWTY5%`yS28l%?b*BJ&UhXOS=`-=zMKP-(Y}rvBqdQupEbO=!*ALa@B5 z=vT{?F)%;jiAtV2%g3+0(xsXTtIOs_C90&_0a!&E!b1&d!b8|)MN~gE0#!<*)h4WU z70^Wq#U)7{<*G(PyA6kct{riPvk8eb@m1&WO$I@T=icf`YBe3Y%i6L-b?H*NY$@)g z)mNWr=X@)E2878}IYPY=!nb3Jyao5ILKar0lJtaC!qqSriIKF~tdnIl%U*ugt1Ry7 zXsMIGPoP!lZ^8Zr%ll@Y_|Mz9INfY8rNyyH5A*wG#x&OoYvO(cE^KCKrg#U?Cmk}2 zc5t;dZkH4jPT5l|$I>hbSHTpdG}}!J(vqE>hy4rFRpTwu2+edDu)_CNye&34IL?|_ zw10vR`!+MN(Q)ey+&>66#sz4p&?8RD!4nvES%r5Ul6O?h=9{TRqCP#j#Rwa8i~LZmKPXKN8%imYYDfI1ZP zj*xa1aTEseo4JLxSQ2-uTIt~zS{rhV3}B^N8N>k+3d`v$fs7Pyi0N_wW%K*}@n9g| zFXQxvUm7W)f6eQkJA@;cZLDpmUO`)P|2!vL&C{mztl*@Q;RxI0g%Nfc&UB6?es;b^ z(|{-|j~Pu_TH@J^1xa+$PYVxm?~^1<+i?X(>Bty{XA8uiN$SA57PeKsM~@UtwQE8BpsaQRx7P;4 zli??k8KTY%W@p1`Vgs6}%eK+DHJ8p?(qpCl^&q}W<%I||{_s~IU9MWThQKuEx3w&$ zJ!{V>YXaYR2I?kQ1NH$MG>sn7)MnwMIyf2%!9S=ja8wfY3WuIpw(skOyiZk;9)qdRlX#zJ_$ltig@8v%@5U?Yp-^A{KrZ&wp9u!jRz(i)*XTHUVW7~BtNEh?geDw_A^)({a*e=zWsTS&LZE32UD1AedK|DiZ1u=*xxdU9&ayQ%Qk(4bQvcXp88XPS-`(^e z>-$yqC_fk}UrDq@vDMQ3;_Cg_h2U^&>|94R8%kA&X`@%9J(S+zms?%vVLhR;!=WI2 z3W`UuGKXR_+qROy(#C3ar=@arlt|U~OgjEF=@GaX?{N|;ZFE$?rtCguhJ}V3cx~<0 zR7*)8zCZ#r4tEgw_*E%>K1AGucE`tYc&C+MGk$65@ABvO!EZ1Zgkf!P&Ig4IZd z=EQ;Z#3I;Weo@#ut03{EnLSq9UX*h)1AX1LP6w(!@c-7lOvLnsg=0^GV7vao5 zbBW8<$}zc5;J+_qMy}}BUGHM_4gy|-K7JixlN^K9p~Fd&8&XA#6P8z$4b4n?ac=Wp zNxb6mYh2^Yny*xScfmHo@HVz-Sc5iew<6ROGZUw4 zvr73B9xD(h5LYz@Dkd#Ou`cc$FST_Mye2Lt2b@%4uUZ-eNx7~>i;`%KNvO&&M0n!L z?j9{Vvq$FhC`-?CePQUFP)+g`Ytysw-aYf|IrBc9((vteZ}lr>?*N=9A~L)V+;dcE z&)!h^kPsXd>|m)CC^_5{Sh==>!B5=mD$!VCxwyzB<)IsQ@5^SiyMw57gtf>eX7UG0 zruhSnOM8uGeh!=aTyp&dCvhJ;$&Eei@)IV38@4OYRlI)-{`(+|K09%zgz$yO8-Hp+ zkBg{BwEsm9U39=zMPx?YfjSZ|=(f{QH}-gh(mQ{@1hU`FVDz`cTBrYd^}t(Uc53aE zRQ|-|MhCLc=90CSR$qF(lZ-99V^bQ-8aD|Bzl{AcqL;oX8zA4oDoat3qfjZ+frnkwL(hhZ9+YhYSZSU z>P?-{!G>3s7I?ZZ39NDO0czGM;sPy zN9~u#1KK+<9Aod%-0wX|gF|2@#5~UZpqU~Ap{3Q5<7oae%x7fO21AcwfTU+|a}GuY zQ`w>9B~9C98U0;|=fLEsRqR`zpO<#`PK2o5gY=XcnqmIH9zn5Gk5XZo+zkxZHFbrc zvv38eF=q?YHFt%nv3No8rkS#XS<#CLM&6#ag(L&kY6?Avxou+)jeof;^*gp#E~Y%RCdmT)N4| z{_6$PgHnpO>mqd^0t3Z10Ba-I7Uk1o@d9tc{DEtN;)}Eb4uUr}h=*+XwTLN-lbE={ z@{^aF9F4r@w?bP zSXC*r2w%K}XDvQvOj-Zt{O`l}jWZvjVZV-i%jS}DI~)pCkdT!6JL9Tq zr8P~?9mq{(A#k8{i?f`|ME4&f783U>YPvs4GbND}8?Uptv2ck@YTiEEd*gwNoLMbV zbtwC6x)e+Q%dB+^8SGD&#PVITNdqXm0&oUMa*bi(1*T(cmn-dB&cTM10 zON~$^Cb&F-8g6m~e7EpB@)YHCT_RoTq6mANgRH2Qb78RHN0u_@!f9<`oCV{*H9WVS za$*&Fcm7OZfp;FWL$W7uPDBP|Ge{O#bdK=DEzYW0WeKi^xX3rnPc%iRyzR@ZL_AcF zz{uDpE3fQ`XDh?j&fKc<8IBpbYye^c>uq3{d#%!Jfr2i6oaWf|gR!;uhJ2Ao!dkSd zYFb|3B{-~GOw)a{iP5~Rl6_u6cT5nH*l?jFsK z`J{EH(D(5-=-aM~gaYU`BDrC&R2Sd~(a>cdhdG39&ARXmN^t{+nVk#drzE+|v%pW0 zJmuhW#G%b$Sv}5^%o`DQ2{gFfEG^U!n^~XcqptORQ_HRLH8r6})#6j8R_kq7>U8wN z%B!EUW1eRH!g0(pG0oseFZ3+I;p_O@jJwpD#tcg03sxHExU~zOi_lU}rmz;N^Yro1 z+y{WM`{s?P3;asV9U7wow~tYoA-cqOPQB~`s-f=(c&6{?wg}faWOADZNUJrr`5E}} z%jTNE-yI$80D`!N1+d?49!)dN zdj@_C!T46bc-LXOYHm70`+TU{$snXvmr$bmUauD;?4=Q_PTPzVbC;d zy+a)#q2v%mX&y`aEi)~}pM}YNGAbjV%qtVI2?&XA5-tA}w_a5>ES)3XII;=+W)Juc zyI(B`QotK_vHlNp?iC5Yyd{ueS#*zf2p|^$D!9b_NtQRceosVcOH|ss&54{mjV>np zEdoXlL9M3iH(b6B`HU27K$*Hb-|F6)HY~iFaIN=G%R3Gia4BubH;w?+v&YinZ(~>@ z#I?_>(QO;_F#H^J034%1b1cx(*gBaxH z#~PzPBAS7f;@*_01i4AP(?o9*m|e#;K8w$SO_qbi+Xsigz>`ihlJN9vzo5Gu#I&OM z^n1N9B|W2Y1@$NZ_#E6nTziUq0hQc_2|n?=^Nc=V9&Uk|)h&!|;a{%ffCQUvMG_ph z67OcZP&h=I#y(JXtAsEJG%j^^%ZoNVy2hyqH5{!ttgbMkUYCjFoLaO|6GvM}|o$3g8FjW0%AW;G|>k2o) zCB2P9%Es=^m2?9gQ?_K z_McNV7p^*ao>i1S(j6y?g|4fU){Y?{(W-NCX>sE6BOU+oJ2vhpd*Db?&enE^2KZtFG#moDh)T@RJl*QGuJ|LROBH8oCwn7 z8=;Zw9Cr+3tflO4v9o=#;V#gjsC5>$K2ybpO6dTZcG*m5 zROx~}k20cCn-z)`LMtd4!9}<>O;oyjXs@xX2Jh>PLh)7iB5DHMV@E?Qm37 z!AOi&G4_Nr@F;KSxD{K7l=Cca#P*;MV@Doke#d~w-xWsQxt~xP%^h@}fnQd9?|#{i z#s16JvrR3t`S&()VkV%Ckosh0N@v_^Aj3tnrWL)Fxt~gk;jMl9p|!B5l}MMBSlZNn z1j|qnk9y&c2Mkz3$uP=~(~HbYkL9P3)$#k_Is^SIcN{vq9KqsVoGJ_gaUyGTlm{@- z@z=%VGWXcI6wa|dHACM2vA?80LLgc7v%i%7gChH%F=YRtt^fI9i5fZnYoAidO7@49 z<4wD&#?*gk4Uyz4$aeER>ghq=g`l^ndak3f5;Cz zwB(7PYVmH~+vnV8o;)=^kIc;I0#NVTp>h| zYBDRSiybB$Kv8!n_y8Q(Y^E#3!CBi(k=dP?<*wD<;kM`2vw6KDUDL+xQa2b?k?~Uh z>GhU+X3^gv1Q#iDzSp$do=lN_r4#{}hlBN%%0DDNlc$iKGo<(eUp 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

0zGh%HPCY&11) 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 + + +##project.name## + + + + + + + + + + + + + + +

+ + + + + +
+ +
+

##project.name##

+

+ A library by ##author.name## for the programming environment processing. Last update, ##date##. +

+

+ Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. +

+
+ + + +
+

Download

+

+ Download ##project.name## version ##project.version## in + .zip format. +

+

Installation

+

+ Unzip and put the extracted ##project.name## folder into the libraries folder of your processing sketches. Reference and examples are included in the ##project.name## folder. +

+
+ + +
+

Keywords ##project.keywords##

+

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

+

Source. The source code of ##project.name## is available at ##source.host##, and its repository can be browsed here.

+
+ +
+

Examples

+

Find a list of examples in the current distribution of ##project.name##, or have a look at them by following the links below.

+
    + ##project.examples## +
+
+ + +
+

Tested

+

+ + Platform ##tested.platform## + + +
Processing ##tested.processingversion## + + +
Dependencies ##project.dependencies## +

+
+ + + + + + + + + + + + +
+
+ + +
+ + \ No newline at end of file diff --git a/web/stylesheet.css b/web/stylesheet.css new file mode 100644 index 000000000..4348b3814 --- /dev/null +++ b/web/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} From c540e334c0ae72b6f7af2bef72bdf0cf5f44f920 Mon Sep 17 00:00:00 2001 From: agoransson Date: Wed, 16 Nov 2011 14:26:24 +0100 Subject: [PATCH 02/38] Updated README. --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f9d0c0291..cbca4f99d 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,16 @@ # JSON Processing implementation -This library is simply a fork of the original JSON for Java library written by Douglas Crockford for easy use inside Processing IDE. See the original README below. +This library is simply a fork of the original JSON for [Java library written by Douglas Crockford](https://github.com/douglascrockford/JSON-java) for easy use inside Processing IDE. See the original README below. + +# Installation in Processing + +1. Download the [zip-file](#) +2. Extract the [zip-file](#) into your /sketchbook/libraries/ folder. +3. Restart Processing IDE # Getting started with JSON in Processing. +**Creating a JSONObject with primitive members** ``` java /** * Creating a JSONObject with primitive members @@ -21,6 +28,7 @@ catch(JSONException e) { println( obj ); ``` +**Creating a JSONObject with complex members** ``` java /** * Creating a JSONObject with complex members @@ -53,6 +61,7 @@ catch(JSONException e) { println( obj ); ``` +**Creating a JSONObject from a json-formatted String.** ``` java /** * Creating a JSONObject from a json-formatted String. @@ -68,6 +77,7 @@ catch(Exception e) { ``` +**Creating a JSONArray of primitives** ``` java /** * Creating a JSONArray of primitives @@ -84,6 +94,7 @@ catch(JSONException e) { println(arr); ``` +**Creating a JSONArray of objects** ``` java /** * Creating a JSONArray of objects From 414aa5df58e2c13d6c08c9eed12b5e885528369e Mon Sep 17 00:00:00 2001 From: agoransson Date: Wed, 16 Nov 2011 14:27:20 +0100 Subject: [PATCH 03/38] Updated again. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index cbca4f99d..dd8e0bb87 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ This library is simply a fork of the original JSON for [Java library written by # Getting started with JSON in Processing. **Creating a JSONObject with primitive members** + ``` java /** * Creating a JSONObject with primitive members @@ -29,6 +30,7 @@ println( obj ); ``` **Creating a JSONObject with complex members** + ``` java /** * Creating a JSONObject with complex members @@ -62,6 +64,7 @@ println( obj ); ``` **Creating a JSONObject from a json-formatted String.** + ``` java /** * Creating a JSONObject from a json-formatted String. @@ -78,6 +81,7 @@ catch(Exception e) { ``` **Creating a JSONArray of primitives** + ``` java /** * Creating a JSONArray of primitives @@ -95,6 +99,7 @@ println(arr); ``` **Creating a JSONArray of objects** + ``` java /** * Creating a JSONArray of objects From a91ee1969e9ae54e47038da9d5130c212ce9794a Mon Sep 17 00:00:00 2001 From: agoransson Date: Wed, 16 Nov 2011 14:29:32 +0100 Subject: [PATCH 04/38] Working first version. --- .../download/json4processing-0.1.1.zip | Bin 161976 -> 162297 bytes distribution/json4processing-0.1.1/index.html | 4 ++-- .../reference/allclasses-frame.html | 2 +- .../reference/allclasses-noframe.html | 2 +- .../reference/constant-values.html | 4 ++-- .../reference/deprecated-list.html | 4 ++-- .../reference/help-doc.html | 4 ++-- .../reference/index-all.html | 4 ++-- .../reference/index.html | 2 +- .../reference/org/json/CDL.html | 4 ++-- .../reference/org/json/Cookie.html | 4 ++-- .../reference/org/json/CookieList.html | 4 ++-- .../reference/org/json/HTTP.html | 4 ++-- .../reference/org/json/HTTPTokener.html | 4 ++-- .../reference/org/json/JSONArray.html | 4 ++-- .../reference/org/json/JSONException.html | 4 ++-- .../reference/org/json/JSONML.html | 4 ++-- .../reference/org/json/JSONObject.html | 4 ++-- .../reference/org/json/JSONString.html | 4 ++-- .../reference/org/json/JSONStringer.html | 4 ++-- .../reference/org/json/JSONTokener.html | 4 ++-- .../reference/org/json/JSONWriter.html | 4 ++-- .../reference/org/json/XML.html | 4 ++-- .../reference/org/json/XMLTokener.html | 4 ++-- .../reference/org/json/package-frame.html | 2 +- .../reference/org/json/package-summary.html | 4 ++-- .../reference/org/json/package-tree.html | 4 ++-- .../reference/overview-tree.html | 4 ++-- .../reference/serialized-form.html | 4 ++-- resources/build.properties | 2 +- 30 files changed, 53 insertions(+), 53 deletions(-) diff --git a/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip b/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip index 42dbc4b47885a0904e82bf48589abfcdf8b87c5b..a7e275b2c1cfc0518cdd85d4b5a475a641e7a5d2 100644 GIT binary patch delta 100505 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
(( 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 delta 100079 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ⅈmptszU88+2wHwMB?tMjQhd;(6kj+rYwe|Hn{ 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 KPhjm2@&5p5E3*~= diff --git a/distribution/json4processing-0.1.1/index.html b/distribution/json4processing-0.1.1/index.html index a5ced3ea2..944abf368 100644 --- a/distribution/json4processing-0.1.1/index.html +++ b/distribution/json4processing-0.1.1/index.html @@ -41,7 +41,7 @@

json4processing

json4processing

- A library by Andreas Göransson for the programming environment processing. Last update, 11/16/2011. + A library by Douglas Crockford (Processing lib by: Andreas Goransson) for the programming environment processing. Last update, 11/16/2011.

Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. @@ -125,7 +125,7 @@

demos

diff --git a/distribution/json4processing-0.1.1/reference/allclasses-frame.html b/distribution/json4processing-0.1.1/reference/allclasses-frame.html index e9ad12cc0..9936c0824 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-frame.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-frame.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html index c426ae259..15b992bcf 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/constant-values.html b/distribution/json4processing-0.1.1/reference/constant-values.html index e3a3307a9..e25df506f 100644 --- a/distribution/json4processing-0.1.1/reference/constant-values.html +++ b/distribution/json4processing-0.1.1/reference/constant-values.html @@ -2,7 +2,7 @@ - + Constant Field Values (Javadocs: json4processing) @@ -165,6 +165,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/deprecated-list.html b/distribution/json4processing-0.1.1/reference/deprecated-list.html index d13a0ff18..e7548cac2 100644 --- a/distribution/json4processing-0.1.1/reference/deprecated-list.html +++ b/distribution/json4processing-0.1.1/reference/deprecated-list.html @@ -2,7 +2,7 @@ - + Deprecated List (Javadocs: json4processing) @@ -137,6 +137,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/help-doc.html b/distribution/json4processing-0.1.1/reference/help-doc.html index 9e82f267e..4485e316a 100644 --- a/distribution/json4processing-0.1.1/reference/help-doc.html +++ b/distribution/json4processing-0.1.1/reference/help-doc.html @@ -2,7 +2,7 @@ - + API Help (Javadocs: json4processing) @@ -204,6 +204,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/index-all.html b/distribution/json4processing-0.1.1/reference/index-all.html index e3b5452a2..f3885c274 100644 --- a/distribution/json4processing-0.1.1/reference/index-all.html +++ b/distribution/json4processing-0.1.1/reference/index-all.html @@ -2,7 +2,7 @@ - + Index (Javadocs: json4processing) @@ -888,6 +888,6 @@
-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/index.html b/distribution/json4processing-0.1.1/reference/index.html index db07ba17d..16f7e2e54 100644 --- a/distribution/json4processing-0.1.1/reference/index.html +++ b/distribution/json4processing-0.1.1/reference/index.html @@ -2,7 +2,7 @@ - + Javadocs: json4processing diff --git a/distribution/json4processing-0.1.1/reference/org/json/CDL.html b/distribution/json4processing-0.1.1/reference/org/json/CDL.html index b4f141761..b8ae6c387 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CDL.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CDL.html @@ -2,7 +2,7 @@ - + CDL (Javadocs: json4processing) @@ -495,6 +495,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html index a1c335179..0dc4911cb 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html +++ b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html @@ -2,7 +2,7 @@ - + Cookie (Javadocs: json4processing) @@ -352,6 +352,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html index 062a87e77..bdd3e58fb 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html @@ -2,7 +2,7 @@ - + CookieList (Javadocs: json4processing) @@ -292,6 +292,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html index 5ad5251f1..c5ac1cffa 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html @@ -2,7 +2,7 @@ - + HTTP (Javadocs: json4processing) @@ -360,6 +360,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html index 551b2c7bd..c18be4a01 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html @@ -2,7 +2,7 @@ - + HTTPTokener (Javadocs: json4processing) @@ -272,6 +272,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html index b595cc460..a04b4d943 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html @@ -2,7 +2,7 @@ - + JSONArray (Javadocs: json4processing) @@ -1468,6 +1468,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html index 32ef6f692..cce2b9a02 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html @@ -2,7 +2,7 @@ - + JSONException (Javadocs: json4processing) @@ -286,6 +286,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html index c07b073a5..b8b606345 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html @@ -2,7 +2,7 @@ - + JSONML (Javadocs: json4processing) @@ -417,6 +417,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html index 2f742288f..c789bc8ac 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html @@ -2,7 +2,7 @@ - + JSONObject (Javadocs: json4processing) @@ -1878,6 +1878,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html index 65a5541db..7f97a526c 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html @@ -2,7 +2,7 @@ - + JSONString (Javadocs: json4processing) @@ -211,6 +211,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html index ff0a60a82..ab1513bf5 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html @@ -2,7 +2,7 @@ - + JSONStringer (Javadocs: json4processing) @@ -298,6 +298,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html index 5a03a3643..f7443a5a8 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html @@ -2,7 +2,7 @@ - + JSONTokener (Javadocs: json4processing) @@ -662,6 +662,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html index 48e56ace5..438f9bcb1 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html @@ -2,7 +2,7 @@ - + JSONWriter (Javadocs: json4processing) @@ -501,6 +501,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/XML.html b/distribution/json4processing-0.1.1/reference/org/json/XML.html index 8be4949d0..6e75c2c55 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XML.html @@ -2,7 +2,7 @@ - + XML (Javadocs: json4processing) @@ -596,6 +596,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html index 3e5fb39af..5cc2f9c54 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html @@ -2,7 +2,7 @@ - + XMLTokener (Javadocs: json4processing) @@ -447,6 +447,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html index b89871285..f671f9a01 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html index 159182151..11dd521bf 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) @@ -234,6 +234,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html index 8549ae0f9..682b7110e 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html @@ -2,7 +2,7 @@ - + org.json Class Hierarchy (Javadocs: json4processing) @@ -155,6 +155,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/overview-tree.html b/distribution/json4processing-0.1.1/reference/overview-tree.html index 4c505b64d..c894e7e15 100644 --- a/distribution/json4processing-0.1.1/reference/overview-tree.html +++ b/distribution/json4processing-0.1.1/reference/overview-tree.html @@ -2,7 +2,7 @@ - + Class Hierarchy (Javadocs: json4processing) @@ -157,6 +157,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/distribution/json4processing-0.1.1/reference/serialized-form.html b/distribution/json4processing-0.1.1/reference/serialized-form.html index 6f8c4d813..264ba682a 100644 --- a/distribution/json4processing-0.1.1/reference/serialized-form.html +++ b/distribution/json4processing-0.1.1/reference/serialized-form.html @@ -2,7 +2,7 @@ - + Serialized Form (Javadocs: json4processing) @@ -173,6 +173,6 @@


-processing library json4processing by Andreas Göransson. (c) 2011 +processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 diff --git a/resources/build.properties b/resources/build.properties index 394cd0300..c0a548c35 100644 --- a/resources/build.properties +++ b/resources/build.properties @@ -102,7 +102,7 @@ project.copyright=(c) 2011 project.dependencies=? project.keywords=? -author.name=Andreas Göransson +author.name=Douglas Crockford (Processing lib by: Andreas Goransson) author.url= tested.platform=linux From c63860c33ef38d3468472c84b8d508e66b9bbf46 Mon Sep 17 00:00:00 2001 From: agoransson Date: Wed, 16 Nov 2011 14:38:44 +0100 Subject: [PATCH 05/38] Forgot to remove old package. --- README.md | 4 +- .../json4p-0.1.1/download/json4p-0.1.1.zip | Bin 160796 -> 0 bytes .../json4p-0.1.1/examples/Hello/Hello.pde | 19 - distribution/json4p-0.1.1/index.html | 132 -- .../reference/allclasses-frame.html | 59 - .../reference/allclasses-noframe.html | 59 - .../reference/constant-values.html | 170 -- .../reference/deprecated-list.html | 142 -- .../json4p-0.1.1/reference/help-doc.html | 209 -- .../json4p-0.1.1/reference/index-all.html | 893 -------- .../json4p-0.1.1/reference/index.html | 36 - .../json4p-0.1.1/reference/org/json/CDL.html | 500 ----- .../reference/org/json/Cookie.html | 357 ---- .../reference/org/json/CookieList.html | 297 --- .../json4p-0.1.1/reference/org/json/HTTP.html | 365 ---- .../reference/org/json/HTTPTokener.html | 277 --- .../reference/org/json/JSONArray.html | 1473 ------------- .../reference/org/json/JSONException.html | 291 --- .../reference/org/json/JSONML.html | 422 ---- .../reference/org/json/JSONObject.html | 1883 ----------------- .../reference/org/json/JSONString.html | 216 -- .../reference/org/json/JSONStringer.html | 303 --- .../reference/org/json/JSONTokener.html | 667 ------ .../reference/org/json/JSONWriter.html | 506 ----- .../json4p-0.1.1/reference/org/json/XML.html | 601 ------ .../reference/org/json/XMLTokener.html | 452 ---- .../reference/org/json/package-frame.html | 78 - .../reference/org/json/package-summary.html | 239 --- .../reference/org/json/package-tree.html | 160 -- .../json4p-0.1.1/reference/overview-tree.html | 162 -- .../json4p-0.1.1/reference/package-list | 1 - .../reference/resources/inherit.gif | Bin 57 -> 0 bytes .../reference/serialized-form.html | 178 -- .../json4p-0.1.1/reference/stylesheet.css | 310 --- distribution/json4p-0.1.1/stylesheet.css | 203 -- .../download/json4processing-0.1.1.zip | Bin 162297 -> 162290 bytes .../reference/allclasses-frame.html | 2 +- .../reference/allclasses-noframe.html | 2 +- .../reference/constant-values.html | 2 +- .../reference/deprecated-list.html | 2 +- .../reference/help-doc.html | 2 +- .../reference/index-all.html | 2 +- .../reference/index.html | 2 +- .../reference/org/json/CDL.html | 2 +- .../reference/org/json/Cookie.html | 2 +- .../reference/org/json/CookieList.html | 2 +- .../reference/org/json/HTTP.html | 2 +- .../reference/org/json/HTTPTokener.html | 2 +- .../reference/org/json/JSONArray.html | 2 +- .../reference/org/json/JSONException.html | 2 +- .../reference/org/json/JSONML.html | 2 +- .../reference/org/json/JSONObject.html | 2 +- .../reference/org/json/JSONString.html | 2 +- .../reference/org/json/JSONStringer.html | 2 +- .../reference/org/json/JSONTokener.html | 2 +- .../reference/org/json/JSONWriter.html | 2 +- .../reference/org/json/XML.html | 2 +- .../reference/org/json/XMLTokener.html | 2 +- .../reference/org/json/package-frame.html | 2 +- .../reference/org/json/package-summary.html | 2 +- .../reference/org/json/package-tree.html | 2 +- .../reference/overview-tree.html | 2 +- .../reference/serialized-form.html | 2 +- 63 files changed, 29 insertions(+), 11689 deletions(-) delete mode 100644 distribution/json4p-0.1.1/download/json4p-0.1.1.zip delete mode 100644 distribution/json4p-0.1.1/examples/Hello/Hello.pde delete mode 100644 distribution/json4p-0.1.1/index.html delete mode 100644 distribution/json4p-0.1.1/reference/allclasses-frame.html delete mode 100644 distribution/json4p-0.1.1/reference/allclasses-noframe.html delete mode 100644 distribution/json4p-0.1.1/reference/constant-values.html delete mode 100644 distribution/json4p-0.1.1/reference/deprecated-list.html delete mode 100644 distribution/json4p-0.1.1/reference/help-doc.html delete mode 100644 distribution/json4p-0.1.1/reference/index-all.html delete mode 100644 distribution/json4p-0.1.1/reference/index.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/CDL.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/Cookie.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/CookieList.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/HTTP.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONArray.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONException.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONML.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONObject.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONString.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONStringer.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONTokener.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/JSONWriter.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/XML.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/XMLTokener.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/package-frame.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/package-summary.html delete mode 100644 distribution/json4p-0.1.1/reference/org/json/package-tree.html delete mode 100644 distribution/json4p-0.1.1/reference/overview-tree.html delete mode 100644 distribution/json4p-0.1.1/reference/package-list delete mode 100644 distribution/json4p-0.1.1/reference/resources/inherit.gif delete mode 100644 distribution/json4p-0.1.1/reference/serialized-form.html delete mode 100644 distribution/json4p-0.1.1/reference/stylesheet.css delete mode 100644 distribution/json4p-0.1.1/stylesheet.css diff --git a/README.md b/README.md index dd8e0bb87..7961fd53e 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ This library is simply a fork of the original JSON for [Java library written by # Installation in Processing -1. Download the [zip-file](#) -2. Extract the [zip-file](#) into your /sketchbook/libraries/ folder. +1. Download the [zip-file](https://github.com/downloads/agoransson/JSON-processing/json4processing-0.1.1.zip) +2. Extract the [zip-file](https://github.com/downloads/agoransson/JSON-processing/json4processing-0.1.1.zip) into your /sketchbook/libraries/ folder. 3. Restart Processing IDE # Getting started with JSON in Processing. diff --git a/distribution/json4p-0.1.1/download/json4p-0.1.1.zip b/distribution/json4p-0.1.1/download/json4p-0.1.1.zip deleted file mode 100644 index c21437b721dc6e09e646f4b3f92844540e02f83a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160796 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%0ATwA_nIEHw4YuDd9KMo~ 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 diff --git a/distribution/json4p-0.1.1/examples/Hello/Hello.pde b/distribution/json4p-0.1.1/examples/Hello/Hello.pde deleted file mode 100644 index c14456a35..000000000 --- a/distribution/json4p-0.1.1/examples/Hello/Hello.pde +++ /dev/null @@ -1,19 +0,0 @@ -import template.library.*; - -HelloLibrary hello; - -void setup() { - size(400,400); - smooth(); - - hello = new HelloLibrary(this); - - PFont font = createFont("",40); - textFont(font); -} - -void draw() { - background(0); - fill(255); - text(hello.sayHello(), 40, 200); -} \ No newline at end of file diff --git a/distribution/json4p-0.1.1/index.html b/distribution/json4p-0.1.1/index.html deleted file mode 100644 index 018253d01..000000000 --- a/distribution/json4p-0.1.1/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - -json4p - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/distribution/json4p-0.1.1/reference/allclasses-frame.html b/distribution/json4p-0.1.1/reference/allclasses-frame.html deleted file mode 100644 index 3501627af..000000000 --- a/distribution/json4p-0.1.1/reference/allclasses-frame.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - -All Classes (Javadocs: json4p) - - - - - - - - - - - -All Classes -
- - - - - -
CDL -
-Cookie -
-CookieList -
-HTTP -
-HTTPTokener -
-JSONArray -
-JSONException -
-JSONML -
-JSONObject -
-JSONString -
-JSONStringer -
-JSONTokener -
-JSONWriter -
-XML -
-XMLTokener -
-
- - - diff --git a/distribution/json4p-0.1.1/reference/allclasses-noframe.html b/distribution/json4p-0.1.1/reference/allclasses-noframe.html deleted file mode 100644 index 0bc533977..000000000 --- a/distribution/json4p-0.1.1/reference/allclasses-noframe.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - -All Classes (Javadocs: json4p) - - - - - - - - - - - -All Classes -
- - - - - -
CDL -
-Cookie -
-CookieList -
-HTTP -
-HTTPTokener -
-JSONArray -
-JSONException -
-JSONML -
-JSONObject -
-JSONString -
-JSONStringer -
-JSONTokener -
-JSONWriter -
-XML -
-XMLTokener -
-
- - - diff --git a/distribution/json4p-0.1.1/reference/constant-values.html b/distribution/json4p-0.1.1/reference/constant-values.html deleted file mode 100644 index a9bf2e2c3..000000000 --- a/distribution/json4p-0.1.1/reference/constant-values.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - -Constant Field Values (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -
-
-

-Constant Field Values

-
-
-Contents - - - - - - -
-org.json.*
- -

- - - - - - - - - - - - -
org.json.HTTP
-public static final java.lang.StringCRLF"\r\n"
- -

- -

-


- - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/deprecated-list.html b/distribution/json4p-0.1.1/reference/deprecated-list.html deleted file mode 100644 index dd51bca8d..000000000 --- a/distribution/json4p-0.1.1/reference/deprecated-list.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -Deprecated List (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -
-
-

-Deprecated API

-
-
-Contents
    -
- -
- - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/help-doc.html b/distribution/json4p-0.1.1/reference/help-doc.html deleted file mode 100644 index c8a549614..000000000 --- a/distribution/json4p-0.1.1/reference/help-doc.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - -API Help (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -
-
-

-How This API Document Is Organized

-
-This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

-Package

-
- -

-Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    -
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
-
-

-Class/Interface

-
- -

-Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    -
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description -

    -

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary -

    -

  • Field Detail
  • Constructor Detail
  • Method Detail
-Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
- -

-Annotation Type

-
- -

-Each annotation type has its own separate page with the following sections:

    -
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
-
- -

-Enum

-
- -

-Each enum has its own separate page with the following sections:

    -
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
-
-

-Tree (Class Hierarchy)

-
-There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    -
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
-
-

-Deprecated API

-
-The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
-

-Index

-
-The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
-

-Prev/Next

-These links take you to the next or previous class, interface, package, or related page.

-Frames/No Frames

-These links show and hide the HTML frames. All pages are available with or without frames. -

-

-Serialized Form

-Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. -

-

-Constant Field Values

-The Constant Field Values page lists the static final fields and their values. -

- - -This help file applies to API documentation generated using the standard doclet. - -
-


- - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/index-all.html b/distribution/json4p-0.1.1/reference/index-all.html deleted file mode 100644 index eb6ef656d..000000000 --- a/distribution/json4p-0.1.1/reference/index-all.html +++ /dev/null @@ -1,893 +0,0 @@ - - - - - - -Index (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -A B C D E G H I J K L M N O P Q R S T U V W X
-

-A

-
-
accumulate(String, Object) - -Method in class org.json.JSONObject -
Accumulate values under a key. -
AMP - -Static variable in class org.json.XML -
The Character '&'. -
APOS - -Static variable in class org.json.XML -
The Character '''. -
append(String, Object) - -Method in class org.json.JSONObject -
Append values to the array under a key. -
array() - -Method in class org.json.JSONWriter -
Begin appending a new array. -
-
-

-B

-
-
back() - -Method in class org.json.JSONTokener -
Back up one character. -
BANG - -Static variable in class org.json.XML -
The Character '!'. -
-
-

-C

-
-
CDL - Class in org.json
This provides static methods to convert comma delimited text into a - JSONArray, and to covert a JSONArray into comma delimited text.
CDL() - -Constructor for class org.json.CDL -
  -
Cookie - Class in org.json
Convert a web browser cookie specification to a JSONObject and back.
Cookie() - -Constructor for class org.json.Cookie -
  -
CookieList - Class in org.json
Convert a web browser cookie list string to a JSONObject and back.
CookieList() - -Constructor for class org.json.CookieList -
  -
CRLF - -Static variable in class org.json.HTTP -
Carriage return/line feed. -
-
-

-D

-
-
dehexchar(char) - -Static method in class org.json.JSONTokener -
Get the hex value of a character (base16). -
doubleToString(double) - -Static method in class org.json.JSONObject -
Produce a string from a double. -
-
-

-E

-
-
end() - -Method in class org.json.JSONTokener -
  -
endArray() - -Method in class org.json.JSONWriter -
End an array. -
endObject() - -Method in class org.json.JSONWriter -
End an object. -
entity - -Static variable in class org.json.XMLTokener -
The table of entity values. -
EQ - -Static variable in class org.json.XML -
The Character '='. -
escape(String) - -Static method in class org.json.Cookie -
Produce a copy of a string in which the characters '+', '%', '=', ';' - and control characters are replaced with "%hh". -
escape(String) - -Static method in class org.json.XML -
Replace special characters with XML escapes: -
-
-

-G

-
-
get(int) - -Method in class org.json.JSONArray -
Get the object value associated with an index. -
get(String) - -Method in class org.json.JSONObject -
Get the value object associated with a key. -
getBoolean(int) - -Method in class org.json.JSONArray -
Get the boolean value associated with an index. -
getBoolean(String) - -Method in class org.json.JSONObject -
Get the boolean value associated with a key. -
getCause() - -Method in exception org.json.JSONException -
  -
getDouble(int) - -Method in class org.json.JSONArray -
Get the double value associated with an index. -
getDouble(String) - -Method in class org.json.JSONObject -
Get the double value associated with a key. -
getInt(int) - -Method in class org.json.JSONArray -
Get the int value associated with an index. -
getInt(String) - -Method in class org.json.JSONObject -
Get the int value associated with a key. -
getJSONArray(int) - -Method in class org.json.JSONArray -
Get the JSONArray associated with an index. -
getJSONArray(String) - -Method in class org.json.JSONObject -
Get the JSONArray value associated with a key. -
getJSONObject(int) - -Method in class org.json.JSONArray -
Get the JSONObject associated with an index. -
getJSONObject(String) - -Method in class org.json.JSONObject -
Get the JSONObject value associated with a key. -
getLong(int) - -Method in class org.json.JSONArray -
Get the long value associated with an index. -
getLong(String) - -Method in class org.json.JSONObject -
Get the long value associated with a key. -
getNames(JSONObject) - -Static method in class org.json.JSONObject -
Get an array of field names from a JSONObject. -
getNames(Object) - -Static method in class org.json.JSONObject -
Get an array of field names from an Object. -
getString(int) - -Method in class org.json.JSONArray -
Get the string associated with an index. -
getString(String) - -Method in class org.json.JSONObject -
Get the string associated with a key. -
GT - -Static variable in class org.json.XML -
The Character '>'. -
-
-

-H

-
-
has(String) - -Method in class org.json.JSONObject -
Determine if the JSONObject contains a specific key. -
HTTP - Class in org.json
Convert an HTTP header to a JSONObject and back.
HTTP() - -Constructor for class org.json.HTTP -
  -
HTTPTokener - Class in org.json
The HTTPTokener extends the JSONTokener to provide additional methods - for the parsing of HTTP headers.
HTTPTokener(String) - -Constructor for class org.json.HTTPTokener -
Construct an HTTPTokener from a string. -
-
-

-I

-
-
increment(String) - -Method in class org.json.JSONObject -
Increment a property of a JSONObject. -
isNull(int) - -Method in class org.json.JSONArray -
Determine if the value is null. -
isNull(String) - -Method in class org.json.JSONObject -
Determine if the value associated with the key is null or if there is - no value. -
-
-

-J

-
-
join(String) - -Method in class org.json.JSONArray -
Make a string from the contents of this JSONArray. -
JSONArray - Class in org.json
A JSONArray is an ordered sequence of values.
JSONArray() - -Constructor for class org.json.JSONArray -
Construct an empty JSONArray. -
JSONArray(JSONTokener) - -Constructor for class org.json.JSONArray -
Construct a JSONArray from a JSONTokener. -
JSONArray(String) - -Constructor for class org.json.JSONArray -
Construct a JSONArray from a source JSON text. -
JSONArray(Collection) - -Constructor for class org.json.JSONArray -
Construct a JSONArray from a Collection. -
JSONArray(Object) - -Constructor for class org.json.JSONArray -
Construct a JSONArray from an array -
JSONException - Exception in org.json
The JSONException is thrown by the JSON.org classes when things are amiss.
JSONException(String) - -Constructor for exception org.json.JSONException -
Constructs a JSONException with an explanatory message. -
JSONException(Throwable) - -Constructor for exception org.json.JSONException -
  -
JSONML - Class in org.json
This provides static methods to convert an XML text into a JSONArray or - JSONObject, and to covert a JSONArray or JSONObject into an XML text using - the JsonML transform.
JSONML() - -Constructor for class org.json.JSONML -
  -
JSONObject - Class in org.json
A JSONObject is an unordered collection of name/value pairs.
JSONObject() - -Constructor for class org.json.JSONObject -
Construct an empty JSONObject. -
JSONObject(JSONObject, String[]) - -Constructor for class org.json.JSONObject -
Construct a JSONObject from a subset of another JSONObject. -
JSONObject(JSONTokener) - -Constructor for class org.json.JSONObject -
Construct a JSONObject from a JSONTokener. -
JSONObject(Map) - -Constructor for class org.json.JSONObject -
Construct a JSONObject from a Map. -
JSONObject(Object) - -Constructor for class org.json.JSONObject -
Construct a JSONObject from an Object using bean getters. -
JSONObject(Object, String[]) - -Constructor for class org.json.JSONObject -
Construct a JSONObject from an Object, using reflection to find the - public members. -
JSONObject(String) - -Constructor for class org.json.JSONObject -
Construct a JSONObject from a source JSON text string. -
JSONObject(String, Locale) - -Constructor for class org.json.JSONObject -
Construct a JSONObject from a ResourceBundle. -
JSONString - Interface in org.json
The JSONString interface allows a toJSONString() - method so that a class can change the behavior of - JSONObject.toString(), JSONArray.toString(), - and JSONWriter.value(Object).
JSONStringer - Class in org.json
JSONStringer provides a quick and convenient way of producing JSON text.
JSONStringer() - -Constructor for class org.json.JSONStringer -
Make a fresh JSONStringer. -
JSONTokener - Class in org.json
A JSONTokener takes a source string and extracts characters and tokens from - it.
JSONTokener(Reader) - -Constructor for class org.json.JSONTokener -
Construct a JSONTokener from a Reader. -
JSONTokener(InputStream) - -Constructor for class org.json.JSONTokener -
Construct a JSONTokener from an InputStream. -
JSONTokener(String) - -Constructor for class org.json.JSONTokener -
Construct a JSONTokener from a string. -
JSONWriter - Class in org.json
JSONWriter provides a quick and convenient way of producing JSON text.
JSONWriter(Writer) - -Constructor for class org.json.JSONWriter -
Make a fresh JSONWriter. -
-
-

-K

-
-
key(String) - -Method in class org.json.JSONWriter -
Append a key. -
keys() - -Method in class org.json.JSONObject -
Get an enumeration of the keys of the JSONObject. -
-
-

-L

-
-
length() - -Method in class org.json.JSONArray -
Get the number of elements in the JSONArray, included nulls. -
length() - -Method in class org.json.JSONObject -
Get the number of keys stored in the JSONObject. -
LT - -Static variable in class org.json.XML -
The Character '<'. -
-
-

-M

-
-
more() - -Method in class org.json.JSONTokener -
Determine if the source string still contains characters that next() - can consume. -
-
-

-N

-
-
names() - -Method in class org.json.JSONObject -
Produce a JSONArray containing the names of the elements of this - JSONObject. -
next() - -Method in class org.json.JSONTokener -
Get the next character in the source string. -
next(char) - -Method in class org.json.JSONTokener -
Consume the next character, and check that it matches a specified - character. -
next(int) - -Method in class org.json.JSONTokener -
Get the next n characters. -
nextCDATA() - -Method in class org.json.XMLTokener -
Get the text in the CDATA block. -
nextClean() - -Method in class org.json.JSONTokener -
Get the next char in the string, skipping whitespace. -
nextContent() - -Method in class org.json.XMLTokener -
Get the next XML outer token, trimming whitespace. -
nextEntity(char) - -Method in class org.json.XMLTokener -
Return the next entity. -
nextMeta() - -Method in class org.json.XMLTokener -
Returns the next XML meta token. -
nextString(char) - -Method in class org.json.JSONTokener -
Return the characters up to the next close quote character. -
nextTo(char) - -Method in class org.json.JSONTokener -
Get the text up but not including the specified character or the - end of line, whichever comes first. -
nextTo(String) - -Method in class org.json.JSONTokener -
Get the text up but not including one of the specified delimiter - characters or the end of line, whichever comes first. -
nextToken() - -Method in class org.json.HTTPTokener -
Get the next token or string. -
nextToken() - -Method in class org.json.XMLTokener -
Get the next XML Token. -
nextValue() - -Method in class org.json.JSONTokener -
Get the next value. -
noSpace(String) - -Static method in class org.json.XML -
Throw an exception if the string contains whitespace. -
NULL - -Static variable in class org.json.JSONObject -
It is sometimes more convenient and less ambiguous to have a - NULL object than to use Java's null value. -
numberToString(Number) - -Static method in class org.json.JSONObject -
Produce a string from a Number. -
-
-

-O

-
-
object() - -Method in class org.json.JSONWriter -
Begin appending a new object. -
opt(int) - -Method in class org.json.JSONArray -
Get the optional object value associated with an index. -
opt(String) - -Method in class org.json.JSONObject -
Get an optional value associated with a key. -
optBoolean(int) - -Method in class org.json.JSONArray -
Get the optional boolean value associated with an index. -
optBoolean(int, boolean) - -Method in class org.json.JSONArray -
Get the optional boolean value associated with an index. -
optBoolean(String) - -Method in class org.json.JSONObject -
Get an optional boolean associated with a key. -
optBoolean(String, boolean) - -Method in class org.json.JSONObject -
Get an optional boolean associated with a key. -
optDouble(int) - -Method in class org.json.JSONArray -
Get the optional double value associated with an index. -
optDouble(int, double) - -Method in class org.json.JSONArray -
Get the optional double value associated with an index. -
optDouble(String) - -Method in class org.json.JSONObject -
Get an optional double associated with a key, - or NaN if there is no such key or if its value is not a number. -
optDouble(String, double) - -Method in class org.json.JSONObject -
Get an optional double associated with a key, or the - defaultValue if there is no such key or if its value is not a number. -
optInt(int) - -Method in class org.json.JSONArray -
Get the optional int value associated with an index. -
optInt(int, int) - -Method in class org.json.JSONArray -
Get the optional int value associated with an index. -
optInt(String) - -Method in class org.json.JSONObject -
Get an optional int value associated with a key, - or zero if there is no such key or if the value is not a number. -
optInt(String, int) - -Method in class org.json.JSONObject -
Get an optional int value associated with a key, - or the default if there is no such key or if the value is not a number. -
optJSONArray(int) - -Method in class org.json.JSONArray -
Get the optional JSONArray associated with an index. -
optJSONArray(String) - -Method in class org.json.JSONObject -
Get an optional JSONArray associated with a key. -
optJSONObject(int) - -Method in class org.json.JSONArray -
Get the optional JSONObject associated with an index. -
optJSONObject(String) - -Method in class org.json.JSONObject -
Get an optional JSONObject associated with a key. -
optLong(int) - -Method in class org.json.JSONArray -
Get the optional long value associated with an index. -
optLong(int, long) - -Method in class org.json.JSONArray -
Get the optional long value associated with an index. -
optLong(String) - -Method in class org.json.JSONObject -
Get an optional long value associated with a key, - or zero if there is no such key or if the value is not a number. -
optLong(String, long) - -Method in class org.json.JSONObject -
Get an optional long value associated with a key, - or the default if there is no such key or if the value is not a number. -
optString(int) - -Method in class org.json.JSONArray -
Get the optional string value associated with an index. -
optString(int, String) - -Method in class org.json.JSONArray -
Get the optional string associated with an index. -
optString(String) - -Method in class org.json.JSONObject -
Get an optional string associated with a key. -
optString(String, String) - -Method in class org.json.JSONObject -
Get an optional string associated with a key. -
org.json - package org.json
 
-
-

-P

-
-
put(boolean) - -Method in class org.json.JSONArray -
Append a boolean value. -
put(Collection) - -Method in class org.json.JSONArray -
Put a value in the JSONArray, where the value will be a - JSONArray which is produced from a Collection. -
put(double) - -Method in class org.json.JSONArray -
Append a double value. -
put(int) - -Method in class org.json.JSONArray -
Append an int value. -
put(long) - -Method in class org.json.JSONArray -
Append an long value. -
put(Map) - -Method in class org.json.JSONArray -
Put a value in the JSONArray, where the value will be a - JSONObject which is produced from a Map. -
put(Object) - -Method in class org.json.JSONArray -
Append an object value. -
put(int, boolean) - -Method in class org.json.JSONArray -
Put or replace a boolean value in the JSONArray. -
put(int, Collection) - -Method in class org.json.JSONArray -
Put a value in the JSONArray, where the value will be a - JSONArray which is produced from a Collection. -
put(int, double) - -Method in class org.json.JSONArray -
Put or replace a double value. -
put(int, int) - -Method in class org.json.JSONArray -
Put or replace an int value. -
put(int, long) - -Method in class org.json.JSONArray -
Put or replace a long value. -
put(int, Map) - -Method in class org.json.JSONArray -
Put a value in the JSONArray, where the value will be a - JSONObject that is produced from a Map. -
put(int, Object) - -Method in class org.json.JSONArray -
Put or replace an object value in the JSONArray. -
put(String, boolean) - -Method in class org.json.JSONObject -
Put a key/boolean pair in the JSONObject. -
put(String, Collection) - -Method in class org.json.JSONObject -
Put a key/value pair in the JSONObject, where the value will be a - JSONArray which is produced from a Collection. -
put(String, double) - -Method in class org.json.JSONObject -
Put a key/double pair in the JSONObject. -
put(String, int) - -Method in class org.json.JSONObject -
Put a key/int pair in the JSONObject. -
put(String, long) - -Method in class org.json.JSONObject -
Put a key/long pair in the JSONObject. -
put(String, Map) - -Method in class org.json.JSONObject -
Put a key/value pair in the JSONObject, where the value will be a - JSONObject which is produced from a Map. -
put(String, Object) - -Method in class org.json.JSONObject -
Put a key/value pair in the JSONObject. -
putOnce(String, Object) - -Method in class org.json.JSONObject -
Put a key/value pair in the JSONObject, but only if the key and the - value are both non-null, and only if there is not already a member - with that name. -
putOpt(String, Object) - -Method in class org.json.JSONObject -
Put a key/value pair in the JSONObject, but only if the - key and the value are both non-null. -
-
-

-Q

-
-
QUEST - -Static variable in class org.json.XML -
The Character '?'. -
QUOT - -Static variable in class org.json.XML -
The Character '"'. -
quote(String) - -Static method in class org.json.JSONObject -
Produce a string in double quotes with backslash sequences in all the - right places. -
-
-

-R

-
-
remove(int) - -Method in class org.json.JSONArray -
Remove an index and close the hole. -
remove(String) - -Method in class org.json.JSONObject -
Remove a name and its value, if present. -
rowToJSONArray(JSONTokener) - -Static method in class org.json.CDL -
Produce a JSONArray of strings from a row of comma delimited values. -
rowToJSONObject(JSONArray, JSONTokener) - -Static method in class org.json.CDL -
Produce a JSONObject from a row of comma delimited text, using a - parallel JSONArray of strings to provides the names of the elements. -
rowToString(JSONArray) - -Static method in class org.json.CDL -
Produce a comma delimited text row from a JSONArray. -
-
-

-S

-
-
skipPast(String) - -Method in class org.json.XMLTokener -
Skip characters until past the requested string. -
skipTo(char) - -Method in class org.json.JSONTokener -
Skip characters until the next character is the requested character. -
SLASH - -Static variable in class org.json.XML -
The Character '/'. -
stringToValue(String) - -Static method in class org.json.JSONObject -
Try to convert a string into a number, boolean, or null. -
stringToValue(String) - -Static method in class org.json.XML -
Try to convert a string into a number, boolean, or null. -
syntaxError(String) - -Method in class org.json.JSONTokener -
Make a JSONException to signal a syntax error. -
-
-

-T

-
-
testValidity(Object) - -Static method in class org.json.JSONObject -
Throw an exception if the object is a NaN or infinite number. -
toJSONArray(String) - -Static method in class org.json.CDL -
Produce a JSONArray of JSONObjects from a comma delimited text string, - using the first row as a source of names. -
toJSONArray(JSONTokener) - -Static method in class org.json.CDL -
Produce a JSONArray of JSONObjects from a comma delimited text string, - using the first row as a source of names. -
toJSONArray(JSONArray, String) - -Static method in class org.json.CDL -
Produce a JSONArray of JSONObjects from a comma delimited text string - using a supplied JSONArray as the source of element names. -
toJSONArray(JSONArray, JSONTokener) - -Static method in class org.json.CDL -
Produce a JSONArray of JSONObjects from a comma delimited text string - using a supplied JSONArray as the source of element names. -
toJSONArray(String) - -Static method in class org.json.JSONML -
Convert a well-formed (but not necessarily valid) XML string into a - JSONArray using the JsonML transform. -
toJSONArray(XMLTokener) - -Static method in class org.json.JSONML -
Convert a well-formed (but not necessarily valid) XML string into a - JSONArray using the JsonML transform. -
toJSONArray(JSONArray) - -Method in class org.json.JSONObject -
Produce a JSONArray containing the values of the members of this - JSONObject. -
toJSONObject(String) - -Static method in class org.json.Cookie -
Convert a cookie specification string into a JSONObject. -
toJSONObject(String) - -Static method in class org.json.CookieList -
Convert a cookie list into a JSONObject. -
toJSONObject(String) - -Static method in class org.json.HTTP -
Convert an HTTP header string into a JSONObject. -
toJSONObject(JSONArray) - -Method in class org.json.JSONArray -
Produce a JSONObject by combining a JSONArray of names with the values - of this JSONArray. -
toJSONObject(XMLTokener) - -Static method in class org.json.JSONML -
Convert a well-formed (but not necessarily valid) XML string into a - JSONObject using the JsonML transform. -
toJSONObject(String) - -Static method in class org.json.JSONML -
Convert a well-formed (but not necessarily valid) XML string into a - JSONObject using the JsonML transform. -
toJSONObject(String) - -Static method in class org.json.XML -
Convert a well-formed (but not necessarily valid) XML string into a - JSONObject. -
toJSONString() - -Method in interface org.json.JSONString -
The toJSONString method allows a class to produce its own JSON - serialization. -
toString(JSONArray) - -Static method in class org.json.CDL -
Produce a comma delimited text from a JSONArray of JSONObjects. -
toString(JSONArray, JSONArray) - -Static method in class org.json.CDL -
Produce a comma delimited text from a JSONArray of JSONObjects using - a provided list of names. -
toString(JSONObject) - -Static method in class org.json.Cookie -
Convert a JSONObject into a cookie specification string. -
toString(JSONObject) - -Static method in class org.json.CookieList -
Convert a JSONObject into a cookie list. -
toString(JSONObject) - -Static method in class org.json.HTTP -
Convert a JSONObject into an HTTP header. -
toString() - -Method in class org.json.JSONArray -
Make a JSON text of this JSONArray. -
toString(int) - -Method in class org.json.JSONArray -
Make a prettyprinted JSON text of this JSONArray. -
toString(JSONArray) - -Static method in class org.json.JSONML -
Reverse the JSONML transformation, making an XML text from a JSONArray. -
toString(JSONObject) - -Static method in class org.json.JSONML -
Reverse the JSONML transformation, making an XML text from a JSONObject. -
toString() - -Method in class org.json.JSONObject -
Make a JSON text of this JSONObject. -
toString(int) - -Method in class org.json.JSONObject -
Make a prettyprinted JSON text of this JSONObject. -
toString() - -Method in class org.json.JSONStringer -
Return the JSON text. -
toString() - -Method in class org.json.JSONTokener -
Make a printable string of this JSONTokener. -
toString(Object) - -Static method in class org.json.XML -
Convert a JSONObject into a well-formed, element-normal XML string. -
toString(Object, String) - -Static method in class org.json.XML -
Convert a JSONObject into a well-formed, element-normal XML string. -
-
-

-U

-
-
unescape(String) - -Static method in class org.json.Cookie -
Convert %hh sequences to single characters, and - convert plus to space. -
-
-

-V

-
-
value(boolean) - -Method in class org.json.JSONWriter -
Append either the value true or the value - false. -
value(double) - -Method in class org.json.JSONWriter -
Append a double value. -
value(long) - -Method in class org.json.JSONWriter -
Append a long value. -
value(Object) - -Method in class org.json.JSONWriter -
Append an object value. -
valueToString(Object) - -Static method in class org.json.JSONObject -
Make a JSON text of an Object value. -
-
-

-W

-
-
wrap(Object) - -Static method in class org.json.JSONObject -
Wrap an object, if necessary. -
write(Writer) - -Method in class org.json.JSONArray -
Write the contents of the JSONArray as JSON text to a writer. -
write(Writer) - -Method in class org.json.JSONObject -
Write the contents of the JSONObject as JSON text to a writer. -
-
-

-X

-
-
XML - Class in org.json
This provides static methods to convert an XML text into a JSONObject, - and to covert a JSONObject into an XML text.
XML() - -Constructor for class org.json.XML -
  -
XMLTokener - Class in org.json
The XMLTokener extends the JSONTokener to provide additional methods - for the parsing of XML texts.
XMLTokener(String) - -Constructor for class org.json.XMLTokener -
Construct an XMLTokener from a string. -
-
-A B C D E G H I J K L M N O P Q R S T U V W X - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/index.html b/distribution/json4p-0.1.1/reference/index.html deleted file mode 100644 index 708ff1916..000000000 --- a/distribution/json4p-0.1.1/reference/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - -Javadocs: json4p - - - - - - - - -<H2> -Frame Alert</H2> - -<P> -This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. -<BR> -Link to<A HREF="org/json/package-summary.html">Non-frame version.</A> - - - diff --git a/distribution/json4p-0.1.1/reference/org/json/CDL.html b/distribution/json4p-0.1.1/reference/org/json/CDL.html deleted file mode 100644 index 53572505d..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/CDL.html +++ /dev/null @@ -1,500 +0,0 @@ - - - - - - -CDL (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class CDL

-
-java.lang.Object
-  extended by org.json.CDL
-
-
-
-
public class CDL
extends java.lang.Object
- - -

-This provides static methods to convert comma delimited text into a - JSONArray, and to covert a JSONArray into comma delimited text. Comma - delimited text is a very popular format for data interchange. It is - understood by most database, spreadsheet, and organizer programs. -

- Each row of text represents a row in a table or a data record. Each row - ends with a NEWLINE character. Each row contains one or more values. - Values are separated by commas. A value can contain any character except - for comma, unless is is wrapped in single quotes or double quotes. -

- The first row usually contains the names of the columns. -

- A comma delimited list can be converted into a JSONArray of JSONObjects. - The names for the elements in the JSONObjects can be taken from the names - in the first row. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Constructor Summary
CDL() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
-static JSONArrayrowToJSONArray(JSONTokener x) - -
-          Produce a JSONArray of strings from a row of comma delimited values.
-static JSONObjectrowToJSONObject(JSONArray names, - JSONTokener x) - -
-          Produce a JSONObject from a row of comma delimited text, using a - parallel JSONArray of strings to provides the names of the elements.
-static java.lang.StringrowToString(JSONArray ja) - -
-          Produce a comma delimited text row from a JSONArray.
-static JSONArraytoJSONArray(JSONArray names, - JSONTokener x) - -
-          Produce a JSONArray of JSONObjects from a comma delimited text string - using a supplied JSONArray as the source of element names.
-static JSONArraytoJSONArray(JSONArray names, - java.lang.String string) - -
-          Produce a JSONArray of JSONObjects from a comma delimited text string - using a supplied JSONArray as the source of element names.
-static JSONArraytoJSONArray(JSONTokener x) - -
-          Produce a JSONArray of JSONObjects from a comma delimited text string, - using the first row as a source of names.
-static JSONArraytoJSONArray(java.lang.String string) - -
-          Produce a JSONArray of JSONObjects from a comma delimited text string, - using the first row as a source of names.
-static java.lang.StringtoString(JSONArray ja) - -
-          Produce a comma delimited text from a JSONArray of JSONObjects.
-static java.lang.StringtoString(JSONArray names, - JSONArray ja) - -
-          Produce a comma delimited text from a JSONArray of JSONObjects using - a provided list of names.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-CDL

-
-public CDL()
-
-
- - - - - - - - -
-Method Detail
- -

-rowToJSONArray

-
-public static JSONArray rowToJSONArray(JSONTokener x)
-                                throws JSONException
-
-
Produce a JSONArray of strings from a row of comma delimited values. -

-

-
Parameters:
x - A JSONTokener of the source text. -
Returns:
A JSONArray of strings. -
Throws: -
JSONException
-
-
-
- -

-rowToJSONObject

-
-public static JSONObject rowToJSONObject(JSONArray names,
-                                         JSONTokener x)
-                                  throws JSONException
-
-
Produce a JSONObject from a row of comma delimited text, using a - parallel JSONArray of strings to provides the names of the elements. -

-

-
Parameters:
names - A JSONArray of names. This is commonly obtained from the - first row of a comma delimited text file using the rowToJSONArray - method.
x - A JSONTokener of the source text. -
Returns:
A JSONObject combining the names and values. -
Throws: -
JSONException
-
-
-
- -

-rowToString

-
-public static java.lang.String rowToString(JSONArray ja)
-
-
Produce a comma delimited text row from a JSONArray. Values containing - the comma character will be quoted. Troublesome characters may be - removed. -

-

-
Parameters:
ja - A JSONArray of strings. -
Returns:
A string ending in NEWLINE.
-
-
-
- -

-toJSONArray

-
-public static JSONArray toJSONArray(java.lang.String string)
-                             throws JSONException
-
-
Produce a JSONArray of JSONObjects from a comma delimited text string, - using the first row as a source of names. -

-

-
Parameters:
string - The comma delimited text. -
Returns:
A JSONArray of JSONObjects. -
Throws: -
JSONException
-
-
-
- -

-toJSONArray

-
-public static JSONArray toJSONArray(JSONTokener x)
-                             throws JSONException
-
-
Produce a JSONArray of JSONObjects from a comma delimited text string, - using the first row as a source of names. -

-

-
Parameters:
x - The JSONTokener containing the comma delimited text. -
Returns:
A JSONArray of JSONObjects. -
Throws: -
JSONException
-
-
-
- -

-toJSONArray

-
-public static JSONArray toJSONArray(JSONArray names,
-                                    java.lang.String string)
-                             throws JSONException
-
-
Produce a JSONArray of JSONObjects from a comma delimited text string - using a supplied JSONArray as the source of element names. -

-

-
Parameters:
names - A JSONArray of strings.
string - The comma delimited text. -
Returns:
A JSONArray of JSONObjects. -
Throws: -
JSONException
-
-
-
- -

-toJSONArray

-
-public static JSONArray toJSONArray(JSONArray names,
-                                    JSONTokener x)
-                             throws JSONException
-
-
Produce a JSONArray of JSONObjects from a comma delimited text string - using a supplied JSONArray as the source of element names. -

-

-
Parameters:
names - A JSONArray of strings.
x - A JSONTokener of the source text. -
Returns:
A JSONArray of JSONObjects. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(JSONArray ja)
-                                 throws JSONException
-
-
Produce a comma delimited text from a JSONArray of JSONObjects. The - first row will be a list of names obtained by inspecting the first - JSONObject. -

-

-
Parameters:
ja - A JSONArray of JSONObjects. -
Returns:
A comma delimited text. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(JSONArray names,
-                                        JSONArray ja)
-                                 throws JSONException
-
-
Produce a comma delimited text from a JSONArray of JSONObjects using - a provided list of names. The list of names is not included in the - output. -

-

-
Parameters:
names - A JSONArray of strings.
ja - A JSONArray of JSONObjects. -
Returns:
A comma delimited text. -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/Cookie.html b/distribution/json4p-0.1.1/reference/org/json/Cookie.html deleted file mode 100644 index 3c7363f67..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/Cookie.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - - - -Cookie (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class Cookie

-
-java.lang.Object
-  extended by org.json.Cookie
-
-
-
-
public class Cookie
extends java.lang.Object
- - -

-Convert a web browser cookie specification to a JSONObject and back. - JSON and Cookies are both notations for name/value pairs. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Constructor Summary
Cookie() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
-static java.lang.Stringescape(java.lang.String string) - -
-          Produce a copy of a string in which the characters '+', '%', '=', ';' - and control characters are replaced with "%hh".
-static JSONObjecttoJSONObject(java.lang.String string) - -
-          Convert a cookie specification string into a JSONObject.
-static java.lang.StringtoString(JSONObject jo) - -
-          Convert a JSONObject into a cookie specification string.
-static java.lang.Stringunescape(java.lang.String string) - -
-          Convert %hh sequences to single characters, and - convert plus to space.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-Cookie

-
-public Cookie()
-
-
- - - - - - - - -
-Method Detail
- -

-escape

-
-public static java.lang.String escape(java.lang.String string)
-
-
Produce a copy of a string in which the characters '+', '%', '=', ';' - and control characters are replaced with "%hh". This is a gentle form - of URL encoding, attempting to cause as little distortion to the - string as possible. The characters '=' and ';' are meta characters in - cookies. By convention, they are escaped using the URL-encoding. This is - only a convention, not a standard. Often, cookies are expected to have - encoded values. We encode '=' and ';' because we must. We encode '%' and - '+' because they are meta characters in URL encoding. -

-

-
Parameters:
string - The source string. -
Returns:
The escaped result.
-
-
-
- -

-toJSONObject

-
-public static JSONObject toJSONObject(java.lang.String string)
-                               throws JSONException
-
-
Convert a cookie specification string into a JSONObject. The string - will contain a name value pair separated by '='. The name and the value - will be unescaped, possibly converting '+' and '%' sequences. The - cookie properties may follow, separated by ';', also represented as - name=value (except the secure property, which does not have a value). - The name will be stored under the key "name", and the value will be - stored under the key "value". This method does not do checking or - validation of the parameters. It only converts the cookie string into - a JSONObject. -

-

-
Parameters:
string - The cookie specification string. -
Returns:
A JSONObject containing "name", "value", and possibly other - members. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(JSONObject jo)
-                                 throws JSONException
-
-
Convert a JSONObject into a cookie specification string. The JSONObject - must contain "name" and "value" members. - If the JSONObject contains "expires", "domain", "path", or "secure" - members, they will be appended to the cookie specification string. - All other members are ignored. -

-

-
Parameters:
jo - A JSONObject -
Returns:
A cookie specification string -
Throws: -
JSONException
-
-
-
- -

-unescape

-
-public static java.lang.String unescape(java.lang.String string)
-
-
Convert %hh sequences to single characters, and - convert plus to space. -

-

-
Parameters:
string - A string that may contain - + (plus) and - %hh sequences. -
Returns:
The unescaped string.
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/CookieList.html b/distribution/json4p-0.1.1/reference/org/json/CookieList.html deleted file mode 100644 index 2f0b3a4d1..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/CookieList.html +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - -CookieList (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class CookieList

-
-java.lang.Object
-  extended by org.json.CookieList
-
-
-
-
public class CookieList
extends java.lang.Object
- - -

-Convert a web browser cookie list string to a JSONObject and back. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Constructor Summary
CookieList() - -
-           
-  - - - - - - - - - - - - - - - -
-Method Summary
-static JSONObjecttoJSONObject(java.lang.String string) - -
-          Convert a cookie list into a JSONObject.
-static java.lang.StringtoString(JSONObject jo) - -
-          Convert a JSONObject into a cookie list.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-CookieList

-
-public CookieList()
-
-
- - - - - - - - -
-Method Detail
- -

-toJSONObject

-
-public static JSONObject toJSONObject(java.lang.String string)
-                               throws JSONException
-
-
Convert a cookie list into a JSONObject. A cookie list is a sequence - of name/value pairs. The names are separated from the values by '='. - The pairs are separated by ';'. The names and the values - will be unescaped, possibly converting '+' and '%' sequences. - - To add a cookie to a cooklist, - cookielistJSONObject.put(cookieJSONObject.getString("name"), - cookieJSONObject.getString("value")); -

-

-
Parameters:
string - A cookie list string -
Returns:
A JSONObject -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(JSONObject jo)
-                                 throws JSONException
-
-
Convert a JSONObject into a cookie list. A cookie list is a sequence - of name/value pairs. The names are separated from the values by '='. - The pairs are separated by ';'. The characters '%', '+', '=', and ';' - in the names and values are replaced by "%hh". -

-

-
Parameters:
jo - A JSONObject -
Returns:
A cookie list string -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/HTTP.html b/distribution/json4p-0.1.1/reference/org/json/HTTP.html deleted file mode 100644 index 15038e189..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/HTTP.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - -HTTP (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class HTTP

-
-java.lang.Object
-  extended by org.json.HTTP
-
-
-
-
public class HTTP
extends java.lang.Object
- - -

-Convert an HTTP header to a JSONObject and back. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Field Summary
-static java.lang.StringCRLF - -
-          Carriage return/line feed.
-  - - - - - - - - - - -
-Constructor Summary
HTTP() - -
-           
-  - - - - - - - - - - - - - - - -
-Method Summary
-static JSONObjecttoJSONObject(java.lang.String string) - -
-          Convert an HTTP header string into a JSONObject.
-static java.lang.StringtoString(JSONObject jo) - -
-          Convert a JSONObject into an HTTP header.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Field Detail
- -

-CRLF

-
-public static final java.lang.String CRLF
-
-
Carriage return/line feed. -

-

-
See Also:
Constant Field Values
-
- - - - - - - - -
-Constructor Detail
- -

-HTTP

-
-public HTTP()
-
-
- - - - - - - - -
-Method Detail
- -

-toJSONObject

-
-public static JSONObject toJSONObject(java.lang.String string)
-                               throws JSONException
-
-
Convert an HTTP header string into a JSONObject. It can be a request - header or a response header. A request header will contain -
{
-    Method: "POST" (for example),
-    "Request-URI": "/" (for example),
-    "HTTP-Version": "HTTP/1.1" (for example)
- }
- A response header will contain -
{
-    "HTTP-Version": "HTTP/1.1" (for example),
-    "Status-Code": "200" (for example),
-    "Reason-Phrase": "OK" (for example)
- }
- In addition, the other parameters in the header will be captured, using - the HTTP field names as JSON names, so that
-    Date: Sun, 26 May 2002 18:06:04 GMT
-    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
-    Cache-Control: no-cache
- become -
{...
-    Date: "Sun, 26 May 2002 18:06:04 GMT",
-    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
-    "Cache-Control": "no-cache",
- ...}
- It does no further checking or conversion. It does not parse dates. - It does not do '%' transforms on URLs. -

-

-
Parameters:
string - An HTTP header string. -
Returns:
A JSONObject containing the elements and attributes - of the XML string. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(JSONObject jo)
-                                 throws JSONException
-
-
Convert a JSONObject into an HTTP header. A request header must contain -
{
-    Method: "POST" (for example),
-    "Request-URI": "/" (for example),
-    "HTTP-Version": "HTTP/1.1" (for example)
- }
- A response header must contain -
{
-    "HTTP-Version": "HTTP/1.1" (for example),
-    "Status-Code": "200" (for example),
-    "Reason-Phrase": "OK" (for example)
- }
- Any other members of the JSONObject will be output as HTTP fields. - The result will end with two CRLF pairs. -

-

-
Parameters:
jo - A JSONObject -
Returns:
An HTTP header string. -
Throws: -
JSONException - if the object does not contain enough - information.
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html b/distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html deleted file mode 100644 index ce1e12662..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/HTTPTokener.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - -HTTPTokener (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class HTTPTokener

-
-java.lang.Object
-  extended by org.json.JSONTokener
-      extended by org.json.HTTPTokener
-
-
-
-
public class HTTPTokener
extends JSONTokener
- - -

-The HTTPTokener extends the JSONTokener to provide additional methods - for the parsing of HTTP headers. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Constructor Summary
HTTPTokener(java.lang.String string) - -
-          Construct an HTTPTokener from a string.
-  - - - - - - - - - - - -
-Method Summary
- java.lang.StringnextToken() - -
-          Get the next token or string.
- - - - - - - -
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-HTTPTokener

-
-public HTTPTokener(java.lang.String string)
-
-
Construct an HTTPTokener from a string. -

-

-
Parameters:
string - A source string.
-
- - - - - - - - -
-Method Detail
- -

-nextToken

-
-public java.lang.String nextToken()
-                           throws JSONException
-
-
Get the next token or string. This is used in parsing HTTP headers. -

-

- -
Returns:
A String. -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONArray.html b/distribution/json4p-0.1.1/reference/org/json/JSONArray.html deleted file mode 100644 index f7834ac5c..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONArray.html +++ /dev/null @@ -1,1473 +0,0 @@ - - - - - - -JSONArray (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class JSONArray

-
-java.lang.Object
-  extended by org.json.JSONArray
-
-
-
-
public class JSONArray
extends java.lang.Object
- - -

-A JSONArray is an ordered sequence of values. Its external text form is a - string wrapped in square brackets with commas separating the values. The - internal form is an object having get and opt - methods for accessing the values by index, and put methods for - adding or replacing values. The values can be any of these types: - Boolean, JSONArray, JSONObject, - Number, String, or the - JSONObject.NULL object. -

- The constructor can convert a JSON text into a Java object. The - toString method converts to JSON text. -

- A get method returns a value if one can be found, and throws an - exception if one cannot be found. An opt method returns a - default value instead of throwing an exception, and so is useful for - obtaining optional values. -

- The generic get() and opt() methods return an - object which you can cast or query for type. There are also typed - get and opt methods that do type checking and type - coercion for you. -

- The texts produced by the toString methods strictly conform to - JSON syntax rules. The constructors are more forgiving in the texts they will - accept: -

    -
  • An extra , (comma) may appear just - before the closing bracket.
  • -
  • The null value will be inserted when there - is , (comma) elision.
  • -
  • Strings may be quoted with ' (single - quote).
  • -
  • Strings do not need to be quoted at all if they do not begin with a quote - or single quote, and if they do not contain leading or trailing spaces, - and if they do not contain any of these characters: - { } [ ] / \ : , = ; # and if they do not look like numbers - and if they are not the reserved words true, - false, or null.
  • -
  • Values can be separated by ; (semicolon) as - well as by , (comma).
  • -
  • Numbers may have the - 0x- (hex) prefix.
  • -
-

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - - - - - - - - - - - - - -
-Constructor Summary
JSONArray() - -
-          Construct an empty JSONArray.
JSONArray(java.util.Collection collection) - -
-          Construct a JSONArray from a Collection.
JSONArray(JSONTokener x) - -
-          Construct a JSONArray from a JSONTokener.
JSONArray(java.lang.Object array) - -
-          Construct a JSONArray from an array
JSONArray(java.lang.String source) - -
-          Construct a JSONArray from a source JSON text.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- java.lang.Objectget(int index) - -
-          Get the object value associated with an index.
- booleangetBoolean(int index) - -
-          Get the boolean value associated with an index.
- doublegetDouble(int index) - -
-          Get the double value associated with an index.
- intgetInt(int index) - -
-          Get the int value associated with an index.
- JSONArraygetJSONArray(int index) - -
-          Get the JSONArray associated with an index.
- JSONObjectgetJSONObject(int index) - -
-          Get the JSONObject associated with an index.
- longgetLong(int index) - -
-          Get the long value associated with an index.
- java.lang.StringgetString(int index) - -
-          Get the string associated with an index.
- booleanisNull(int index) - -
-          Determine if the value is null.
- java.lang.Stringjoin(java.lang.String separator) - -
-          Make a string from the contents of this JSONArray.
- intlength() - -
-          Get the number of elements in the JSONArray, included nulls.
- java.lang.Objectopt(int index) - -
-          Get the optional object value associated with an index.
- booleanoptBoolean(int index) - -
-          Get the optional boolean value associated with an index.
- booleanoptBoolean(int index, - boolean defaultValue) - -
-          Get the optional boolean value associated with an index.
- doubleoptDouble(int index) - -
-          Get the optional double value associated with an index.
- doubleoptDouble(int index, - double defaultValue) - -
-          Get the optional double value associated with an index.
- intoptInt(int index) - -
-          Get the optional int value associated with an index.
- intoptInt(int index, - int defaultValue) - -
-          Get the optional int value associated with an index.
- JSONArrayoptJSONArray(int index) - -
-          Get the optional JSONArray associated with an index.
- JSONObjectoptJSONObject(int index) - -
-          Get the optional JSONObject associated with an index.
- longoptLong(int index) - -
-          Get the optional long value associated with an index.
- longoptLong(int index, - long defaultValue) - -
-          Get the optional long value associated with an index.
- java.lang.StringoptString(int index) - -
-          Get the optional string value associated with an index.
- java.lang.StringoptString(int index, - java.lang.String defaultValue) - -
-          Get the optional string associated with an index.
- JSONArrayput(boolean value) - -
-          Append a boolean value.
- JSONArrayput(java.util.Collection value) - -
-          Put a value in the JSONArray, where the value will be a - JSONArray which is produced from a Collection.
- JSONArrayput(double value) - -
-          Append a double value.
- JSONArrayput(int value) - -
-          Append an int value.
- JSONArrayput(int index, - boolean value) - -
-          Put or replace a boolean value in the JSONArray.
- JSONArrayput(int index, - java.util.Collection value) - -
-          Put a value in the JSONArray, where the value will be a - JSONArray which is produced from a Collection.
- JSONArrayput(int index, - double value) - -
-          Put or replace a double value.
- JSONArrayput(int index, - int value) - -
-          Put or replace an int value.
- JSONArrayput(int index, - long value) - -
-          Put or replace a long value.
- JSONArrayput(int index, - java.util.Map value) - -
-          Put a value in the JSONArray, where the value will be a - JSONObject that is produced from a Map.
- JSONArrayput(int index, - java.lang.Object value) - -
-          Put or replace an object value in the JSONArray.
- JSONArrayput(long value) - -
-          Append an long value.
- JSONArrayput(java.util.Map value) - -
-          Put a value in the JSONArray, where the value will be a - JSONObject which is produced from a Map.
- JSONArrayput(java.lang.Object value) - -
-          Append an object value.
- java.lang.Objectremove(int index) - -
-          Remove an index and close the hole.
- JSONObjecttoJSONObject(JSONArray names) - -
-          Produce a JSONObject by combining a JSONArray of names with the values - of this JSONArray.
- java.lang.StringtoString() - -
-          Make a JSON text of this JSONArray.
- java.lang.StringtoString(int indentFactor) - -
-          Make a prettyprinted JSON text of this JSONArray.
- java.io.Writerwrite(java.io.Writer writer) - -
-          Write the contents of the JSONArray as JSON text to a writer.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-JSONArray

-
-public JSONArray()
-
-
Construct an empty JSONArray. -

-

-
- -

-JSONArray

-
-public JSONArray(JSONTokener x)
-          throws JSONException
-
-
Construct a JSONArray from a JSONTokener. -

-

-
Parameters:
x - A JSONTokener -
Throws: -
JSONException - If there is a syntax error.
-
-
- -

-JSONArray

-
-public JSONArray(java.lang.String source)
-          throws JSONException
-
-
Construct a JSONArray from a source JSON text. -

-

-
Parameters:
source - A string that begins with - [ (left bracket) - and ends with ] (right bracket). -
Throws: -
JSONException - If there is a syntax error.
-
-
- -

-JSONArray

-
-public JSONArray(java.util.Collection collection)
-
-
Construct a JSONArray from a Collection. -

-

-
Parameters:
collection - A Collection.
-
-
- -

-JSONArray

-
-public JSONArray(java.lang.Object array)
-          throws JSONException
-
-
Construct a JSONArray from an array -

-

- -
Throws: -
JSONException - If not an array.
-
- - - - - - - - -
-Method Detail
- -

-get

-
-public java.lang.Object get(int index)
-                     throws JSONException
-
-
Get the object value associated with an index. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
An object value. -
Throws: -
JSONException - If there is no value for the index.
-
-
-
- -

-getBoolean

-
-public boolean getBoolean(int index)
-                   throws JSONException
-
-
Get the boolean value associated with an index. - The string values "true" and "false" are converted to boolean. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The truth. -
Throws: -
JSONException - If there is no value for the index or if the - value is not convertible to boolean.
-
-
-
- -

-getDouble

-
-public double getDouble(int index)
-                 throws JSONException
-
-
Get the double value associated with an index. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The value. -
Throws: -
JSONException - If the key is not found or if the value cannot - be converted to a number.
-
-
-
- -

-getInt

-
-public int getInt(int index)
-           throws JSONException
-
-
Get the int value associated with an index. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The value. -
Throws: -
JSONException - If the key is not found or if the value is not a number.
-
-
-
- -

-getJSONArray

-
-public JSONArray getJSONArray(int index)
-                       throws JSONException
-
-
Get the JSONArray associated with an index. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
A JSONArray value. -
Throws: -
JSONException - If there is no value for the index. or if the - value is not a JSONArray
-
-
-
- -

-getJSONObject

-
-public JSONObject getJSONObject(int index)
-                         throws JSONException
-
-
Get the JSONObject associated with an index. -

-

-
Parameters:
index - subscript -
Returns:
A JSONObject value. -
Throws: -
JSONException - If there is no value for the index or if the - value is not a JSONObject
-
-
-
- -

-getLong

-
-public long getLong(int index)
-             throws JSONException
-
-
Get the long value associated with an index. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The value. -
Throws: -
JSONException - If the key is not found or if the value cannot - be converted to a number.
-
-
-
- -

-getString

-
-public java.lang.String getString(int index)
-                           throws JSONException
-
-
Get the string associated with an index. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
A string value. -
Throws: -
JSONException - If there is no string value for the index.
-
-
-
- -

-isNull

-
-public boolean isNull(int index)
-
-
Determine if the value is null. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
true if the value at the index is null, or if there is no value.
-
-
-
- -

-join

-
-public java.lang.String join(java.lang.String separator)
-                      throws JSONException
-
-
Make a string from the contents of this JSONArray. The - separator string is inserted between each element. - Warning: This method assumes that the data structure is acyclical. -

-

-
Parameters:
separator - A string that will be inserted between the elements. -
Returns:
a string. -
Throws: -
JSONException - If the array contains an invalid number.
-
-
-
- -

-length

-
-public int length()
-
-
Get the number of elements in the JSONArray, included nulls. -

-

- -
Returns:
The length (or size).
-
-
-
- -

-opt

-
-public java.lang.Object opt(int index)
-
-
Get the optional object value associated with an index. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
An object value, or null if there is no - object at that index.
-
-
-
- -

-optBoolean

-
-public boolean optBoolean(int index)
-
-
Get the optional boolean value associated with an index. - It returns false if there is no value at that index, - or if the value is not Boolean.TRUE or the String "true". -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The truth.
-
-
-
- -

-optBoolean

-
-public boolean optBoolean(int index,
-                          boolean defaultValue)
-
-
Get the optional boolean value associated with an index. - It returns the defaultValue if there is no value at that index or if - it is not a Boolean or the String "true" or "false" (case insensitive). -

-

-
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - A boolean default. -
Returns:
The truth.
-
-
-
- -

-optDouble

-
-public double optDouble(int index)
-
-
Get the optional double value associated with an index. - NaN is returned if there is no value for the index, - or if the value is not a number and cannot be converted to a number. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The value.
-
-
-
- -

-optDouble

-
-public double optDouble(int index,
-                        double defaultValue)
-
-
Get the optional double value associated with an index. - The defaultValue is returned if there is no value for the index, - or if the value is not a number and cannot be converted to a number. -

-

-
Parameters:
index - subscript
defaultValue - The default value. -
Returns:
The value.
-
-
-
- -

-optInt

-
-public int optInt(int index)
-
-
Get the optional int value associated with an index. - Zero is returned if there is no value for the index, - or if the value is not a number and cannot be converted to a number. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The value.
-
-
-
- -

-optInt

-
-public int optInt(int index,
-                  int defaultValue)
-
-
Get the optional int value associated with an index. - The defaultValue is returned if there is no value for the index, - or if the value is not a number and cannot be converted to a number. -

-

-
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. -
Returns:
The value.
-
-
-
- -

-optJSONArray

-
-public JSONArray optJSONArray(int index)
-
-
Get the optional JSONArray associated with an index. -

-

-
Parameters:
index - subscript -
Returns:
A JSONArray value, or null if the index has no value, - or if the value is not a JSONArray.
-
-
-
- -

-optJSONObject

-
-public JSONObject optJSONObject(int index)
-
-
Get the optional JSONObject associated with an index. - Null is returned if the key is not found, or null if the index has - no value, or if the value is not a JSONObject. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
A JSONObject value.
-
-
-
- -

-optLong

-
-public long optLong(int index)
-
-
Get the optional long value associated with an index. - Zero is returned if there is no value for the index, - or if the value is not a number and cannot be converted to a number. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
The value.
-
-
-
- -

-optLong

-
-public long optLong(int index,
-                    long defaultValue)
-
-
Get the optional long value associated with an index. - The defaultValue is returned if there is no value for the index, - or if the value is not a number and cannot be converted to a number. -

-

-
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. -
Returns:
The value.
-
-
-
- -

-optString

-
-public java.lang.String optString(int index)
-
-
Get the optional string value associated with an index. It returns an - empty string if there is no value at that index. If the value - is not a string and is not null, then it is coverted to a string. -

-

-
Parameters:
index - The index must be between 0 and length() - 1. -
Returns:
A String value.
-
-
-
- -

-optString

-
-public java.lang.String optString(int index,
-                                  java.lang.String defaultValue)
-
-
Get the optional string associated with an index. - The defaultValue is returned if the key is not found. -

-

-
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. -
Returns:
A String value.
-
-
-
- -

-put

-
-public JSONArray put(boolean value)
-
-
Append a boolean value. This increases the array's length by one. -

-

-
Parameters:
value - A boolean value. -
Returns:
this.
-
-
-
- -

-put

-
-public JSONArray put(java.util.Collection value)
-
-
Put a value in the JSONArray, where the value will be a - JSONArray which is produced from a Collection. -

-

-
Parameters:
value - A Collection value. -
Returns:
this.
-
-
-
- -

-put

-
-public JSONArray put(double value)
-              throws JSONException
-
-
Append a double value. This increases the array's length by one. -

-

-
Parameters:
value - A double value. -
Returns:
this. -
Throws: -
JSONException - if the value is not finite.
-
-
-
- -

-put

-
-public JSONArray put(int value)
-
-
Append an int value. This increases the array's length by one. -

-

-
Parameters:
value - An int value. -
Returns:
this.
-
-
-
- -

-put

-
-public JSONArray put(long value)
-
-
Append an long value. This increases the array's length by one. -

-

-
Parameters:
value - A long value. -
Returns:
this.
-
-
-
- -

-put

-
-public JSONArray put(java.util.Map value)
-
-
Put a value in the JSONArray, where the value will be a - JSONObject which is produced from a Map. -

-

-
Parameters:
value - A Map value. -
Returns:
this.
-
-
-
- -

-put

-
-public JSONArray put(java.lang.Object value)
-
-
Append an object value. This increases the array's length by one. -

-

-
Parameters:
value - An object value. The value should be a - Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the - JSONObject.NULL object. -
Returns:
this.
-
-
-
- -

-put

-
-public JSONArray put(int index,
-                     boolean value)
-              throws JSONException
-
-
Put or replace a boolean value in the JSONArray. If the index is greater - than the length of the JSONArray, then null elements will be added as - necessary to pad it out. -

-

-
Parameters:
index - The subscript.
value - A boolean value. -
Returns:
this. -
Throws: -
JSONException - If the index is negative.
-
-
-
- -

-put

-
-public JSONArray put(int index,
-                     java.util.Collection value)
-              throws JSONException
-
-
Put a value in the JSONArray, where the value will be a - JSONArray which is produced from a Collection. -

-

-
Parameters:
index - The subscript.
value - A Collection value. -
Returns:
this. -
Throws: -
JSONException - If the index is negative or if the value is - not finite.
-
-
-
- -

-put

-
-public JSONArray put(int index,
-                     double value)
-              throws JSONException
-
-
Put or replace a double value. If the index is greater than the length of - the JSONArray, then null elements will be added as necessary to pad - it out. -

-

-
Parameters:
index - The subscript.
value - A double value. -
Returns:
this. -
Throws: -
JSONException - If the index is negative or if the value is - not finite.
-
-
-
- -

-put

-
-public JSONArray put(int index,
-                     int value)
-              throws JSONException
-
-
Put or replace an int value. If the index is greater than the length of - the JSONArray, then null elements will be added as necessary to pad - it out. -

-

-
Parameters:
index - The subscript.
value - An int value. -
Returns:
this. -
Throws: -
JSONException - If the index is negative.
-
-
-
- -

-put

-
-public JSONArray put(int index,
-                     long value)
-              throws JSONException
-
-
Put or replace a long value. If the index is greater than the length of - the JSONArray, then null elements will be added as necessary to pad - it out. -

-

-
Parameters:
index - The subscript.
value - A long value. -
Returns:
this. -
Throws: -
JSONException - If the index is negative.
-
-
-
- -

-put

-
-public JSONArray put(int index,
-                     java.util.Map value)
-              throws JSONException
-
-
Put a value in the JSONArray, where the value will be a - JSONObject that is produced from a Map. -

-

-
Parameters:
index - The subscript.
value - The Map value. -
Returns:
this. -
Throws: -
JSONException - If the index is negative or if the the value is - an invalid number.
-
-
-
- -

-put

-
-public JSONArray put(int index,
-                     java.lang.Object value)
-              throws JSONException
-
-
Put or replace an object value in the JSONArray. If the index is greater - than the length of the JSONArray, then null elements will be added as - necessary to pad it out. -

-

-
Parameters:
index - The subscript.
value - The value to put into the array. The value should be a - Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the - JSONObject.NULL object. -
Returns:
this. -
Throws: -
JSONException - If the index is negative or if the the value is - an invalid number.
-
-
-
- -

-remove

-
-public java.lang.Object remove(int index)
-
-
Remove an index and close the hole. -

-

-
Parameters:
index - The index of the element to be removed. -
Returns:
The value that was associated with the index, - or null if there was no value.
-
-
-
- -

-toJSONObject

-
-public JSONObject toJSONObject(JSONArray names)
-                        throws JSONException
-
-
Produce a JSONObject by combining a JSONArray of names with the values - of this JSONArray. -

-

-
Parameters:
names - A JSONArray containing a list of key strings. These will be - paired with the values. -
Returns:
A JSONObject, or null if there are no names or if this JSONArray - has no values. -
Throws: -
JSONException - If any of the names are null.
-
-
-
- -

-toString

-
-public java.lang.String toString()
-
-
Make a JSON text of this JSONArray. For compactness, no - unnecessary whitespace is added. If it is not possible to produce a - syntactically correct JSON text then null will be returned instead. This - could occur if the array contains an invalid number. -

- Warning: This method assumes that the data structure is acyclical. -

-

-
Overrides:
toString in class java.lang.Object
-
-
- -
Returns:
a printable, displayable, transmittable - representation of the array.
-
-
-
- -

-toString

-
-public java.lang.String toString(int indentFactor)
-                          throws JSONException
-
-
Make a prettyprinted JSON text of this JSONArray. - Warning: This method assumes that the data structure is acyclical. -

-

-
Parameters:
indentFactor - The number of spaces to add to each level of - indentation. -
Returns:
a printable, displayable, transmittable - representation of the object, beginning - with [ (left bracket) and ending - with ] (right bracket). -
Throws: -
JSONException
-
-
-
- -

-write

-
-public java.io.Writer write(java.io.Writer writer)
-                     throws JSONException
-
-
Write the contents of the JSONArray as JSON text to a writer. - For compactness, no whitespace is added. -

- Warning: This method assumes that the data structure is acyclical. -

-

- -
Returns:
The writer. -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONException.html b/distribution/json4p-0.1.1/reference/org/json/JSONException.html deleted file mode 100644 index 4d9c1f552..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONException.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -JSONException (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class JSONException

-
-java.lang.Object
-  extended by java.lang.Throwable
-      extended by java.lang.Exception
-          extended by org.json.JSONException
-
-
-
All Implemented Interfaces:
java.io.Serializable
-
-
-
-
public class JSONException
extends java.lang.Exception
- - -

-The JSONException is thrown by the JSON.org classes when things are amiss. -

- -

-

-
Author:
-
JSON.org
-
See Also:
Serialized Form
-
- -

- - - - - - - - - - - - - - -
-Constructor Summary
JSONException(java.lang.String message) - -
-          Constructs a JSONException with an explanatory message.
JSONException(java.lang.Throwable cause) - -
-           
-  - - - - - - - - - - - -
-Method Summary
- java.lang.ThrowablegetCause() - -
-           
- - - - - - - -
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-JSONException

-
-public JSONException(java.lang.String message)
-
-
Constructs a JSONException with an explanatory message. -

-

-
Parameters:
message - Detail about the reason for the exception.
-
-
- -

-JSONException

-
-public JSONException(java.lang.Throwable cause)
-
-
- - - - - - - - -
-Method Detail
- -

-getCause

-
-public java.lang.Throwable getCause()
-
-
-
Overrides:
getCause in class java.lang.Throwable
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONML.html b/distribution/json4p-0.1.1/reference/org/json/JSONML.html deleted file mode 100644 index 5b802cf36..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONML.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - -JSONML (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class JSONML

-
-java.lang.Object
-  extended by org.json.JSONML
-
-
-
-
public class JSONML
extends java.lang.Object
- - -

-This provides static methods to convert an XML text into a JSONArray or - JSONObject, and to covert a JSONArray or JSONObject into an XML text using - the JsonML transform. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Constructor Summary
JSONML() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
-static JSONArraytoJSONArray(java.lang.String string) - -
-          Convert a well-formed (but not necessarily valid) XML string into a - JSONArray using the JsonML transform.
-static JSONArraytoJSONArray(XMLTokener x) - -
-          Convert a well-formed (but not necessarily valid) XML string into a - JSONArray using the JsonML transform.
-static JSONObjecttoJSONObject(java.lang.String string) - -
-          Convert a well-formed (but not necessarily valid) XML string into a - JSONObject using the JsonML transform.
-static JSONObjecttoJSONObject(XMLTokener x) - -
-          Convert a well-formed (but not necessarily valid) XML string into a - JSONObject using the JsonML transform.
-static java.lang.StringtoString(JSONArray ja) - -
-          Reverse the JSONML transformation, making an XML text from a JSONArray.
-static java.lang.StringtoString(JSONObject jo) - -
-          Reverse the JSONML transformation, making an XML text from a JSONObject.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-JSONML

-
-public JSONML()
-
-
- - - - - - - - -
-Method Detail
- -

-toJSONArray

-
-public static JSONArray toJSONArray(java.lang.String string)
-                             throws JSONException
-
-
Convert a well-formed (but not necessarily valid) XML string into a - JSONArray using the JsonML transform. Each XML tag is represented as - a JSONArray in which the first element is the tag name. If the tag has - attributes, then the second element will be JSONObject containing the - name/value pairs. If the tag contains children, then strings and - JSONArrays will represent the child tags. - Comments, prologs, DTDs, and <[ [ ]]> are ignored. -

-

-
Parameters:
string - The source string. -
Returns:
A JSONArray containing the structured data from the XML string. -
Throws: -
JSONException
-
-
-
- -

-toJSONArray

-
-public static JSONArray toJSONArray(XMLTokener x)
-                             throws JSONException
-
-
Convert a well-formed (but not necessarily valid) XML string into a - JSONArray using the JsonML transform. Each XML tag is represented as - a JSONArray in which the first element is the tag name. If the tag has - attributes, then the second element will be JSONObject containing the - name/value pairs. If the tag contains children, then strings and - JSONArrays will represent the child content and tags. - Comments, prologs, DTDs, and <[ [ ]]> are ignored. -

-

-
Parameters:
x - An XMLTokener. -
Returns:
A JSONArray containing the structured data from the XML string. -
Throws: -
JSONException
-
-
-
- -

-toJSONObject

-
-public static JSONObject toJSONObject(XMLTokener x)
-                               throws JSONException
-
-
Convert a well-formed (but not necessarily valid) XML string into a - JSONObject using the JsonML transform. Each XML tag is represented as - a JSONObject with a "tagName" property. If the tag has attributes, then - the attributes will be in the JSONObject as properties. If the tag - contains children, the object will have a "childNodes" property which - will be an array of strings and JsonML JSONObjects. - - Comments, prologs, DTDs, and <[ [ ]]> are ignored. -

-

-
Parameters:
x - An XMLTokener of the XML source text. -
Returns:
A JSONObject containing the structured data from the XML string. -
Throws: -
JSONException
-
-
-
- -

-toJSONObject

-
-public static JSONObject toJSONObject(java.lang.String string)
-                               throws JSONException
-
-
Convert a well-formed (but not necessarily valid) XML string into a - JSONObject using the JsonML transform. Each XML tag is represented as - a JSONObject with a "tagName" property. If the tag has attributes, then - the attributes will be in the JSONObject as properties. If the tag - contains children, the object will have a "childNodes" property which - will be an array of strings and JsonML JSONObjects. - - Comments, prologs, DTDs, and <[ [ ]]> are ignored. -

-

-
Parameters:
string - The XML source text. -
Returns:
A JSONObject containing the structured data from the XML string. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(JSONArray ja)
-                                 throws JSONException
-
-
Reverse the JSONML transformation, making an XML text from a JSONArray. -

-

-
Parameters:
ja - A JSONArray. -
Returns:
An XML string. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(JSONObject jo)
-                                 throws JSONException
-
-
Reverse the JSONML transformation, making an XML text from a JSONObject. - The JSONObject must contain a "tagName" property. If it has children, - then it must have a "childNodes" property containing an array of objects. - The other properties are attributes with string values. -

-

-
Parameters:
jo - A JSONObject. -
Returns:
An XML string. -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONObject.html b/distribution/json4p-0.1.1/reference/org/json/JSONObject.html deleted file mode 100644 index 9fe479662..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONObject.html +++ /dev/null @@ -1,1883 +0,0 @@ - - - - - - -JSONObject (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class JSONObject

-
-java.lang.Object
-  extended by org.json.JSONObject
-
-
-
-
public class JSONObject
extends java.lang.Object
- - -

-A JSONObject is an unordered collection of name/value pairs. Its - external form is a string wrapped in curly braces with colons between the - names and values, and commas between the values and names. The internal form - is an object having get and opt methods for - accessing the values by name, and put methods for adding or - replacing values by name. The values can be any of these types: - Boolean, JSONArray, JSONObject, - Number, String, or the JSONObject.NULL - object. A JSONObject constructor can be used to convert an external form - JSON text into an internal form whose values can be retrieved with the - get and opt methods, or to convert values into a - JSON text using the put and toString methods. - A get method returns a value if one can be found, and throws an - exception if one cannot be found. An opt method returns a - default value instead of throwing an exception, and so is useful for - obtaining optional values. -

- The generic get() and opt() methods return an - object, which you can cast or query for type. There are also typed - get and opt methods that do type checking and type - coercion for you. The opt methods differ from the get methods in that they - do not throw. Instead, they return a specified value, such as null. -

- The put methods add or replace values in an object. For example, -

myString = new JSONObject().put("JSON", "Hello, World!").toString();
- produces the string {"JSON": "Hello, World"}. -

- The texts produced by the toString methods strictly conform to - the JSON syntax rules. - The constructors are more forgiving in the texts they will accept: -

    -
  • An extra , (comma) may appear just - before the closing brace.
  • -
  • Strings may be quoted with ' (single - quote).
  • -
  • Strings do not need to be quoted at all if they do not begin with a quote - or single quote, and if they do not contain leading or trailing spaces, - and if they do not contain any of these characters: - { } [ ] / \ : , = ; # and if they do not look like numbers - and if they are not the reserved words true, - false, or null.
  • -
  • Keys can be followed by = or => as well as - by :.
  • -
  • Values can be followed by ; (semicolon) as - well as by , (comma).
  • -
  • Numbers may have the 0x- (hex) prefix.
  • -
-

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Field Summary
-static java.lang.ObjectNULL - -
-          It is sometimes more convenient and less ambiguous to have a - NULL object than to use Java's null value.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Constructor Summary
JSONObject() - -
-          Construct an empty JSONObject.
JSONObject(JSONObject jo, - java.lang.String[] names) - -
-          Construct a JSONObject from a subset of another JSONObject.
JSONObject(JSONTokener x) - -
-          Construct a JSONObject from a JSONTokener.
JSONObject(java.util.Map map) - -
-          Construct a JSONObject from a Map.
JSONObject(java.lang.Object bean) - -
-          Construct a JSONObject from an Object using bean getters.
JSONObject(java.lang.Object object, - java.lang.String[] names) - -
-          Construct a JSONObject from an Object, using reflection to find the - public members.
JSONObject(java.lang.String source) - -
-          Construct a JSONObject from a source JSON text string.
JSONObject(java.lang.String baseName, - java.util.Locale locale) - -
-          Construct a JSONObject from a ResourceBundle.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- JSONObjectaccumulate(java.lang.String key, - java.lang.Object value) - -
-          Accumulate values under a key.
- JSONObjectappend(java.lang.String key, - java.lang.Object value) - -
-          Append values to the array under a key.
-static java.lang.StringdoubleToString(double d) - -
-          Produce a string from a double.
- java.lang.Objectget(java.lang.String key) - -
-          Get the value object associated with a key.
- booleangetBoolean(java.lang.String key) - -
-          Get the boolean value associated with a key.
- doublegetDouble(java.lang.String key) - -
-          Get the double value associated with a key.
- intgetInt(java.lang.String key) - -
-          Get the int value associated with a key.
- JSONArraygetJSONArray(java.lang.String key) - -
-          Get the JSONArray value associated with a key.
- JSONObjectgetJSONObject(java.lang.String key) - -
-          Get the JSONObject value associated with a key.
- longgetLong(java.lang.String key) - -
-          Get the long value associated with a key.
-static java.lang.String[]getNames(JSONObject jo) - -
-          Get an array of field names from a JSONObject.
-static java.lang.String[]getNames(java.lang.Object object) - -
-          Get an array of field names from an Object.
- java.lang.StringgetString(java.lang.String key) - -
-          Get the string associated with a key.
- booleanhas(java.lang.String key) - -
-          Determine if the JSONObject contains a specific key.
- JSONObjectincrement(java.lang.String key) - -
-          Increment a property of a JSONObject.
- booleanisNull(java.lang.String key) - -
-          Determine if the value associated with the key is null or if there is - no value.
- java.util.Iteratorkeys() - -
-          Get an enumeration of the keys of the JSONObject.
- intlength() - -
-          Get the number of keys stored in the JSONObject.
- JSONArraynames() - -
-          Produce a JSONArray containing the names of the elements of this - JSONObject.
-static java.lang.StringnumberToString(java.lang.Number number) - -
-          Produce a string from a Number.
- java.lang.Objectopt(java.lang.String key) - -
-          Get an optional value associated with a key.
- booleanoptBoolean(java.lang.String key) - -
-          Get an optional boolean associated with a key.
- booleanoptBoolean(java.lang.String key, - boolean defaultValue) - -
-          Get an optional boolean associated with a key.
- doubleoptDouble(java.lang.String key) - -
-          Get an optional double associated with a key, - or NaN if there is no such key or if its value is not a number.
- doubleoptDouble(java.lang.String key, - double defaultValue) - -
-          Get an optional double associated with a key, or the - defaultValue if there is no such key or if its value is not a number.
- intoptInt(java.lang.String key) - -
-          Get an optional int value associated with a key, - or zero if there is no such key or if the value is not a number.
- intoptInt(java.lang.String key, - int defaultValue) - -
-          Get an optional int value associated with a key, - or the default if there is no such key or if the value is not a number.
- JSONArrayoptJSONArray(java.lang.String key) - -
-          Get an optional JSONArray associated with a key.
- JSONObjectoptJSONObject(java.lang.String key) - -
-          Get an optional JSONObject associated with a key.
- longoptLong(java.lang.String key) - -
-          Get an optional long value associated with a key, - or zero if there is no such key or if the value is not a number.
- longoptLong(java.lang.String key, - long defaultValue) - -
-          Get an optional long value associated with a key, - or the default if there is no such key or if the value is not a number.
- java.lang.StringoptString(java.lang.String key) - -
-          Get an optional string associated with a key.
- java.lang.StringoptString(java.lang.String key, - java.lang.String defaultValue) - -
-          Get an optional string associated with a key.
- JSONObjectput(java.lang.String key, - boolean value) - -
-          Put a key/boolean pair in the JSONObject.
- JSONObjectput(java.lang.String key, - java.util.Collection value) - -
-          Put a key/value pair in the JSONObject, where the value will be a - JSONArray which is produced from a Collection.
- JSONObjectput(java.lang.String key, - double value) - -
-          Put a key/double pair in the JSONObject.
- JSONObjectput(java.lang.String key, - int value) - -
-          Put a key/int pair in the JSONObject.
- JSONObjectput(java.lang.String key, - long value) - -
-          Put a key/long pair in the JSONObject.
- JSONObjectput(java.lang.String key, - java.util.Map value) - -
-          Put a key/value pair in the JSONObject, where the value will be a - JSONObject which is produced from a Map.
- JSONObjectput(java.lang.String key, - java.lang.Object value) - -
-          Put a key/value pair in the JSONObject.
- JSONObjectputOnce(java.lang.String key, - java.lang.Object value) - -
-          Put a key/value pair in the JSONObject, but only if the key and the - value are both non-null, and only if there is not already a member - with that name.
- JSONObjectputOpt(java.lang.String key, - java.lang.Object value) - -
-          Put a key/value pair in the JSONObject, but only if the - key and the value are both non-null.
-static java.lang.Stringquote(java.lang.String string) - -
-          Produce a string in double quotes with backslash sequences in all the - right places.
- java.lang.Objectremove(java.lang.String key) - -
-          Remove a name and its value, if present.
-static java.lang.ObjectstringToValue(java.lang.String string) - -
-          Try to convert a string into a number, boolean, or null.
-static voidtestValidity(java.lang.Object o) - -
-          Throw an exception if the object is a NaN or infinite number.
- JSONArraytoJSONArray(JSONArray names) - -
-          Produce a JSONArray containing the values of the members of this - JSONObject.
- java.lang.StringtoString() - -
-          Make a JSON text of this JSONObject.
- java.lang.StringtoString(int indentFactor) - -
-          Make a prettyprinted JSON text of this JSONObject.
-static java.lang.StringvalueToString(java.lang.Object value) - -
-          Make a JSON text of an Object value.
-static java.lang.Objectwrap(java.lang.Object object) - -
-          Wrap an object, if necessary.
- java.io.Writerwrite(java.io.Writer writer) - -
-          Write the contents of the JSONObject as JSON text to a writer.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Field Detail
- -

-NULL

-
-public static final java.lang.Object NULL
-
-
It is sometimes more convenient and less ambiguous to have a - NULL object than to use Java's null value. - JSONObject.NULL.equals(null) returns true. - JSONObject.NULL.toString() returns "null". -

-

-
-
- - - - - - - - -
-Constructor Detail
- -

-JSONObject

-
-public JSONObject()
-
-
Construct an empty JSONObject. -

-

-
- -

-JSONObject

-
-public JSONObject(JSONObject jo,
-                  java.lang.String[] names)
-
-
Construct a JSONObject from a subset of another JSONObject. - An array of strings is used to identify the keys that should be copied. - Missing keys are ignored. -

-

-
Parameters:
jo - A JSONObject.
names - An array of strings. -
Throws: -
JSONException -
JSONException - If a value is a non-finite number or if a name is duplicated.
-
-
- -

-JSONObject

-
-public JSONObject(JSONTokener x)
-           throws JSONException
-
-
Construct a JSONObject from a JSONTokener. -

-

-
Parameters:
x - A JSONTokener object containing the source string. -
Throws: -
JSONException - If there is a syntax error in the source string - or a duplicated key.
-
-
- -

-JSONObject

-
-public JSONObject(java.util.Map map)
-
-
Construct a JSONObject from a Map. -

-

-
Parameters:
map - A map object that can be used to initialize the contents of - the JSONObject. -
Throws: -
JSONException
-
-
- -

-JSONObject

-
-public JSONObject(java.lang.Object bean)
-
-
Construct a JSONObject from an Object using bean getters. - It reflects on all of the public methods of the object. - For each of the methods with no parameters and a name starting - with "get" or "is" followed by an uppercase letter, - the method is invoked, and a key and the value returned from the getter method - are put into the new JSONObject. - - The key is formed by removing the "get" or "is" prefix. - If the second remaining character is not upper case, then the first - character is converted to lower case. - - For example, if an object has a method named "getName", and - if the result of calling object.getName() is "Larry Fine", - then the JSONObject will contain "name": "Larry Fine". -

-

-
Parameters:
bean - An object that has getter methods that should be used - to make a JSONObject.
-
-
- -

-JSONObject

-
-public JSONObject(java.lang.Object object,
-                  java.lang.String[] names)
-
-
Construct a JSONObject from an Object, using reflection to find the - public members. The resulting JSONObject's keys will be the strings - from the names array, and the values will be the field values associated - with those keys in the object. If a key is not found or not visible, - then it will not be copied into the new JSONObject. -

-

-
Parameters:
object - An object that has fields that should be used to make a - JSONObject.
names - An array of strings, the names of the fields to be obtained - from the object.
-
-
- -

-JSONObject

-
-public JSONObject(java.lang.String source)
-           throws JSONException
-
-
Construct a JSONObject from a source JSON text string. - This is the most commonly used JSONObject constructor. -

-

-
Parameters:
source - A string beginning - with { (left brace) and ending - with } (right brace). -
Throws: -
JSONException - If there is a syntax error in the source - string or a duplicated key.
-
-
- -

-JSONObject

-
-public JSONObject(java.lang.String baseName,
-                  java.util.Locale locale)
-           throws JSONException
-
-
Construct a JSONObject from a ResourceBundle. -

-

-
Parameters:
baseName - The ResourceBundle base name.
locale - The Locale to load the ResourceBundle for. -
Throws: -
JSONException - If any JSONExceptions are detected.
-
- - - - - - - - -
-Method Detail
- -

-accumulate

-
-public JSONObject accumulate(java.lang.String key,
-                             java.lang.Object value)
-                      throws JSONException
-
-
Accumulate values under a key. It is similar to the put method except - that if there is already an object stored under the key then a - JSONArray is stored under the key to hold all of the accumulated values. - If there is already a JSONArray, then the new value is appended to it. - In contrast, the put method replaces the previous value. - - If only one value is accumulated that is not a JSONArray, then the - result will be the same as using put. But if multiple values are - accumulated, then the result will be like append. -

-

-
Parameters:
key - A key string.
value - An object to be accumulated under the key. -
Returns:
this. -
Throws: -
JSONException - If the value is an invalid number - or if the key is null.
-
-
-
- -

-append

-
-public JSONObject append(java.lang.String key,
-                         java.lang.Object value)
-                  throws JSONException
-
-
Append values to the array under a key. If the key does not exist in the - JSONObject, then the key is put in the JSONObject with its value being a - JSONArray containing the value parameter. If the key was already - associated with a JSONArray, then the value parameter is appended to it. -

-

-
Parameters:
key - A key string.
value - An object to be accumulated under the key. -
Returns:
this. -
Throws: -
JSONException - If the key is null or if the current value - associated with the key is not a JSONArray.
-
-
-
- -

-doubleToString

-
-public static java.lang.String doubleToString(double d)
-
-
Produce a string from a double. The string "null" will be returned if - the number is not finite. -

-

-
Parameters:
d - A double. -
Returns:
A String.
-
-
-
- -

-get

-
-public java.lang.Object get(java.lang.String key)
-                     throws JSONException
-
-
Get the value object associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
The object associated with the key. -
Throws: -
JSONException - if the key is not found.
-
-
-
- -

-getBoolean

-
-public boolean getBoolean(java.lang.String key)
-                   throws JSONException
-
-
Get the boolean value associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
The truth. -
Throws: -
JSONException - if the value is not a Boolean or the String "true" or "false".
-
-
-
- -

-getDouble

-
-public double getDouble(java.lang.String key)
-                 throws JSONException
-
-
Get the double value associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
The numeric value. -
Throws: -
JSONException - if the key is not found or - if the value is not a Number object and cannot be converted to a number.
-
-
-
- -

-getInt

-
-public int getInt(java.lang.String key)
-           throws JSONException
-
-
Get the int value associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
The integer value. -
Throws: -
JSONException - if the key is not found or if the value cannot - be converted to an integer.
-
-
-
- -

-getJSONArray

-
-public JSONArray getJSONArray(java.lang.String key)
-                       throws JSONException
-
-
Get the JSONArray value associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
A JSONArray which is the value. -
Throws: -
JSONException - if the key is not found or - if the value is not a JSONArray.
-
-
-
- -

-getJSONObject

-
-public JSONObject getJSONObject(java.lang.String key)
-                         throws JSONException
-
-
Get the JSONObject value associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
A JSONObject which is the value. -
Throws: -
JSONException - if the key is not found or - if the value is not a JSONObject.
-
-
-
- -

-getLong

-
-public long getLong(java.lang.String key)
-             throws JSONException
-
-
Get the long value associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
The long value. -
Throws: -
JSONException - if the key is not found or if the value cannot - be converted to a long.
-
-
-
- -

-getNames

-
-public static java.lang.String[] getNames(JSONObject jo)
-
-
Get an array of field names from a JSONObject. -

-

- -
Returns:
An array of field names, or null if there are no names.
-
-
-
- -

-getNames

-
-public static java.lang.String[] getNames(java.lang.Object object)
-
-
Get an array of field names from an Object. -

-

- -
Returns:
An array of field names, or null if there are no names.
-
-
-
- -

-getString

-
-public java.lang.String getString(java.lang.String key)
-                           throws JSONException
-
-
Get the string associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
A string which is the value. -
Throws: -
JSONException - if there is no string value for the key.
-
-
-
- -

-has

-
-public boolean has(java.lang.String key)
-
-
Determine if the JSONObject contains a specific key. -

-

-
Parameters:
key - A key string. -
Returns:
true if the key exists in the JSONObject.
-
-
-
- -

-increment

-
-public JSONObject increment(java.lang.String key)
-                     throws JSONException
-
-
Increment a property of a JSONObject. If there is no such property, - create one with a value of 1. If there is such a property, and if - it is an Integer, Long, Double, or Float, then add one to it. -

-

-
Parameters:
key - A key string. -
Returns:
this. -
Throws: -
JSONException - If there is already a property with this name - that is not an Integer, Long, Double, or Float.
-
-
-
- -

-isNull

-
-public boolean isNull(java.lang.String key)
-
-
Determine if the value associated with the key is null or if there is - no value. -

-

-
Parameters:
key - A key string. -
Returns:
true if there is no value associated with the key or if - the value is the JSONObject.NULL object.
-
-
-
- -

-keys

-
-public java.util.Iterator keys()
-
-
Get an enumeration of the keys of the JSONObject. -

-

- -
Returns:
An iterator of the keys.
-
-
-
- -

-length

-
-public int length()
-
-
Get the number of keys stored in the JSONObject. -

-

- -
Returns:
The number of keys in the JSONObject.
-
-
-
- -

-names

-
-public JSONArray names()
-
-
Produce a JSONArray containing the names of the elements of this - JSONObject. -

-

- -
Returns:
A JSONArray containing the key strings, or null if the JSONObject - is empty.
-
-
-
- -

-numberToString

-
-public static java.lang.String numberToString(java.lang.Number number)
-                                       throws JSONException
-
-
Produce a string from a Number. -

-

-
Parameters:
number - A Number -
Returns:
A String. -
Throws: -
JSONException - If n is a non-finite number.
-
-
-
- -

-opt

-
-public java.lang.Object opt(java.lang.String key)
-
-
Get an optional value associated with a key. -

-

-
Parameters:
key - A key string. -
Returns:
An object which is the value, or null if there is no value.
-
-
-
- -

-optBoolean

-
-public boolean optBoolean(java.lang.String key)
-
-
Get an optional boolean associated with a key. - It returns false if there is no such key, or if the value is not - Boolean.TRUE or the String "true". -

-

-
Parameters:
key - A key string. -
Returns:
The truth.
-
-
-
- -

-optBoolean

-
-public boolean optBoolean(java.lang.String key,
-                          boolean defaultValue)
-
-
Get an optional boolean associated with a key. - It returns the defaultValue if there is no such key, or if it is not - a Boolean or the String "true" or "false" (case insensitive). -

-

-
Parameters:
key - A key string.
defaultValue - The default. -
Returns:
The truth.
-
-
-
- -

-optDouble

-
-public double optDouble(java.lang.String key)
-
-
Get an optional double associated with a key, - or NaN if there is no such key or if its value is not a number. - If the value is a string, an attempt will be made to evaluate it as - a number. -

-

-
Parameters:
key - A string which is the key. -
Returns:
An object which is the value.
-
-
-
- -

-optDouble

-
-public double optDouble(java.lang.String key,
-                        double defaultValue)
-
-
Get an optional double associated with a key, or the - defaultValue if there is no such key or if its value is not a number. - If the value is a string, an attempt will be made to evaluate it as - a number. -

-

-
Parameters:
key - A key string.
defaultValue - The default. -
Returns:
An object which is the value.
-
-
-
- -

-optInt

-
-public int optInt(java.lang.String key)
-
-
Get an optional int value associated with a key, - or zero if there is no such key or if the value is not a number. - If the value is a string, an attempt will be made to evaluate it as - a number. -

-

-
Parameters:
key - A key string. -
Returns:
An object which is the value.
-
-
-
- -

-optInt

-
-public int optInt(java.lang.String key,
-                  int defaultValue)
-
-
Get an optional int value associated with a key, - or the default if there is no such key or if the value is not a number. - If the value is a string, an attempt will be made to evaluate it as - a number. -

-

-
Parameters:
key - A key string.
defaultValue - The default. -
Returns:
An object which is the value.
-
-
-
- -

-optJSONArray

-
-public JSONArray optJSONArray(java.lang.String key)
-
-
Get an optional JSONArray associated with a key. - It returns null if there is no such key, or if its value is not a - JSONArray. -

-

-
Parameters:
key - A key string. -
Returns:
A JSONArray which is the value.
-
-
-
- -

-optJSONObject

-
-public JSONObject optJSONObject(java.lang.String key)
-
-
Get an optional JSONObject associated with a key. - It returns null if there is no such key, or if its value is not a - JSONObject. -

-

-
Parameters:
key - A key string. -
Returns:
A JSONObject which is the value.
-
-
-
- -

-optLong

-
-public long optLong(java.lang.String key)
-
-
Get an optional long value associated with a key, - or zero if there is no such key or if the value is not a number. - If the value is a string, an attempt will be made to evaluate it as - a number. -

-

-
Parameters:
key - A key string. -
Returns:
An object which is the value.
-
-
-
- -

-optLong

-
-public long optLong(java.lang.String key,
-                    long defaultValue)
-
-
Get an optional long value associated with a key, - or the default if there is no such key or if the value is not a number. - If the value is a string, an attempt will be made to evaluate it as - a number. -

-

-
Parameters:
key - A key string.
defaultValue - The default. -
Returns:
An object which is the value.
-
-
-
- -

-optString

-
-public java.lang.String optString(java.lang.String key)
-
-
Get an optional string associated with a key. - It returns an empty string if there is no such key. If the value is not - a string and is not null, then it is converted to a string. -

-

-
Parameters:
key - A key string. -
Returns:
A string which is the value.
-
-
-
- -

-optString

-
-public java.lang.String optString(java.lang.String key,
-                                  java.lang.String defaultValue)
-
-
Get an optional string associated with a key. - It returns the defaultValue if there is no such key. -

-

-
Parameters:
key - A key string.
defaultValue - The default. -
Returns:
A string which is the value.
-
-
-
- -

-put

-
-public JSONObject put(java.lang.String key,
-                      boolean value)
-               throws JSONException
-
-
Put a key/boolean pair in the JSONObject. -

-

-
Parameters:
key - A key string.
value - A boolean which is the value. -
Returns:
this. -
Throws: -
JSONException - If the key is null.
-
-
-
- -

-put

-
-public JSONObject put(java.lang.String key,
-                      java.util.Collection value)
-               throws JSONException
-
-
Put a key/value pair in the JSONObject, where the value will be a - JSONArray which is produced from a Collection. -

-

-
Parameters:
key - A key string.
value - A Collection value. -
Returns:
this. -
Throws: -
JSONException
-
-
-
- -

-put

-
-public JSONObject put(java.lang.String key,
-                      double value)
-               throws JSONException
-
-
Put a key/double pair in the JSONObject. -

-

-
Parameters:
key - A key string.
value - A double which is the value. -
Returns:
this. -
Throws: -
JSONException - If the key is null or if the number is invalid.
-
-
-
- -

-put

-
-public JSONObject put(java.lang.String key,
-                      int value)
-               throws JSONException
-
-
Put a key/int pair in the JSONObject. -

-

-
Parameters:
key - A key string.
value - An int which is the value. -
Returns:
this. -
Throws: -
JSONException - If the key is null.
-
-
-
- -

-put

-
-public JSONObject put(java.lang.String key,
-                      long value)
-               throws JSONException
-
-
Put a key/long pair in the JSONObject. -

-

-
Parameters:
key - A key string.
value - A long which is the value. -
Returns:
this. -
Throws: -
JSONException - If the key is null.
-
-
-
- -

-put

-
-public JSONObject put(java.lang.String key,
-                      java.util.Map value)
-               throws JSONException
-
-
Put a key/value pair in the JSONObject, where the value will be a - JSONObject which is produced from a Map. -

-

-
Parameters:
key - A key string.
value - A Map value. -
Returns:
this. -
Throws: -
JSONException
-
-
-
- -

-put

-
-public JSONObject put(java.lang.String key,
-                      java.lang.Object value)
-               throws JSONException
-
-
Put a key/value pair in the JSONObject. If the value is null, - then the key will be removed from the JSONObject if it is present. -

-

-
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these - types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, - or the JSONObject.NULL object. -
Returns:
this. -
Throws: -
JSONException - If the value is non-finite number - or if the key is null.
-
-
-
- -

-putOnce

-
-public JSONObject putOnce(java.lang.String key,
-                          java.lang.Object value)
-                   throws JSONException
-
-
Put a key/value pair in the JSONObject, but only if the key and the - value are both non-null, and only if there is not already a member - with that name. -

-

-
Parameters:
key -
value - -
Returns:
his. -
Throws: -
JSONException - if the key is a duplicate
-
-
-
- -

-putOpt

-
-public JSONObject putOpt(java.lang.String key,
-                         java.lang.Object value)
-                  throws JSONException
-
-
Put a key/value pair in the JSONObject, but only if the - key and the value are both non-null. -

-

-
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these - types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, - or the JSONObject.NULL object. -
Returns:
this. -
Throws: -
JSONException - If the value is a non-finite number.
-
-
-
- -

-quote

-
-public static java.lang.String quote(java.lang.String string)
-
-
Produce a string in double quotes with backslash sequences in all the - right places. A backslash will be inserted within -
-
Parameters:
string - A String -
Returns:
A String correctly formatted for insertion in a JSON text.
-
-
-
- -

-remove

-
-public java.lang.Object remove(java.lang.String key)
-
-
Remove a name and its value, if present. -

-

-
Parameters:
key - The name to be removed. -
Returns:
The value that was associated with the name, - or null if there was no value.
-
-
-
- -

-stringToValue

-
-public static java.lang.Object stringToValue(java.lang.String string)
-
-
Try to convert a string into a number, boolean, or null. If the string - can't be converted, return the string. -

-

-
Parameters:
string - A String. -
Returns:
A simple JSON value.
-
-
-
- -

-testValidity

-
-public static void testValidity(java.lang.Object o)
-                         throws JSONException
-
-
Throw an exception if the object is a NaN or infinite number. -

-

-
Parameters:
o - The object to test. -
Throws: -
JSONException - If o is a non-finite number.
-
-
-
- -

-toJSONArray

-
-public JSONArray toJSONArray(JSONArray names)
-                      throws JSONException
-
-
Produce a JSONArray containing the values of the members of this - JSONObject. -

-

-
Parameters:
names - A JSONArray containing a list of key strings. This - determines the sequence of the values in the result. -
Returns:
A JSONArray of values. -
Throws: -
JSONException - If any of the values are non-finite numbers.
-
-
-
- -

-toString

-
-public java.lang.String toString()
-
-
Make a JSON text of this JSONObject. For compactness, no whitespace - is added. If this would not result in a syntactically correct JSON text, - then null will be returned instead. -

- Warning: This method assumes that the data structure is acyclical. -

-

-
Overrides:
toString in class java.lang.Object
-
-
- -
Returns:
a printable, displayable, portable, transmittable - representation of the object, beginning - with { (left brace) and ending - with } (right brace).
-
-
-
- -

-toString

-
-public java.lang.String toString(int indentFactor)
-                          throws JSONException
-
-
Make a prettyprinted JSON text of this JSONObject. -

- Warning: This method assumes that the data structure is acyclical. -

-

-
Parameters:
indentFactor - The number of spaces to add to each level of - indentation. -
Returns:
a printable, displayable, portable, transmittable - representation of the object, beginning - with { (left brace) and ending - with } (right brace). -
Throws: -
JSONException - If the object contains an invalid number.
-
-
-
- -

-valueToString

-
-public static java.lang.String valueToString(java.lang.Object value)
-                                      throws JSONException
-
-
Make a JSON text of an Object value. If the object has an - value.toJSONString() method, then that method will be used to produce - the JSON text. The method is required to produce a strictly - conforming text. If the object does not contain a toJSONString - method (which is the most common case), then a text will be - produced by other means. If the value is an array or Collection, - then a JSONArray will be made from it and its toJSONString method - will be called. If the value is a MAP, then a JSONObject will be made - from it and its toJSONString method will be called. Otherwise, the - value's toString method will be called, and the result will be quoted. - -

- Warning: This method assumes that the data structure is acyclical. -

-

-
Parameters:
value - The value to be serialized. -
Returns:
a printable, displayable, transmittable - representation of the object, beginning - with { (left brace) and ending - with } (right brace). -
Throws: -
JSONException - If the value is or contains an invalid number.
-
-
-
- -

-wrap

-
-public static java.lang.Object wrap(java.lang.Object object)
-
-
Wrap an object, if necessary. If the object is null, return the NULL - object. If it is an array or collection, wrap it in a JSONArray. If - it is a map, wrap it in a JSONObject. If it is a standard property - (Double, String, et al) then it is already wrapped. Otherwise, if it - comes from one of the java packages, turn it into a string. And if - it doesn't, try to wrap it in a JSONObject. If the wrapping fails, - then null is returned. -

-

-
Parameters:
object - The object to wrap -
Returns:
The wrapped value
-
-
-
- -

-write

-
-public java.io.Writer write(java.io.Writer writer)
-                     throws JSONException
-
-
Write the contents of the JSONObject as JSON text to a writer. - For compactness, no whitespace is added. -

- Warning: This method assumes that the data structure is acyclical. -

-

- -
Returns:
The writer. -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONString.html b/distribution/json4p-0.1.1/reference/org/json/JSONString.html deleted file mode 100644 index 021b8b1c6..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONString.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - -JSONString (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Interface JSONString

-
-
-
public interface JSONString
- - -

-The JSONString interface allows a toJSONString() - method so that a class can change the behavior of - JSONObject.toString(), JSONArray.toString(), - and JSONWriter.value(Object). The - toJSONString method will be used instead of the default behavior - of using the Object's toString() method and quoting the result. -

- -

-


- -

- - - - - - - - - - - - -
-Method Summary
- java.lang.StringtoJSONString() - -
-          The toJSONString method allows a class to produce its own JSON - serialization.
-  -

- - - - - - - - -
-Method Detail
- -

-toJSONString

-
-java.lang.String toJSONString()
-
-
The toJSONString method allows a class to produce its own JSON - serialization. -

-

- -
Returns:
A strictly syntactically correct JSON text.
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONStringer.html b/distribution/json4p-0.1.1/reference/org/json/JSONStringer.html deleted file mode 100644 index b28f8e567..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONStringer.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - - -JSONStringer (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class JSONStringer

-
-java.lang.Object
-  extended by org.json.JSONWriter
-      extended by org.json.JSONStringer
-
-
-
-
public class JSONStringer
extends JSONWriter
- - -

-JSONStringer provides a quick and convenient way of producing JSON text. - The texts produced strictly conform to JSON syntax rules. No whitespace is - added, so the results are ready for transmission or storage. Each instance of - JSONStringer can produce one JSON text. -

- A JSONStringer instance provides a value method for appending - values to the - text, and a key - method for adding keys before values in objects. There are array - and endArray methods that make and bound array values, and - object and endObject methods which make and bound - object values. All of these methods return the JSONWriter instance, - permitting cascade style. For example,

- myString = new JSONStringer()
-     .object()
-         .key("JSON")
-         .value("Hello, World!")
-     .endObject()
-     .toString();
which produces the string
- {"JSON":"Hello, World!"}
-

- The first method called must be array or object. - There are no methods for adding commas or colons. JSONStringer adds them for - you. Objects and arrays can be nested up to 20 levels deep. -

- This can sometimes be easier than using a JSONObject to build a string. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Constructor Summary
JSONStringer() - -
-          Make a fresh JSONStringer.
-  - - - - - - - - - - - -
-Method Summary
- java.lang.StringtoString() - -
-          Return the JSON text.
- - - - - - - -
Methods inherited from class org.json.JSONWriter
array, endArray, endObject, key, object, value, value, value, value
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-JSONStringer

-
-public JSONStringer()
-
-
Make a fresh JSONStringer. It can be used to build one JSON text. -

-

- - - - - - - - -
-Method Detail
- -

-toString

-
-public java.lang.String toString()
-
-
Return the JSON text. This method is used to obtain the product of the - JSONStringer instance. It will return null if there was a - problem in the construction of the JSON text (such as the calls to - array were not properly balanced with calls to - endArray). -

-

-
Overrides:
toString in class java.lang.Object
-
-
- -
Returns:
The JSON text.
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONTokener.html b/distribution/json4p-0.1.1/reference/org/json/JSONTokener.html deleted file mode 100644 index ac2bdfe2d..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONTokener.html +++ /dev/null @@ -1,667 +0,0 @@ - - - - - - -JSONTokener (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class JSONTokener

-
-java.lang.Object
-  extended by org.json.JSONTokener
-
-
-
Direct Known Subclasses:
HTTPTokener, XMLTokener
-
-
-
-
public class JSONTokener
extends java.lang.Object
- - -

-A JSONTokener takes a source string and extracts characters and tokens from - it. It is used by the JSONObject and JSONArray constructors to parse - JSON source strings. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - - - - - - - -
-Constructor Summary
JSONTokener(java.io.InputStream inputStream) - -
-          Construct a JSONTokener from an InputStream.
JSONTokener(java.io.Reader reader) - -
-          Construct a JSONTokener from a Reader.
JSONTokener(java.lang.String s) - -
-          Construct a JSONTokener from a string.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- voidback() - -
-          Back up one character.
-static intdehexchar(char c) - -
-          Get the hex value of a character (base16).
- booleanend() - -
-           
- booleanmore() - -
-          Determine if the source string still contains characters that next() - can consume.
- charnext() - -
-          Get the next character in the source string.
- charnext(char c) - -
-          Consume the next character, and check that it matches a specified - character.
- java.lang.Stringnext(int n) - -
-          Get the next n characters.
- charnextClean() - -
-          Get the next char in the string, skipping whitespace.
- java.lang.StringnextString(char quote) - -
-          Return the characters up to the next close quote character.
- java.lang.StringnextTo(char delimiter) - -
-          Get the text up but not including the specified character or the - end of line, whichever comes first.
- java.lang.StringnextTo(java.lang.String delimiters) - -
-          Get the text up but not including one of the specified delimiter - characters or the end of line, whichever comes first.
- java.lang.ObjectnextValue() - -
-          Get the next value.
- charskipTo(char to) - -
-          Skip characters until the next character is the requested character.
- JSONExceptionsyntaxError(java.lang.String message) - -
-          Make a JSONException to signal a syntax error.
- java.lang.StringtoString() - -
-          Make a printable string of this JSONTokener.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-JSONTokener

-
-public JSONTokener(java.io.Reader reader)
-
-
Construct a JSONTokener from a Reader. -

-

-
Parameters:
reader - A reader.
-
-
- -

-JSONTokener

-
-public JSONTokener(java.io.InputStream inputStream)
-            throws JSONException
-
-
Construct a JSONTokener from an InputStream. -

-

- -
Throws: -
JSONException
-
-
- -

-JSONTokener

-
-public JSONTokener(java.lang.String s)
-
-
Construct a JSONTokener from a string. -

-

-
Parameters:
s - A source string.
-
- - - - - - - - -
-Method Detail
- -

-back

-
-public void back()
-          throws JSONException
-
-
Back up one character. This provides a sort of lookahead capability, - so that you can test for a digit or letter before attempting to parse - the next number or identifier. -

-

- -
Throws: -
JSONException
-
-
-
- -

-dehexchar

-
-public static int dehexchar(char c)
-
-
Get the hex value of a character (base16). -

-

-
Parameters:
c - A character between '0' and '9' or between 'A' and 'F' or - between 'a' and 'f'. -
Returns:
An int between 0 and 15, or -1 if c was not a hex digit.
-
-
-
- -

-end

-
-public boolean end()
-
-
-
-
-
-
- -

-more

-
-public boolean more()
-             throws JSONException
-
-
Determine if the source string still contains characters that next() - can consume. -

-

- -
Returns:
true if not yet at the end of the source. -
Throws: -
JSONException
-
-
-
- -

-next

-
-public char next()
-          throws JSONException
-
-
Get the next character in the source string. -

-

- -
Returns:
The next character, or 0 if past the end of the source string. -
Throws: -
JSONException
-
-
-
- -

-next

-
-public char next(char c)
-          throws JSONException
-
-
Consume the next character, and check that it matches a specified - character. -

-

-
Parameters:
c - The character to match. -
Returns:
The character. -
Throws: -
JSONException - if the character does not match.
-
-
-
- -

-next

-
-public java.lang.String next(int n)
-                      throws JSONException
-
-
Get the next n characters. -

-

-
Parameters:
n - The number of characters to take. -
Returns:
A string of n characters. -
Throws: -
JSONException - Substring bounds error if there are not - n characters remaining in the source string.
-
-
-
- -

-nextClean

-
-public char nextClean()
-               throws JSONException
-
-
Get the next char in the string, skipping whitespace. -

-

- -
Returns:
A character, or 0 if there are no more characters. -
Throws: -
JSONException
-
-
-
- -

-nextString

-
-public java.lang.String nextString(char quote)
-                            throws JSONException
-
-
Return the characters up to the next close quote character. - Backslash processing is done. The formal JSON format does not - allow strings in single quotes, but an implementation is allowed to - accept them. -

-

-
Parameters:
quote - The quoting character, either - " (double quote) or - ' (single quote). -
Returns:
A String. -
Throws: -
JSONException - Unterminated string.
-
-
-
- -

-nextTo

-
-public java.lang.String nextTo(char delimiter)
-                        throws JSONException
-
-
Get the text up but not including the specified character or the - end of line, whichever comes first. -

-

-
Parameters:
delimiter - A delimiter character. -
Returns:
A string. -
Throws: -
JSONException
-
-
-
- -

-nextTo

-
-public java.lang.String nextTo(java.lang.String delimiters)
-                        throws JSONException
-
-
Get the text up but not including one of the specified delimiter - characters or the end of line, whichever comes first. -

-

-
Parameters:
delimiters - A set of delimiter characters. -
Returns:
A string, trimmed. -
Throws: -
JSONException
-
-
-
- -

-nextValue

-
-public java.lang.Object nextValue()
-                           throws JSONException
-
-
Get the next value. The value can be a Boolean, Double, Integer, - JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. -

-

- -
Returns:
An object. -
Throws: -
JSONException - If syntax error.
-
-
-
- -

-skipTo

-
-public char skipTo(char to)
-            throws JSONException
-
-
Skip characters until the next character is the requested character. - If the requested character is not found, no characters are skipped. -

-

-
Parameters:
to - A character to skip to. -
Returns:
The requested character, or zero if the requested character - is not found. -
Throws: -
JSONException
-
-
-
- -

-syntaxError

-
-public JSONException syntaxError(java.lang.String message)
-
-
Make a JSONException to signal a syntax error. -

-

-
Parameters:
message - The error message. -
Returns:
A JSONException object, suitable for throwing
-
-
-
- -

-toString

-
-public java.lang.String toString()
-
-
Make a printable string of this JSONTokener. -

-

-
Overrides:
toString in class java.lang.Object
-
-
- -
Returns:
" at {index} [character {character} line {line}]"
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/JSONWriter.html b/distribution/json4p-0.1.1/reference/org/json/JSONWriter.html deleted file mode 100644 index a8c38b73a..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/JSONWriter.html +++ /dev/null @@ -1,506 +0,0 @@ - - - - - - -JSONWriter (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class JSONWriter

-
-java.lang.Object
-  extended by org.json.JSONWriter
-
-
-
Direct Known Subclasses:
JSONStringer
-
-
-
-
public class JSONWriter
extends java.lang.Object
- - -

-JSONWriter provides a quick and convenient way of producing JSON text. - The texts produced strictly conform to JSON syntax rules. No whitespace is - added, so the results are ready for transmission or storage. Each instance of - JSONWriter can produce one JSON text. -

- A JSONWriter instance provides a value method for appending - values to the - text, and a key - method for adding keys before values in objects. There are array - and endArray methods that make and bound array values, and - object and endObject methods which make and bound - object values. All of these methods return the JSONWriter instance, - permitting a cascade style. For example,

- new JSONWriter(myWriter)
-     .object()
-         .key("JSON")
-         .value("Hello, World!")
-     .endObject();
which writes
- {"JSON":"Hello, World!"}
-

- The first method called must be array or object. - There are no methods for adding commas or colons. JSONWriter adds them for - you. Objects and arrays can be nested up to 20 levels deep. -

- This can sometimes be easier than using a JSONObject to build a string. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Constructor Summary
JSONWriter(java.io.Writer w) - -
-          Make a fresh JSONWriter.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- JSONWriterarray() - -
-          Begin appending a new array.
- JSONWriterendArray() - -
-          End an array.
- JSONWriterendObject() - -
-          End an object.
- JSONWriterkey(java.lang.String string) - -
-          Append a key.
- JSONWriterobject() - -
-          Begin appending a new object.
- JSONWritervalue(boolean b) - -
-          Append either the value true or the value - false.
- JSONWritervalue(double d) - -
-          Append a double value.
- JSONWritervalue(long l) - -
-          Append a long value.
- JSONWritervalue(java.lang.Object object) - -
-          Append an object value.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-JSONWriter

-
-public JSONWriter(java.io.Writer w)
-
-
Make a fresh JSONWriter. It can be used to build one JSON text. -

-

- - - - - - - - -
-Method Detail
- -

-array

-
-public JSONWriter array()
-                 throws JSONException
-
-
Begin appending a new array. All values until the balancing - endArray will be appended to this array. The - endArray method must be called to mark the array's end. -

-

- -
Returns:
this -
Throws: -
JSONException - If the nesting is too deep, or if the object is - started in the wrong place (for example as a key or after the end of the - outermost array or object).
-
-
-
- -

-endArray

-
-public JSONWriter endArray()
-                    throws JSONException
-
-
End an array. This method most be called to balance calls to - array. -

-

- -
Returns:
this -
Throws: -
JSONException - If incorrectly nested.
-
-
-
- -

-endObject

-
-public JSONWriter endObject()
-                     throws JSONException
-
-
End an object. This method most be called to balance calls to - object. -

-

- -
Returns:
this -
Throws: -
JSONException - If incorrectly nested.
-
-
-
- -

-key

-
-public JSONWriter key(java.lang.String string)
-               throws JSONException
-
-
Append a key. The key will be associated with the next value. In an - object, every value must be preceded by a key. -

-

-
Parameters:
string - A key string. -
Returns:
this -
Throws: -
JSONException - If the key is out of place. For example, keys - do not belong in arrays or if the key is null.
-
-
-
- -

-object

-
-public JSONWriter object()
-                  throws JSONException
-
-
Begin appending a new object. All keys and values until the balancing - endObject will be appended to this object. The - endObject method must be called to mark the object's end. -

-

- -
Returns:
this -
Throws: -
JSONException - If the nesting is too deep, or if the object is - started in the wrong place (for example as a key or after the end of the - outermost array or object).
-
-
-
- -

-value

-
-public JSONWriter value(boolean b)
-                 throws JSONException
-
-
Append either the value true or the value - false. -

-

-
Parameters:
b - A boolean. -
Returns:
this -
Throws: -
JSONException
-
-
-
- -

-value

-
-public JSONWriter value(double d)
-                 throws JSONException
-
-
Append a double value. -

-

-
Parameters:
d - A double. -
Returns:
this -
Throws: -
JSONException - If the number is not finite.
-
-
-
- -

-value

-
-public JSONWriter value(long l)
-                 throws JSONException
-
-
Append a long value. -

-

-
Parameters:
l - A long. -
Returns:
this -
Throws: -
JSONException
-
-
-
- -

-value

-
-public JSONWriter value(java.lang.Object object)
-                 throws JSONException
-
-
Append an object value. -

-

-
Parameters:
object - The object to append. It can be null, or a Boolean, Number, - String, JSONObject, or JSONArray, or an object that implements JSONString. -
Returns:
this -
Throws: -
JSONException - If the value is out of sequence.
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/XML.html b/distribution/json4p-0.1.1/reference/org/json/XML.html deleted file mode 100644 index 439c4a930..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/XML.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - - - -XML (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class XML

-
-java.lang.Object
-  extended by org.json.XML
-
-
-
-
public class XML
extends java.lang.Object
- - -

-This provides static methods to convert an XML text into a JSONObject, - and to covert a JSONObject into an XML text. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Field Summary
-static java.lang.CharacterAMP - -
-          The Character '&'.
-static java.lang.CharacterAPOS - -
-          The Character '''.
-static java.lang.CharacterBANG - -
-          The Character '!'.
-static java.lang.CharacterEQ - -
-          The Character '='.
-static java.lang.CharacterGT - -
-          The Character '>'.
-static java.lang.CharacterLT - -
-          The Character '<'.
-static java.lang.CharacterQUEST - -
-          The Character '?'.
-static java.lang.CharacterQUOT - -
-          The Character '"'.
-static java.lang.CharacterSLASH - -
-          The Character '/'.
-  - - - - - - - - - - -
-Constructor Summary
XML() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
-static java.lang.Stringescape(java.lang.String string) - -
-          Replace special characters with XML escapes:
-static voidnoSpace(java.lang.String string) - -
-          Throw an exception if the string contains whitespace.
-static java.lang.ObjectstringToValue(java.lang.String string) - -
-          Try to convert a string into a number, boolean, or null.
-static JSONObjecttoJSONObject(java.lang.String string) - -
-          Convert a well-formed (but not necessarily valid) XML string into a - JSONObject.
-static java.lang.StringtoString(java.lang.Object object) - -
-          Convert a JSONObject into a well-formed, element-normal XML string.
-static java.lang.StringtoString(java.lang.Object object, - java.lang.String tagName) - -
-          Convert a JSONObject into a well-formed, element-normal XML string.
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Field Detail
- -

-AMP

-
-public static final java.lang.Character AMP
-
-
The Character '&'. -

-

-
-
-
- -

-APOS

-
-public static final java.lang.Character APOS
-
-
The Character '''. -

-

-
-
-
- -

-BANG

-
-public static final java.lang.Character BANG
-
-
The Character '!'. -

-

-
-
-
- -

-EQ

-
-public static final java.lang.Character EQ
-
-
The Character '='. -

-

-
-
-
- -

-GT

-
-public static final java.lang.Character GT
-
-
The Character '>'. -

-

-
-
-
- -

-LT

-
-public static final java.lang.Character LT
-
-
The Character '<'. -

-

-
-
-
- -

-QUEST

-
-public static final java.lang.Character QUEST
-
-
The Character '?'. -

-

-
-
-
- -

-QUOT

-
-public static final java.lang.Character QUOT
-
-
The Character '"'. -

-

-
-
-
- -

-SLASH

-
-public static final java.lang.Character SLASH
-
-
The Character '/'. -

-

-
-
- - - - - - - - -
-Constructor Detail
- -

-XML

-
-public XML()
-
-
- - - - - - - - -
-Method Detail
- -

-escape

-
-public static java.lang.String escape(java.lang.String string)
-
-
Replace special characters with XML escapes: -
- & (ampersand) is replaced by &amp;
- < (less than) is replaced by &lt;
- > (greater than) is replaced by &gt;
- " (double quote) is replaced by &quot;
- 
-

-

-
Parameters:
string - The string to be escaped. -
Returns:
The escaped string.
-
-
-
- -

-noSpace

-
-public static void noSpace(java.lang.String string)
-                    throws JSONException
-
-
Throw an exception if the string contains whitespace. - Whitespace is not allowed in tagNames and attributes. -

-

-
Parameters:
string - -
Throws: -
JSONException
-
-
-
- -

-stringToValue

-
-public static java.lang.Object stringToValue(java.lang.String string)
-
-
Try to convert a string into a number, boolean, or null. If the string - can't be converted, return the string. This is much less ambitious than - JSONObject.stringToValue, especially because it does not attempt to - convert plus forms, octal forms, hex forms, or E forms lacking decimal - points. -

-

-
Parameters:
string - A String. -
Returns:
A simple JSON value.
-
-
-
- -

-toJSONObject

-
-public static JSONObject toJSONObject(java.lang.String string)
-                               throws JSONException
-
-
Convert a well-formed (but not necessarily valid) XML string into a - JSONObject. Some information may be lost in this transformation - because JSON is a data format and XML is a document format. XML uses - elements, attributes, and content text, while JSON uses unordered - collections of name/value pairs and arrays of values. JSON does not - does not like to distinguish between elements and attributes. - Sequences of similar elements are represented as JSONArrays. Content - text may be placed in a "content" member. Comments, prologs, DTDs, and - <[ [ ]]> are ignored. -

-

-
Parameters:
string - The source string. -
Returns:
A JSONObject containing the structured data from the XML string. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(java.lang.Object object)
-                                 throws JSONException
-
-
Convert a JSONObject into a well-formed, element-normal XML string. -

-

-
Parameters:
object - A JSONObject. -
Returns:
A string. -
Throws: -
JSONException
-
-
-
- -

-toString

-
-public static java.lang.String toString(java.lang.Object object,
-                                        java.lang.String tagName)
-                                 throws JSONException
-
-
Convert a JSONObject into a well-formed, element-normal XML string. -

-

-
Parameters:
object - A JSONObject.
tagName - The optional name of the enclosing tag. -
Returns:
A string. -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/XMLTokener.html b/distribution/json4p-0.1.1/reference/org/json/XMLTokener.html deleted file mode 100644 index fd0868e5d..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/XMLTokener.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - - - -XMLTokener (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -org.json -
-Class XMLTokener

-
-java.lang.Object
-  extended by org.json.JSONTokener
-      extended by org.json.XMLTokener
-
-
-
-
public class XMLTokener
extends JSONTokener
- - -

-The XMLTokener extends the JSONTokener to provide additional methods - for the parsing of XML texts. -

- -

-

-
Author:
-
JSON.org
-
-
- -

- - - - - - - - - - - -
-Field Summary
-static java.util.HashMapentity - -
-          The table of entity values.
-  - - - - - - - - - - -
-Constructor Summary
XMLTokener(java.lang.String s) - -
-          Construct an XMLTokener from a string.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- java.lang.StringnextCDATA() - -
-          Get the text in the CDATA block.
- java.lang.ObjectnextContent() - -
-          Get the next XML outer token, trimming whitespace.
- java.lang.ObjectnextEntity(char ampersand) - -
-          Return the next entity.
- java.lang.ObjectnextMeta() - -
-          Returns the next XML meta token.
- java.lang.ObjectnextToken() - -
-          Get the next XML Token.
- booleanskipPast(java.lang.String to) - -
-          Skip characters until past the requested string.
- - - - - - - -
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
- - - - - - - -
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Field Detail
- -

-entity

-
-public static final java.util.HashMap entity
-
-
The table of entity values. It initially contains Character values for - amp, apos, gt, lt, quot. -

-

-
-
- - - - - - - - -
-Constructor Detail
- -

-XMLTokener

-
-public XMLTokener(java.lang.String s)
-
-
Construct an XMLTokener from a string. -

-

-
Parameters:
s - A source string.
-
- - - - - - - - -
-Method Detail
- -

-nextCDATA

-
-public java.lang.String nextCDATA()
-                           throws JSONException
-
-
Get the text in the CDATA block. -

-

- -
Returns:
The string up to the ]]>. -
Throws: -
JSONException - If the ]]> is not found.
-
-
-
- -

-nextContent

-
-public java.lang.Object nextContent()
-                             throws JSONException
-
-
Get the next XML outer token, trimming whitespace. There are two kinds - of tokens: the '<' character which begins a markup tag, and the content - text between markup tags. -

-

- -
Returns:
A string, or a '<' Character, or null if there is no more - source text. -
Throws: -
JSONException
-
-
-
- -

-nextEntity

-
-public java.lang.Object nextEntity(char ampersand)
-                            throws JSONException
-
-
Return the next entity. These entities are translated to Characters: - & ' > < ". -

-

-
Parameters:
ampersand - An ampersand character. -
Returns:
A Character or an entity String if the entity is not recognized. -
Throws: -
JSONException - If missing ';' in XML entity.
-
-
-
- -

-nextMeta

-
-public java.lang.Object nextMeta()
-                          throws JSONException
-
-
Returns the next XML meta token. This is used for skipping over - and structures. -

-

- -
Returns:
Syntax characters (< > / = ! ?) are returned as - Character, and strings and names are returned as Boolean. We don't care - what the values actually are. -
Throws: -
JSONException - If a string is not properly closed or if the XML - is badly structured.
-
-
-
- -

-nextToken

-
-public java.lang.Object nextToken()
-                           throws JSONException
-
-
Get the next XML Token. These tokens are found inside of angle - brackets. It may be one of these characters: / > = ! ? or it - may be a string wrapped in single quotes or double quotes, or it may be a - name. -

-

- -
Returns:
a String or a Character. -
Throws: -
JSONException - If the XML is not well formed.
-
-
-
- -

-skipPast

-
-public boolean skipPast(java.lang.String to)
-                 throws JSONException
-
-
Skip characters until past the requested string. - If it is not found, we are left at the end of the source with a result of false. -

-

-
Parameters:
to - A string to skip past. -
Throws: -
JSONException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/package-frame.html b/distribution/json4p-0.1.1/reference/org/json/package-frame.html deleted file mode 100644 index 3574f4702..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/package-frame.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - -org.json (Javadocs: json4p) - - - - - - - - - - - -org.json - - - - -
-Interfaces  - -
-JSONString
- - - - - - -
-Classes  - -
-CDL -
-Cookie -
-CookieList -
-HTTP -
-HTTPTokener -
-JSONArray -
-JSONML -
-JSONObject -
-JSONStringer -
-JSONTokener -
-JSONWriter -
-XML -
-XMLTokener
- - - - - - -
-Exceptions  - -
-JSONException
- - - - diff --git a/distribution/json4p-0.1.1/reference/org/json/package-summary.html b/distribution/json4p-0.1.1/reference/org/json/package-summary.html deleted file mode 100644 index 133c778e9..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/package-summary.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - -org.json (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -
-

-Package org.json -

- - - - - - - - - -
-Interface Summary
JSONStringThe JSONString interface allows a toJSONString() - method so that a class can change the behavior of - JSONObject.toString(), JSONArray.toString(), - and JSONWriter.value(Object).
-  - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Class Summary
CDLThis provides static methods to convert comma delimited text into a - JSONArray, and to covert a JSONArray into comma delimited text.
CookieConvert a web browser cookie specification to a JSONObject and back.
CookieListConvert a web browser cookie list string to a JSONObject and back.
HTTPConvert an HTTP header to a JSONObject and back.
HTTPTokenerThe HTTPTokener extends the JSONTokener to provide additional methods - for the parsing of HTTP headers.
JSONArrayA JSONArray is an ordered sequence of values.
JSONMLThis provides static methods to convert an XML text into a JSONArray or - JSONObject, and to covert a JSONArray or JSONObject into an XML text using - the JsonML transform.
JSONObjectA JSONObject is an unordered collection of name/value pairs.
JSONStringerJSONStringer provides a quick and convenient way of producing JSON text.
JSONTokenerA JSONTokener takes a source string and extracts characters and tokens from - it.
JSONWriterJSONWriter provides a quick and convenient way of producing JSON text.
XMLThis provides static methods to convert an XML text into a JSONObject, - and to covert a JSONObject into an XML text.
XMLTokenerThe XMLTokener extends the JSONTokener to provide additional methods - for the parsing of XML texts.
-  - -

- - - - - - - - - -
-Exception Summary
JSONExceptionThe JSONException is thrown by the JSON.org classes when things are amiss.
-  - -

-

-
-
- - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/org/json/package-tree.html b/distribution/json4p-0.1.1/reference/org/json/package-tree.html deleted file mode 100644 index 46fe20674..000000000 --- a/distribution/json4p-0.1.1/reference/org/json/package-tree.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - -org.json Class Hierarchy (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -
-
-

-Hierarchy For Package org.json -

-
-

-Class Hierarchy -

- -

-Interface Hierarchy -

- -
- - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/overview-tree.html b/distribution/json4p-0.1.1/reference/overview-tree.html deleted file mode 100644 index 931cb7bc4..000000000 --- a/distribution/json4p-0.1.1/reference/overview-tree.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - -Class Hierarchy (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -
-
-

-Hierarchy For All Packages

-
-
-
Package Hierarchies:
org.json
-
-

-Class Hierarchy -

- -

-Interface Hierarchy -

- -
- - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/package-list b/distribution/json4p-0.1.1/reference/package-list deleted file mode 100644 index 6374a8ef9..000000000 --- a/distribution/json4p-0.1.1/reference/package-list +++ /dev/null @@ -1 +0,0 @@ -org.json diff --git a/distribution/json4p-0.1.1/reference/resources/inherit.gif b/distribution/json4p-0.1.1/reference/resources/inherit.gif deleted file mode 100644 index c814867a13deb0ca7ea2156c6ca1d5a03372af7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X diff --git a/distribution/json4p-0.1.1/reference/serialized-form.html b/distribution/json4p-0.1.1/reference/serialized-form.html deleted file mode 100644 index 0090de154..000000000 --- a/distribution/json4p-0.1.1/reference/serialized-form.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - -Serialized Form (Javadocs: json4p) - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- -
- - - -
-
-

-Serialized Form

-
-
- - - - - -
-Package org.json
- -

- - - - - -
-Class org.json.JSONException extends java.lang.Exception implements Serializable
- -

-serialVersionUID: 0L - -

- - - - - -
-Serialized Fields
- -

-cause

-
-java.lang.Throwable cause
-
-
-
-
- -

-


- - - - - - - - - - - - - - - -
- -
- - - -
-processing library json4p by Andreas Göransson. (c) 2011 - - diff --git a/distribution/json4p-0.1.1/reference/stylesheet.css b/distribution/json4p-0.1.1/reference/stylesheet.css deleted file mode 100644 index 54998c2bc..000000000 --- a/distribution/json4p-0.1.1/reference/stylesheet.css +++ /dev/null @@ -1,310 +0,0 @@ -/* Javadoc style sheet */ -/* Define colors, fonts and other style attributes here to override the defaults */ -/* processingLibs style by andreas schlegel, sojamo */ - - -body { - margin : 0; - padding : 0; - padding-left : 10px; - padding-right : 8px; - background-color : #FFFFFF; - font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; - font-size : 100%; - font-size : 0.7em; - font-weight : normal; - line-height : normal; - margin-bottom:30px; -} - - - - -/* Headings */ -h1, h2, h3, h4, h5, th { - font-family :Arial, Helvetica, sans-serif; - font-size:1.2em; -} - - -p { - font-size : 1em; - width:80%; -} - -pre, code { - font-family : "Courier New", Courier, monospace; - font-size : 12px; - line-height : normal; -} - - - -table { - border:0; - margin-bottom:10px; - margin-top:10px; -} - - -tr, td { - border-top: 0px solid; - border-left: 0px solid; - padding-top:8px; - padding-bottom:8px; -} - - - -hr { - border:0; - height:1px; - padding:0; - margin:0; - margin-bottom:4px; - -} - - - -dd, th, td, font { - font-size:1.0em; - line-height:1.0em; -} - - - -dt { - margin-bottom:0px; -} - - - -dd { - margin-top:2px; - margin-bottom:4px; -} - - - -a { - text-decoration: underline; - font-weight: normal; -} - -a:hover, -a:active { - text-decoration: underline; - font-weight: normal; -} - -a:visited, -a:link:visited { - text-decoration: underline; - font-weight: normal; -} - - -img { - border: 0px solid #000000; -} - - - -/* Navigation bar fonts */ -.NavBarCell1 { - border:0; -} - -.NavBarCell1Rev { - border:0; -} - -.NavBarFont1 { - font-family: Arial, Helvetica, sans-serif; - font-size:1.1em; -} - - -.NavBarFont1 b { - font-weight:normal; -} - - - -.NavBarFont1:after, .NavBarFont1Rev:after { - font-weight:normal; - content: " \\"; -} - - -.NavBarFont1Rev { - font-family: Arial, Helvetica, sans-serif; - font-size:1.1em; -} - -.NavBarFont1Rev b { - font-family: Arial, Helvetica, sans-serif; - font-size:1.1em; - font-weight:normal; -} - -.NavBarCell2 { - font-family: Arial, Helvetica, sans-serif; -} - -.NavBarCell3 { - font-family: Arial, Helvetica, sans-serif; -} - - - -font.FrameItemFont { - font-family: Helvetica, Arial, sans-serif; - font-size:1.1em; - line-height:1.1em; -} - -font.FrameHeadingFont { - font-family: Helvetica, Arial, sans-serif; - line-height:32px; -} - -/* Font used in left-hand frame lists */ -.FrameTitleFont { - font-family: Helvetica, Arial, sans-serif -} - - -.toggleList { - padding:0; - margin:0; - margin-top:12px; -} - -.toggleList dt { - font-weight:bold; - font-size:12px; - font-family:arial,sans-serif; - padding:0px; - margin:10px 0px 10px 0px; -} - -.toggleList dt span { - font-family: monospace; - padding:0; - margin:0; -} - - -.toggleList dd { - margin:0; - padding:0; -} - -html.isjs .toggleList dd { - display: none; -} - -.toggleList pre { - padding: 4px 4px 4px 4px; -} - - - - - -/* COLORS */ - -pre, code { - color: #000000; -} - - -body { - color : #333333; - background-color :#FFFFFF; -} - - -h1, h2, h3, h4, h5, h6 { - color:#555; -} - -a, -.toggleList dt { - color: #1a7eb0; -} - -a:hover, -a:active { - color: #1a7eb0; -} - -a:visited, -a:link:visited { - color: #1a7eb0; -} - -td,tr { - border-color: #999999; -} - -hr { - color:#999999; - background:#999999; -} - - -.TableHeadingColor { - background: #dcdcdc; - color: #555; -} - - -.TableSubHeadingColor { - background: #EEEEFF -} - -.TableRowColor { - background: #FFFFFF -} - - -.NavBarCell1 { - background-color:#dcdcdc; - color:#000; -} - -.NavBarCell1 a { - color:#333; -} - - -.NavBarCell1Rev { - background-color:transparent; -} - -.NavBarFont1 { - color:#333; -} - - -.NavBarFont1Rev { - color:#fff; -} - -.NavBarCell2 { - background-color:#999; -} - -.NavBarCell2 a { - color:#fff; -} - - - -.NavBarCell3 { - background-color:#dcdcdc; -} - diff --git a/distribution/json4p-0.1.1/stylesheet.css b/distribution/json4p-0.1.1/stylesheet.css deleted file mode 100644 index 4348b3814..000000000 --- a/distribution/json4p-0.1.1/stylesheet.css +++ /dev/null @@ -1,203 +0,0 @@ -/* processingLibs style by andreas schlegel, sojamo. */ - - -* { - margin:0; - padding:0; - border:0; -} - - -body { - font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; - font-size : 100%; - font-size : 0.70em; - font-weight : normal; - line-height : normal; -} - - - -#container { - margin-left:64px; - background-color:#fff; -} - -#header { - float:left; - padding-top:24px; - padding-bottom:48px; -} - -#menu { - margin-top:16px; - float:left; - margin-bottom:64px; -} - - -#about, -#download, -#examples, -#demos, -#misc { - width:480px; - float:left; - margin-right:24px; -} - - -#resources, #info { - width:320px; - float:left; -} - - -.clear { - clear:both; -} - -#footer { - margin-top:300px; - height:20px; - margin-bottom:32px; -} - - -ul { - list-style:none; - padding:0; - margin:0; -} - - -#menu ul li, #subMenu ul li { - float:left; - padding-right:6px; -} - - - - - - -/* Headings */ - -h1 { - font-size:2em; - font-weight:normal; -} - - -h2, h3, h4, h5, th { - font-size:1.3em; - font-weight:normal; - margin-bottom:4px; -} - - - -p { - font-size:1em; - width:90%; - margin-bottom:32px; -} - - -pre, code { - font-family:"Courier New", Courier, monospace; - font-size:1em; - line-height:normal; -} - - - - -hr { - border:0; - height:1px; - margin-bottom:24px; -} - - -a { - text-decoration: underline; - font-weight: normal; -} - - -a:hover, -a:active { - text-decoration: underline; - font-weight: normal; -} - - -a:visited, -a:link:visited { - text-decoration: underline; - font-weight: normal; -} - - - -img { - border: 0px solid #000000; -} - - - - - -/* COLORS */ - - -body { - color : #333; - background-color :#fff; -} - - -#header { - background-color:#fff; - color:#333; -} - - - -h1, h2, h3, h4, h5, h6 { - color:#666; -} - - -pre, code { - color: #000000; -} - - -a,strong { - color: #333; -} - - -a:hover, -a:active { - color: #333; -} - - -a:visited, -a:link:visited { - color: #333; -} - - -#footer, #menu { - background-color:#fff; - color:#333; -} - - -#footer a, #menu a { - color:#333; -} diff --git a/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip b/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip index a7e275b2c1cfc0518cdd85d4b5a475a641e7a5d2..56fb1a8535920e6498d16aaee2fc814365c78721 100644 GIT binary patch delta 104985 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 F;(rdXG%x@F delta 105014 zcmV)FK)=88^9lL$2@Ft60|W{H00;m8q;ruBECQr+kvcU3q;rvRI|8J0k*+iXq;rwv zHUgw`lN5)&8ezRrl3b@4ePu zb!|l%P%s!EASfW9VrK^dp#O0}1Azg_iKzdd`$oWDgGA<1yuAG>TyG-qW>3W z^*7M|#{YrJ3CT-|i>av6%ZWe8O-+Bw%Fxlz!^_Z7&rHoWDKjpy>>fEyiJ&;rO3Kbi zssTj-lhHlKcywe(E2GLNtGMJ)3!P6t!tKXSxg^2GptAe8KzO zC0zx0%*a56^en|?bUbe!Z90F?+-&Z2F!X*s48{Wy45hhU4iNFQ7RU?$cw{+A_oR4e zIZ2DMOcC9?ncp-C0MlifSC-e0mc22+sk4%tR^eGSVoYO2=2x5}Ik>aq9{MAW>~}#i zm|6#9`u-Weutpt1T*KRO%_d1uRN1*FDvdXDcIju{4&1Vbz!Vf5({_I?l?RGL7D1Me zJ&0>tpwfe$B*3Te$C1?p2~=8&8X_%m!h*KOmox`oRGH@;+I#EVe|Rd(l~nrnq*CJx(sRwf(VHeLCihr zayQ4epI+iyg{6aK#v1po9MpUhzGXsdO&ZgqOm!a#34yxNq>o?+Mos^^S}ZD}R?5Gh ziG3M@y7BPZS5aw3!pfDDuLxXRl#+vAqT-CkzNV}qbNz*eH$;B}GjpJ(?=9C4eu)tf zv~m{~@IE7mPQ4k9))mR$TUIbDO3%0f^=A^73PcWzt zezThxgm{NshG?@jL19@K5L0I$spF_* z)?+oQm60q@0Y!fF+qk8zisSKlucYNmke)ketp)h3V*7tsG~jVpk#SrqmW1K<=T6Fg zB(iI%eR6#w#IT*|K&$1Nr$mDf#&r6qWDbEZg;)c!2>PfoUOgEyPszf&4l-?G&2%2D z$j6%4(%gy#=F3UIZg}t;A1e)s6ga%hDfy6lXHbp|7TMb$`^RpUq%MMq{Nl9>n5mkt zE7!GS_3wZCZNshTrKzzm;U%jIvGU(Xq;0T9+rRvgON}`I*VF5Fdckb5-P?7F=dNof zh7X>+0QAJ1p!;aaDXa+KR-Fo`rsgBv~X zNpBgSQbG)|<%FyI$Vqt%livyg1 z(GoW01f4~19~T=&=lrN0!=p9gmwlKJ$~+V7{7A-PeZ`Jiym6Wlx;F?U6Cl-H5qrt=kU=0AUZeZ z1QT`Uyn7ePw9B^L_3=BmWZXNWpHxkE5x(F6aMqrb;A6Aj${W{h79e#Vg<`Az;B*eu zYO|N)S~REQ)DTpSI^nziHj7Vj!6A!3gz(XM^maoC%b@VQAYS)_|Q zLEMU8^tRd)fd9b#o1?UrZuGi@Q`>|O`KX?Ih?%sopBasKz;?_j za5h*pta_Gy0;s8yNc0)~5`h6gVcL@WdNixV(+C739*4B;kh<`Ii$xKvE5^|j+cVAu zNuAO5leZo^S-zVcwIJAtJmd-yz^dw7~EYCCOWt(&;D1K zz3Ud&7x+I_LeZmT`0cOGApTVn^na*?y}h-i>3@VGRDHu4RSoMq$Bg5b7DlI@WJ#EX zB8(-ys%TMSDO7<)0i7@`y6R=3-D2~Zog}+vax`Wa4K)M8AZ1!wk5^U+3Cn+5t$%F% z4CB&`O=2k>V9I2cYv;+QcgKB(+@J5|6A@^3p9dWJQtg)ckJM^ip9X594`<&nFgWBL zj6pXwKrt|=8wG(%(NS{*DKEUkDWooL%p-PI;?+TRgfedwZOBn~1UlD=H(jXGW-nFOZaJ}CWlT*{6xaAb53M&~}BoxH& z2EpU);LFt(MFxYa z-Bj=iwJHc{F%+H(L39k8u$h*g_bL??Gc7S_bG2k8rM-OWz3eD=#=63INL!l*y1`Pl zbtdoSW{*PB8PtYUCJCM1=x0^kJ~8w(hYTTJbF?aQ%x#T3V15&e$>NR`di2j#vDotT z4yz1a{sDAo!m1arJZ68W##f*f8 z%Z0V&-S(FSPWFFJgYhV2L{LGvP4iLbgy$sFG31147L?S-cdVWr9ysKE>7s@G#he8D z5QlAb=sXlLR+OGo>II@~=HfB$jdyIOkWI;o0muhQ(A~S7F@qF7D@$$c7Wn&`Gt@1t z634e3gRHko|i&c^O$Xju=WRe5K+xL z`MQYqF*yhkoiFTo@$!{0jzU;5toD0}b!ID6N2w+m{g0n;cf;rjbhKOYolqa5;EZp` zz}?zIWG({?0FKjyTfCzEG$>q+hSJLL577vk4_?Drl2CTURRN?i;C3%W7=X6K>Qd5B z{~MpM@Xmi6nFTiH6@ByFdZRIK!9}wygSDQ`{#0Uz{iO>=QRJmdau7w_mAk0(G1W-8-oEx1LDVaHS zO0q6hclc`P5dtqT={#~3LS|QDzaoUT`48Xj4v~Mm^qzh(4`hXQ4=3JQi7u+r3prES zo%8*Q3#gH&vI}+P5bILgTuW!&o7$|_8o15v`s;F?wz_5%VKk!rus zkqGj0?vmUI^=Ka$K1=%i|4Ej#@*P_1AV5H#f7@#8|36vES~|P@hcIJRFVs<#(7xi} z;`Y-$=o+(1M${&*1N2Dg;Om1(uekRmNmzdeg9=RJjTm-&)jzT6R?dOnwnQFL#NHj0 z`WgzIHBvH@<44j-|>-z1%k`qMksFk_%vM{+P*iS2YHX8%){jusJq7-y+MfRCMwhP9Dx$s@Ahd!XK#ND z?2z)FN=C^r{ybet+UjZ=?BM=`xSC1ALqq-L#{Oa@)fSso)WztvT`#GXp!X6$*mW_H zxszkZ&qR%Tn5_uXNyGbYh!j7g2u+Hbw>R6XOI6 zBD0Z-ugpR^Aum1U76_4S3ZOqk0?mIkL`GWwV~;8K_Ov2|R2fdBCZ}xD+FCkcUB+Vs z8AUUhF|0Y{L^H8I1`|c!soAv4$WR4EpTzH{f$EBLC5np7&}>Kic0TWtsHXyTSdW$M zn&Lx0mk8BFn7$2&g$1Vt+YkPkXD_9S8Mh4a8Y*0I>670|u&&r%+Aj;~6PbU?6Jy{o zqjWm~;8A@WKa0p&Ep!TGqw9zFG^-FK_^ApNB!%T)HHm9BpK9eQ6;od1>B%Z7cPxO+%7p6(Wyb&1^%lb zm`z|H;Qn?G!H_^esQ3K?&vhyYOWP5z6SL{)))cK|@1dPMWrQhT8#TTLJafRa+Noo6jkcjo)t`92+-l4xuUQ#2l_zG}wYr8v+}0Z`@}~1z zbg;zH9?EwmAfJE7*O}#GD8DuGrRowWB)6$l?#~jb36OLk7V6P-PmzlA>nyvw+d11# zZDBQD@a|H8A*+@m0@;vRfOS)MFZ1ZFA-STY+s9}E~)*Cjhgq`&sY}EV`GlH zUD8Y;^t&gNOvjx>8;TqaqV>1h-ldCs?!ql|NmB}ypUyeDsEo0ki*x%);9E)H84ZYrekZ(PKg~XE2x>IS}PR;TwO=Nv$G#VbI zvf+Ql8-opfG;F7v9p5=41aYyS!;v_}TBP1qb(9;{!A$bVss?c56EhlnlmUxpkX-^2 z$5rutLyGf|;15+wl}2H`)1@;S1hJb`O7%yhUEwe;JqqK}VBB_>%p!BN5pI8&js(x? zPF%t#SL3J8hz&91LHuDy#7Q+1@6KRy3n_mf7+{g`HFXrTLK(O0SuXHz~kEjRWU z*$R@qlO^=M}e)g zctr>8x!^th`)WHh>N$7Uj`cnycNJs$1@WKcQCu!kc>oLqboEzJasEvns`l2VcBX$$ z|KSi@B{>CDB{aUen4B}lQ^ox9VCCCjw|rJd9T$Lz5nQ2Em8kpdA0>#}X_I5ibA|rc zA$T2Er5N(gXNmR)j&|cN`^+Cu_Kx;59VdQ0c@hS_pzXn?xJ8s1>8%Narnv02tL-qe z12GUQtiF0#TBxR|&Ty|Of)M8fgQ|a~wpqPu3{bb7%PQ;(;YEoWAFPf;{)ph$9zK3Kwa77cs5GLY+ZXPE)A^hWv*aRKoj-fLH{ z2h<-b6-M14nd&%ya{Hf{J3oKD{UQ=v{eg^!--BRp76fv6z6ro*^;W}gw(!L_?;%(H zm;?e|2ea0~)o}aXG#?-+ZSabFyZBbQy>C>1$nZ(}n@^99vm4^~gUF(($PO|x^|Jyg zE1Uc@b?Ew;crCig&L{;AmnaA95B$&602t{<#=!#tNf818Vg1k4kXC zF-kOHeN>Lnzw?eA7au{$nwtygz)Dz21F2!u@}ZjZhn17VTMU0EhoL}8$te?@AG=I- zZ+RmaP&!{^GtOCRoAR%UaBw{P{dz9Va#nd(AHAG;y_U;t=IFaA`*_>he8{=s{W|eE z$-ZE*=YQi2ctvwAA{>8Z^I3~U!DAQ(@fn_;bmSo4ucG&n%T*Y^ccIF>b=`Xl>*7Bc z;9&ES@#Cj~?9mIm+5KhuLeRr7iMToSDU$F>!r>Q_*M6t+A)A^9`{0b@w>QABm2QUj zl@ey~iwS>J?B1^L`L+~3B$)-du-+3htu@YA{b?~nY8p;(t3xf<{7Ir$4RyGV68FaQHN4E zDNS0eS|o_L!YY3unnX4!g?5#+YC$`W1!|MEX@U8c^p(icHMFkunb(EbMu$xUdj|%r zi(=;OXR?`O$zFh}w3Rg+Hpb<{6$^v{o0ILMaT5=FZ`KrY)mD4N8yF6R;-ZETJWr(livCFRnD?OS;HysQwFk1=4q%wlb8vk>3|9ZZ?0Cmk~oGh4U(KQ`izU@!c>desGv3_LRLpUfcT7c z3Af_2`R6=&z z%yX=W;g_jDqRHLqwxRnTC}nJUv10qaXSUQamq~QC<^7Ohef1ln}5pryT`;6ZcVx@m3dN#LhIi*(&jSZimmi@j-WY>v? zXv85=M{%z8l^-=??&_Fp6|)-s(E75iJJeD&T2 zE(LKycz_5P(vx!*z;HQ<@<-8Ly1fP`JJMZAD;b1QcTXKuq}N&oHXx&hn68S6V1R=}uo{X5wd43DGp750}+2S~G+(WXR0c%M}m@l7rLzc#m0%JpSL=x$= z1@4^X#W0)l-)02Vxx7M-u4cLNxQP?$HXOs_-1p4z z-S_G7Z~DDm@rKG=H-iw7^AGfW#8EEaK&oR#`dm7-%NXr`$P#QFA|RisbV%`qL>A#L zK!$XRrRtCO#Ky z&A9gruO5`7T)fCQWN2@g9f!BXd7B|vmpBqX|P+?fdS7E+io3#5+K_$|Bs8@RQSVo4b z@P5cqF^VH+02Z)Ntm8@>NmfqvnH$xNep_6RtuEQgv!@C+k5@D0+VPQa4}N|oc+@p- zFJ{P3X^%i!*O0f)+m2QqU0rB2o?IQENHvSsV(+dGYgv6*TtrhOCZvBlP%E1#rc&By zwk3e4K2^S3h-ZKfHEC=4b7n-DP;kls*Py(4uyg622jJY$c3=-IVD0QG(J@a|h>Qf7 zds?|R#I)6_GV@mvG!d<=Dx~Oi#Mvo`)v2NSRQZUUo=HmUM*k6C^p1Vi?$PlmKL|J9 z1RE9Ak>!}+QZv7 zhZe90$V)JSn!g@{IzaMiL)20%c|QXezerSgL2t!MdqVSqy$63gm@6)GMNnzM2)GhK zUwn?NJPCg_-5ErDo89dgJ*-Xp!@|9~H|Y@r91i3HBiQfJA)~*aL>pkFPQD;vh|$)LOhm@8Q%UWS8{7!w;6y6CgjnpP ztDd0$k#4AA#^@?=9z0lX)k;@W#TQW#Xt>2#nc`!A!jB6d*TotEJ<3=!slpPn&TCRS zz&{{;CB4HFG5E<{DJ>2Aao91b+8t#{jS!d#cfK5wJCc7v{D@WBG|0l+17~(Wf}P9q zDgn_Xs&;B2p9bp!0<5m`Bc}{WBEDh%8~!5FIz?jqQoX(?co$zFiGzQ+@r z6=8rbGu(f1IRQbYS3(UEd(dX$`!YSUffq?O^u*VPaT939V8Kd7d!ELzYXK*edH4IH zR%TDvWs@(QCg#_Dm2{r~h8o99U4HU$_TPWizt0z>qZqJ4a>N6dl$=1&;Yca22}-x7 zH5$`H$VG%z9HE~XuYMS`SKI%owlBeMCS>fNAjC2DPXTA>8omqe7H}X>zyS#!<)LDf;^NAVw%nF1UR2s!(+C8fa zwlx%s*YLcYO^*g~32KT6{DIthlVB>xk-G19hO3@mSl4L=gZA0ls#;Yaz0)xf4PTBP zf2el?3!=`MC5nG%RPK1X`P($TvuDIZ>2aJ&yhY_4feF5{iD$t2)S^cXF+qRdPyo(c zH*ZM~4pgj^&!16)Jx8=vrevC9SF_i2n`FeM5QBN_iP8~9g7Fp-l9Mb?!`!LYrjVP8 z(_VN4Zt6J10&n=)Rv}XhSIRNHs|mrJb2|-e&}-O&4>yzNxo^dZqX-kPnYJ4xJeDgR zyXBu5NXAN&R#xHj6gBQh-d5JN`lpZF z6I|pQ+-kkGJP{aYE2jG46x6z{q1q+tXS@;PQzxiBzMCQv`s`qp>iT~wXRKnCc3+x- zed`}djh`^Ru9I0SN^?(`1&?4Z5S;{@uM&*VnVrSO5Ws!TAY?KA!>rFxMF*^ZLR@9f z`NKx#;8t7>ex-N_i+NG(f6U%GVz6e|M3Cq7!Pz0B z*RB-A)}xNJkrK|`n)s!E|I6MNCXpV{|F!o!e*^E|9!|`|*wn$r(%$a>Gx#zJ1A<6j z5R~9H$cI#3cMwN&Lo_3>UO!(r^SkTXE6Ao(U83KbSnm=%ZXthPieiG7GzQ3jHL*NQ z`!wzJ_;>XHuMWFGLs*e5%~KMGmqw;WvKJJZ;zi6QH6ReXI=TqvBli=COH&AwyoVQ{ZD)kLLCO^U&@H|Accs0W^|_GSrP_LGF2{8uJq7U0m8a@D8%yJQ@fh zR>ZMWTlOR!Ps)E|V~25mQke8Qs?{3oSK36@?C}zN_kI|}EBtexCvi>Q_@RM-C{h1) zg8RSsS?<5H@hL+If4`Hwbxgi208~m(S|`4_@CoLw|wq;_9VC6m$`B z2ncZqg4wRFCE}Cpq5b_OBXNkp>Y+x_&+MTt7vBhGaR>lyeu@nmv^dJAVq9beSQ#J?IkurLyW^$(=!uH?q*>&1~ zmS{4>YqO;E&~-p&Qr-G)cAr$l8uIb+pC+_>k^C8tA0F(%pOWM{iN4-CX9y(nr95G{ zjm#Sb(rDkl<-mVuu0;7+CDhxt?%=WTC(P5tP)WZ7e`#QVU&J@5QGzy7y{4HU<=(#8 zyxgYGQTE%Mn2WsGgb%#+tW_k3%;Eumof(~TjJWL7R?K?3E!lWgSl>~?q*#fewa2h6 zbGAMP6YI^InnrP2aP}NCvY$Q5s=OTTsWF#36-Dbv0ZT3vAk$JW+al`#&6c?F7>9Fi z@d5I$f0_Kb$rFRWITOqMuK}X}`v?BB`6=A6hAO|;cHA=$w@KS=4M?>A*9}y#t(Y!n2%j%4SAa z2Y0AI-~4wvo{yDK46SClp0jVVZ$3FGdOY6Fe@KAleh|3y)j7rnS>yk3h{Zp@!+~V8 zZr2)}Zh_H134m_bABNvFsM~*U?+wgCy1Cv}DvQ#i4$E;s`<1gAjGKeikK559)vr&X zYLuLXMYuMq$niiq^NxxjYt##B-#^XUCf2X>I<)a(Tm`xlztP^Y73jX3v+2_p>AnZq zf3a4(yG6Zy03@(IIY+2`%YS`iUJvQ<2mp^9gg7n({(FlA#%~F@$uTwx(fOMRU0{aq zjxm}^{1(}czhIxD;~S0e(-IxBo$&Bj$&SBh-&}38AIhz=J^Fpi?S=gs;6|Ww=LqqJ zH|wK6OoZN>zl(`q50bab(p$W*|FwD&e?b4y7^P6zp4W@WnU9;Nd`IK6S+wbs0{*~; zAuBx$z*rZ`~hZw3iq4^&i&{Nn!Pgp}F?I3LxCI$GUI(c;x~2pC$A+T=*KZ`G~~+ zU~zuN9QmVRr>}O$hW=f;e*x387l7Z@1G=MnM|b^QyYGnpU9c~p_K_C#eGIy-e)sKB z6RhPMZvHhG-a9$%y_szY*XG!ye=z*rIJSLo47TW~Jgn07%5GQ8FYnA!2%`wTpa`Xg zMm4Y>Vjh}uDY2?r@RJET1@kJ(fpTD6ha0WnE)t)VN=cSPX&{dzic&2^2HBMN#w~)0 zltZZ&2Jwc$F#<+ud|LDC@t(boc!a8O0=O>1N^FU89|TNrPP=g4p{s)-(s5kCf2p=LZ+=9DUQ@k z*>ua|GLnUJHBAgsxozyQcj-=ggjktDgOlekU_ZTOXqu!u$>y?14)i+NFm8Kd-6~=H zZos{ySWFpK&@R5~ROPB1f1ognJz+G7f`l{G?hNjkjHH3GVXqcnjJqGYjMxV%cbz5D ze5u9r_(7Q}lmoCNq{S;c&5|c3XI;&*gqwOIt2#s~rYqST&du}A@$?*)NZL>u^zJM< zL!+LG1v`jwegP}-3rV`u=#z9@jp_48sn>Wj%Pd97Q%Dk&%Kcrkf5I99hyh;oQ<%s+ zNMbuizr3If=@$s2OoVcfWh6N)Q1j0~6d>nzN&>_!ZfQA77-thAqR0^=<1%^Hfo5lW zxreg3?d5d(dfs2Pf{M_Ee9e(LBY8U`Wk*bTO2>{El47#UWENJ}x}D?YPR0=tjS_`9 zcekaClgk)Vr+&5_e^fp+HEK)plZ|7kCY%J)Bm0+w-Fp@aPDPJ^#BR1qma$t;QQ6l7 zTH5vA3KG0oO-+QHE2jpaoCf~FX(8M7MC$unj~Z68AZ9r#!Z{R688A{?Dnij{R`Q@R z=2D}B#b%_?9@m-^o;?_K9#kVIud_A2CmU|3Kf`auy($jMe?w?uvSgl*PZT9gN612c z_LvAE;O2-N(+%7DK_&H?bIT6^-TPjkwhx9r4KxsX+G$xdhQk`tj-z?`MtI!#)#_@F z=h4Juq3wJwr{Gn(X3gxMWwlW?&`*CB*8!E@W8{f@qKRh2dI_X!AuQOFjX&pWYjFJn z1B%EOARg*HgP5&|BzUF{A7O%CMXo+~|jE=?ppOeSkH*6C3~9qD65HnT0L9 zc!%0di_6HN(z>IJ<}!0~G^SW;M3kA$8GWrE7Ppu$G{RcqEotE>xKiCXAHZMbd!ZJ; z9q6;gv66&x<*zeuqk#qv#d>1EUlRA|q;^WbL>E?&f3G7&eX~f$V|yxe%B+Yf&ymQ{ zflA>l1MEoVyk4rvOQW%I^uyAu_ld<>?9Nj8*HN$ULw!_m%ie^yhEQUuViK8~FoRWm z8`}L8gWENcS=g9hE9UMkjau77;R5)y1 zP}|G5f2Kmp+4+$jM!Cet))sq5p0ow`K4QqQFM4*{%0nP>v}n<+4VtVf4F!>8Miu0# zk(1?@b3;e6ny{$HIJOv2M!wzTwMZIPSVPLheDNp9u@2gUFx5*A&|Pw-D;akEK8nMd z2~CO1KyVK`wi>=HH29)dDaSxbs-6>N)YqF$VmI@avovt!>-Kw>3{B_s@=I}cS*2+HYFEL$6au1iU3={#;q zf8puQE_Ea3G;=iJJ&6@can~B5ZFDMHtiTf&M!4Gf4bF?xC!(mnW|C-F&^ZBdnVb11+i=#=+vZ=b&)zlW^y*jhpBB1k0ZM7W~56)>UVzkEDf<)e;XYg z!C5?O&tDaL!p(_>sgKW3;@nh=O)anFiLdi{>5_888Kpa0)73>UK<@^S@z?uGiCL5! zTbn=KqRgg#vhH|9r#5}Qur=syP9r!%^9+%x+BNpSbQ%E$xxKuNvnCeKlFW zcO5m(^6}#Sz4tw<+qvCNqRyWXBt=J z4hj6!BhI&W6DvB&cbkD=P6fN}XVO~xj;q~u-?Q%`%9m9K-x81wBtfm{igQ&^yTZi}eO1hbOkeidH z2VRO_e&)aAOnp};eTU`MJ<>ZEbEbhfOB4IKMUrY4dL5EK)aVU}o0m-bmglU-ivAkV zNp*h+>bgwSb0=FCe}Cb&S9o+MjTxBfv{Aa4C^6B~@`!nvWB}UBdaqcfx|J6{)#VnH zQAiG1#*=0ws#32m1QpdqGu(%@1XkO?#V5wtrrceF=$ z{97#H2-16?V|&VF&}LsEpqe>US=-jGJlgh{S)EzMU7zDNW|BG~L9I?&UtH4xGxgITWEk!e^u!pwYSPJVjST1kHLVi!5_=; zBJ(SKPJ&;egFoxAe_r%Ue}l-9Nm|c;WbP*LDIOp$vx1#6fVZMiT8H-Ym z_X%JLqU!=t$9{?9R`oH1u-8-Gc7EKz5ByROq7g~)ED8{0(Fq(@S({7ymj5kAVO>>EvCZ+>9i_$l_vaAK?NFG=nD=7eid;I=Hp z#6sg--(9RgC#1x^UeN52JBuQ>D3H;XGdJ8me*vfo;kl+_s4q*XcX{E7fgZDDZ4imQ z#y%pfU$2J z)TLHNTfj6>~jN}iMp+^64NYhWA403;Jn66|@T?e~Od)+apDmq^4CXZ@e#%KlWSrA^kWUF>IPW zZ6#>+n$Z1=v{^T<8@!YG7$>bCR&jCg^?%E#>#m$Wa>ok|1Ij77wa=nUyJyg34K7^S zD>tr46EQ7kj+JoE567v}`>RAq+)Y^92y94-arA^o(K!qH{Lvff66c3^vDm66f1?i{ zxuNgSmL^+PcEI1EV#b|A#*pWzIBg{#nKF%6bY&Vl#uP5s*DvDwMg4!g@Up@Qt^q85 z#L**^8XhBQ1|^z7EsYN^be@dKTZWd7yn#YcO1Y6MFqixLXLg9!$MuaoH0&myJMN5 zK9XI_s4#{jWE|KPlY`3*GCr@-zTqpnppc^or5rS!HWc*{4+8AUxZ-FzWVxUoAo_*2 zK7i{xFfYsI2U_#1_`##y`u6i_WP@k>vh%Gg@TQm(P|pOrhe|=>xMT=vW{U5EK9h2YXAeQ4rHd%lf0s}(K$`A+5I-1b zd_X#Fu?*C2tIHQ$$x9QYD+05U;D}?|^vy|_H&>zEVQjNPs&3B~wig`IPBW!t*#W81cE+qP}nuGqFKwr$(ClZwqsQc1mi z-fj2RJ$d`=H`iZlf3@}fCf01Tjc@fadWXgOVFh=liX__}P?Dvvxt8=X3IoGhJ@oLt z5h#AVDpAB5TsyDCvUy&=atRo>dQcC>t5&gRr_sJGHMVoB#k5A%Z^S*F_z@R~#{)`b z%pz5$}W!*bVZVkyl6Zc`y@BD@1v9XP(Os^T*C|M zn@ArSN_L^De_<=2syJKhLpgbZuw}Cp{tnxR)kUB?bLJ0+8-JaAYu%V zY(`RQ-NCJ-pqtfztj|9K0N4x&CLNMN0fhlsms-=Ve^17L{Xr8&@sU1Z|NDb}OBuaL zWxx9zLjz+nWJbQx;MyCg$xJ>=NlRTmk(?a0WpqBtFg}G;KW&Kw`5_9h0T!(@LPH}I z`;Bew4t28uX%wq)1gryQ7{X9_a@?aWp0Hd~HBL*>UJH3lQmIij-~l;6r3yt(*VDL| z^i`5Mf2SALj|?A@-dz$;tha}Rt}7f8a0<`UO*5l>@gvRP6EV^JLyA# z&!@UQ$fq~RCs29+)w5tOs8=$3v?O+KD7#(rTeYyK*I>8N9z zC-5!zl0D#(Z?dD9U_+##OI={2=TLh;ZlK zK515kUe`5+c^cu~9bSzTO1FYsF&$T83@=)z6;Ehk4`4lkMSIsl4zmEi!oyzJsIIxO zRcjAE6`-!M{ViEK_(9=egcxJ^WQe&E2}Ao%R4oRBcpm3Agpqd6RI8j8Diigu{Hyg+ ze_)P@!S@S+5sX3L@iBw#+AY>a%@_8JeFjAJmJ0@92TX`57Su9{c#g*|B~v*#@pXW&Gpnn6njW#Jj;N1#(TJ&QX*cFQlC)8%(~8I?Ohd6{ z7eoQEDYWQR?G4}eIBXqLWa+)o$!KKze|hy~a7;o-RZ6tmxTD-vg7?XVoFJ^3xMn(Y zmjm~wDSs^Z;4q^jCuA_+kZ^F5FHH?e!{{srXF0Y%QcE~s@Fj==7e4D`?ieSPkiLkl zEW-_wLtkek!OO39oE!dB>F14ky>+R5fE_G_zP6kQE6shyq-Y}drPMYW>!f=*e?a7s zYUU#cg6k1feqw@xHM2clt+e#dcyVFk^E$qQ16?)rq3Kb zTwfWiGtL>U*kXX;UN6^0R<5(IfA-P1(|Fk%I&b%b=T845cm@$CJ*4kf)Hc)Xi2~Xp z4}$F@?qmJyn#}FiYn|G2edvP!$`jZPHsK|{+o)*A4&0|&-O@z?6q~(y+}P?=t_ur| zo4aN7^}vV4Ukz(rymfwK5FDJn7>rq_+qJ{c*9CLG1_O8PbQ9Ke&470se{48!fUE;Y zOYguWN>RZNra#TJeA$=^pD&GV0W78xzXW&&xd@#fK1&N$^jLRHfDERNwjQ(g zo54YGuKxTu7FEmFXx#03e_R+%d93gIb-H;&pJ?Say$1ViwVFNJuY6Up3t7Be(~-l2 zyatM2x~yyRg9QEJaPOtju&w2?2uUoqW_=i5PWR#$&bV$(P+b~O|EF6oP2-TU!daRt zT1@0e!yHoFphm^W^WDe(WRQw$@!q&#I@;PSVn093`>SeI*eBf9f5#X>^8Na+{?e7J zQjujjJc9sQ6R(#fNj`z%SN$@6px&g9n|=6(RaGa-WG+@&Zc$Ohwf&IAKWI_9}rwk7T;q5$FAh_fD3lsVhv zR!=*46|j$hOcWp4l{@CuiIaQvMm>3{zJsF5)Eq0K33*k{F}lG?*dS~MyzxPu^j4>A zhtg2PHd=$^(Mz&L{f1{MVI|&)mYe5c@4~wG< z!Bw{Qk=R8kQ1mEP5M0ZUn8Smft0&D+I7XTaOv zJVrb{ei_FUCizMBV>kyKD0r!9M`G5l%dm~MmUP&vaUoDKWVNbJ%Vi1)c_tVS71y;F z-82L!Zo zF*{B=n(wcvshXL)bFnX1t=hFuJ!`3jH6AL!AKA?1j(&9bO2%>q$rIKkortRK1iW#1 zZ6wf>g--N8s$pwJ13(BME5{~SBLkRdB`Y%RgjA4ZJ{qcTzwT`9qUJl&vx^Q9y6>?w zsY*FAu_nZ0y*=~%@j4_-=f&rtw=Q&0%LLw0^p64jYgSK++P8<^glX5}1+rr)0E6)_ zxbWq)gLkOnwEMm>##JJJ#cc}z_}AkV`_wcYdY*p#l$q9F%FUNGTH)wHoW9raMa6~# zHfMf?O3VWsn|p)=;8I%a zMuUMEQ5ASZX|{=*jUz~&r0bywPl^N*!2nSOqFC(+jC=A*)GIa^JH2)zhLxd=k0WWF za&LiS+>5%i%JJD->_HPyq2lbG72Z$c@A%mcv`mrbXaY_ z%>>^oir04i*1ClMGjto_)w}Jha9X;d5tuQTAdVe_9?Cz;c!ihBEb91J5V%S5?+03q zF@FXeCOgGF`oClN^rTC0=evkc6&`v*UsdX!(vr&6q>aC_M@2WXml2O#n&-Xxn0xQ$ zT$@uz749Xsjmk{h(6-07-q)xg944;OqTdt9=CjPA!y8>Q#WDzXgQZ23VA-oRuj|s(aUtq&XKYK)IUSH zC2s|##GD5E`(Ww(+s120uRcy0Mc-tEl31i=pqV~TaIg*wll6zrUU|Dq|6{K(zr|y; z|72n+(r2i?ju|?PGUNLUZw*U9yZPd4_V=E8$Kv~i5+ara_hIB5uV&O1<2OTHkY?J;8w9_ z5YUk;K3M7_2OctyJDrMUk4PjF{`oUX=glqPLR$E@^rG3Zi+I|H_SXN+wB`7yU%O0i zV)eiXcl{TDR!bSiXleMT>b0wA9DVo-sgs{nfOVHKnw3PS%knr1ZDx;-BoEq#=7 zH$9;}t>L#6dk{?o4dDJgm9iYk&NcuK4H5_!%1Ep5?XLc9KVlu**%A}Yb5Xw2@MmTf z!)!5NG(`>)>ws&bC^!uy=*NJF1q+C-5DzwluLMR24C(_~y;4uswRky3k$Zxbf%~+M z_8W*)S{fpddvW_Rax%8KSHZ>T$EZp+e$u?8bF$}e$-UQQ3G7U43kv4(g6cdUb?iSE znc^;`;vEkL9`ifGG|k)+PaI_$N+(S(`IC&vs{0QQ{+QO^<0}cz?O1;1Q|@Ejb2$|7 zKB~Q+BM_c?jLm()z?bvr0hd_K(}6P{y!iG)CtosjL&DRWIU^9=%5gl9EZf4iYvFkFv z-`#5hzBvJh%=`>X&x^c0;}%pOUa)0u<6{Crtm<1SGaPIdZ@w8vFl$W|49&_lp0nhTAAi)elb%nPha2#v z@|8@__1j2a92Mk{i6(obxm}Ed;c+JUEkB2}Q(gDl5E=wTPpParS6c@dXa1COFpH!= zV$mISg9CQ_h+RpFGUKa8+lZrAOP`w1G0@$NQKT_lR4A1FZCGP0l+~a9gBr%KRH>uo zM;a(?19Y5w8?Y0*_2W{@*50nMO4(yxJG;2wf{vp-FdR44!dbXfA!WwPb{o;qAL2>X z(^9tnkTT>)<8>T&t9GEsMe8bS3*`uRrbdAha04>v$BiSLg4vZY@T0S!`L0s?Oc5=; z_1;_jktGGHs~rW(Sb0&Tl6gtpewE;En)yczKeu`G;%WxtFI>9k`IH0V)KD2Zk)>^B~Hu7vje!rhh zZ2-zgV8jqlNiJmUS@gJI{kY+pldQDu)z0wodMJOX;SnzNw4TLRept+sYN3J}U{#p- ze2J-52p_r-mZ@pkw;|?BuR|VYt5JOVL%Rc5d>dgG+g2_cmMS)?Y!P&(ddIvLMqkQ4 zDOIZ6Ni>oc!)f6nP4IQS0{@=;K0no&xB<#iFoXqo8gg6@yIWnm`MGhMy;v*7j=;CP zi2RuLkj6pE8%RO!Va{FAh1HgcYwoB*0$y zZ$JWTI;TVon6yKt^TIQ7kN?t&mZXz3tR4oF)3%<44o(1=LA%Tf~lnY6hV$5 z6KPW(r6Y#e=k9>CP(V6(DT)&wM>I445jo$6rHk~I6|4~W84`wQ-)o$%s#Vp{T zyb>5IFYlHwYWIPYh-k78S|dq)6@X>-UAOzwp|-w^2#u)%9u_Y1&iu;aF=84oF%t=a zRN!!eG2JKf@88omby)=2zwFboOk}bbe5`c8<*{fV`Qfsw>!Dcihm|*4V_C2<8ug&J zRIz{S6MdTZ{jd{1HuBP_TK|c_v|tiz-w<69HrnYH1V@ zrP-x(@IwJ5EmL+P%?0*{~O1Lfzqqx66Q$JM_&C&+Asw)zNh~rkeR{5P>1WGl|@gSP;N#&yob|(Q9A3vQI`QIe*X=-cTI~n{|tg*iw zQL85jS8zWITB%x_1}89XhrVscCbwx+0@Xt;u1Zc(Y05b*Th*p^}VX-ClPOQ?n& z56Z?>eG#oMQCGS9^~(X?G|s-d#+o!wDSC%uue?{(-kW`JOOcaW3?KVgmu&H#k%~G$ zN-3Xqd*iyI*%smQfGl%%Z5t?7{uDpNPE3WJ{+c68J+O__4^Fo=n1B)16Nd+kZoYJEQI*0NH*pq<@_ zPUQTFe7;*apQs>Xiq>={3~_*}w1unCh)Za`jPp>UN5*sb7>ORH^uDuaw1{1zy3iMd z{OrS}nLDjHPbyHvWnS>3!7tg(+4P>>u!f$Ae6R86;Zx#2j#tYW`%7?N*I5klJZJd2 zsFzP^u#VqD3Xxh<@<9cMjnvrQcV0}gzShD;^ph72KKRL@I`e_4!I0HzrA6kfleeBr zGQ#l_yiN;-YEceGm34O_I*tg3ykFKRio)E14^G|i%9#MgZ@Ogc@VY1J5Beo)2?(>ELX*Dy&mr2^dN`X1 zmbFcONY;lN?;R#dufoH)f_bFNYIAT>=87mUw-FQurTeCMSfE7@1!J9;RNavfw^VRf z>6rdms1zV(1Lx{WhMQ@zzB^L8fb@N|&GRHU6Xok?K8ZG-tm^_Zexf_#V_3mp&@bXN z*eP-rA0Xsq?sxDL&*-rg6@f+a?d1eh2w0mRm(6XY3BBGWZ{;m)7`O^*u|KP5O zi(4n36pyH{^f(*3gO>n#yUpU(fs;==#1fbo_MYCs-O_fN;dR)pd(|NWlYDc3IW3c-P6#~9%M~xvB43m2q=O1=25k+^d=W=aa%E)TT^;66|JYb( zr=1X1kh06@iaB9sD7}+{n}r1d_EK}pkm{V=q+qadaP)+U0{R@DUlU$vW2Rzph}xJT?hoM) zx-Xc}(X+F|SmSo6tTKtBnCK_F`Z%E01k1(pa*|R^ zU5jE%|GWB8?9#KW#4By?TjqnLnT54ftQMVSX=mXh`;X-G?mQJDU4~rF|K}c4N?qEm z4x1EI5U7vmdk)nFZJYh$r&_GjGD&nq6*LMnI`0br}s?ycMqU^#6g~gc%;Qz zw=o#I4Bz_ktgTl9%g4%)nsgd$uUGPpjM(OS$LPxNt*ON8O%OU}bjY{({gLtte~_T# zPkBi9yrkj_kBA0E`_s^at&(^6PR*4L$&G5Ij?aUt!S2fs!jzUIQkBr5L zMnuEBq_91!)QakBzAaXhz}X3DL8n4A5BZtSZ{rnI)2NA;Rh19p!k@N`9ez1SB1*ZN zR4S_tt;{+%Z6Q(Qvy=X$>tVk(4L6AY+KMO$!=^6YPp_1PCe zP`-?o8gTPw2(c!0r|}H?xz||&TWBhJjLrcUy%T;$8(ZquIuahbSFhKbd&BNbjyr7s<@^>9|{8`VyYoMt1nC zD7I-AoJ+5gbP6Dodi{jU5}h_>)|yN!4Fx?*M~EoXT9z~osb|op=)}f(;(t&O7**&^ zfy@&^D}^rlNFdrSw5u_ZJ}yZ1(tIZ?=Is8Vtvea&+0LRHIuJSl8UTOK9WYOH-*o?Z zM%9Bf0^#UMeGBwIxP)d7@vS20D~UoGH*rbx($nxdNu z5!!LP4|B%#poESPTGcPvd1am)*Dp2{+u0jwaOogJBd&9G$hUhy@w)Pg^y>Ou$1PCW zxQ|v-JCDj2GI~feZhAqMw&O?VsYcWLI#xh<=p)PJ_kVwNb6Se^_`hCiJH~&Fpy~Yq zG=5fzz5`_R#b3MpX*Y#yxANiz{q@u3J5mfZHz|_Jy^NOeu7h?S9#?PTMN=iCD)$~p-j=eZ&NWS9i(S0I0$2}q*+UcSA_A!62 zigwx=A)FY+(I_&5YV@&4_OF9p(mbpf#qnMqTE%bOoR)}1BC=|~j)+wvR&~V*P?)FD z5khW~(P-qOd1i-%4cmr)Ra^LwfmXa_F23__UvF{)G9{EB%Eoz-XF@Q)>XndO|3L+Y7h|+ z!=247vzvh>jV&60)nRV-gY7e8HL;--4XL4mvw^Uk`L+;wV^P1UcLWt<_GZNqAl@D6 zR5<5cmOMT6haKG3Ug2egpTQa0GYLHsdBZQCq`oAF>g%#U=EE~9gL$@;P&^Vplg6Sr zg8Y+D9;TkbX0_pPxZ385SYJ#>G&25~`GzGw{WtA~y|Hj&X)b+jObVGGvIkK9}e0AOWPv)P}T%yMlrYWva@`)(h zbYZAlb|c1!vmbPcqRWKWo=zmp+(k(+FhU|ekPLOrHG|%8u-21AIEJNS8$lxx`GQj- zi~gruN-0Kup{rzsToNOesE8hE980TeHDY}W_B;~EhtP#(?<-9AH)~X4fZ;BO*2D?C zwW)XvappwwnRaQslY|t6d8A)kI8|;)3$mez7ksy!y1L;A1Cr1Hi^xTD>za0cHfNxe zY+I1g9F60d5)m_8Ia}2kFU`cAxVE|yqvo$>+UO`86XZ1E(?LC5p?KLv`rW%mM#nj; zLT?@EJG@^Y4RQN{-_V+iKq)=MI{uJvz(f+R_Jn0EB zIQ3_#Vs++)5`;NAy8<~*2c;|{b2tYRB&eaEb)MiOA15auQFo|8zaWLyP3`&Xu^VHzIvePnKVsS zmKcrl)DZ6pai-wt_`jvb>Ct4W$*hEfbL(ZuEYIkPFQ;u&YD{8`-w<>6 z#~6)h^j5bzuU&J}1$aG^w%7eJ(A48>+|JcGoUI>!C~b-5k#u_hYhX3g5^srQqCqy& zsR)03lcKAYJf-xeKVg}AX;v%EV@{D+tW&7!O!jNVfLw|@`ciPBbyAh9#q>1s$v0*K znY5*?1=`s)Fl}KA$NCWip(tc$Jl?>(l`iXVrB$Tc#C$f;3LHJxXWem~^g@kO)z6&5 zHO~sZ%e#s2m?zkqU0GE!pQ~grS6@3EHW3rb)9s7#2wpqtJ3qXLna|FoScy$7bxRTG z16w|ZjMC~@;}Tea*H?8qSDHs%Gu#rdmD)4J9PJ-giMb2S`RJu&n!!>U1GYKp_a#o4_M#~{zc{21ok(I!^?WCbS;RfE znMAF!RJG&RXT9ioD#P!YlwqV7jX=TA@#lJPa^||rfzHH9aL>bKH*uWZ@El86h{FM4 z!QBB|TeBcyPPX7nr*MN(=lgrf4<#R$JFxDF|})`xHtXk`$Y1Mweu6{I$0G z^jxk*;0>2}#-5Va?by^30cY!Q=4Xxkh(mmjv1DE7QJ@548=qXm4r&KUNG#?!LPM?V z4HFCvZ!>8c589h!Prax{*+OJG7+ZON4)j4F78sxp-@@RfWD;G|qlcN2HI#-heNf-Y z{7i&jJMX;zc+N1~dIvjs=^~x-_M-?Bqk8xez_#JEDl7Il6k$dao+Xk2pPZIYt!>A@ zY5X_zi@4MYJu(M(S2{($@5gK)!)`Eoht$7l^E~)NT`bZs>rNaWNp(Nu(LpOXfoHgt zTKqP*pDM=iBO&mJ;A?Pemv9r*)x9R<`GY4}WvQQjAT~}R`CDZRm52(A>11v>>})nD zfTWDit`dGz=O+no*ESNRM-kK8-3hfYLb{Di5o-4_Wvel^+{s<5XBIu&=f{Ct@&fv# z{IeNP6;;V!ZjEYURM^IetXosj1yPJiYMf@i^<|4Q)^!YOOS@=qMC`e zpL8FAyz6}92}K>w>z&z_A&`vqL9EVI9zy&0xjmI9oSPh!jG`+7ok_V1j_V;WUtJ?8 zRf?8n`YAtK03oA`mn=pI*uz4|R|&~JDf`Q?piinC%}S~)5W(MLX)qPhJu9+*|Mosl zn#xlvP+VpBOEqj3bq?P#^eo9ZbAHkVVi(mEod+_QO`@DY7`$305qIY>d)4E>lSs|) zFkH%tfZ@r<5}Ioyrbvmrailxv3C}1lY6`o?*!Zu*m`{_8&m=@UVA5`e2lNoaj+A(f zkRjJRxD~fK*lE--yK$eP^EqOrp;fqGDhsA*)XZKKMNM)RE&Uxe%zoV|~E29AlD6pOM@mxz4RYnMr7rQ_;)m z7P84_gTHlUP@=2?PV@|pA##VPTm)8SJLT!*9}~Qt{g<<KuAZyQPxS6efYmq6V9I( zGR0O-bFBljyE`Ac+awFqX;&z3Bgf)s_AEL+c`H@Hd5RTM*H~PcWSaS9Zp>{daU}?L@_~V8Jc~_ zu6Sq&pw9C(&8_l=*O*SvwM>BUZ-^bk}&YtrMm7D4%)S0Iy3X9HA$)bUyC(?eR3HINwmt z5yQ6;W;+3vHaH@cX{oat)KcVPMRi+&Xa27^iN45@Q1&GzxuwXVoR-;Tt;wWMr+!h( zJ55d|VDbXhD&Kxw!#lyuwK_J{ww>y8%=Ka$QTYp5-nF~I&d^qLf zCyrGzmyMXVT`RHV2~5NS%%)Z~S?w{uv^^*y#31>bHaFWbn~8r9)$wC+1OsE|S^Y4O zYVDECMVCScH#{?9UY^w%zY6z0;CIy+$s892xFCqt|Js>yw6wABrWSvjW$U+9GcE>o zQJ2Tw;J#>=Z5=L;4x<6dk)4h%`mi)JqfZe>Pv4L@Lz0BdZ@`$4i!afpqd4VdP)s|- zk3U|rvtGE(TF(@%ZR7sOb2{0!_1+}jr1m0Gn>W81lW)YIg3vTky;rJG#y3h-Y~sFX>f1t>^=wR6H>?>@s2I;f|I6i>aAGOR zbi5#~-y+qWl}+GtenW?8m-E5d3L1R1miPyJpx)cWjIfdK0(Pal8j0 zjPnp93&_L7h0PD}aq+?AZS*CiQT~XR;WGQNAMH?Lg7%sl-!)5x2>ofYV*on#UXlK3 zx|c3<;Fs~+{lE>#wOA6cbXp<0Yys&9zu6{SO^HeDe|qT|$=g)wu+hU;%o4?ewmcy8 zNTE?!^a?-tL!1zu_;$YABgRhihmvoxd}Y^8z;df`P3J$yic`I{ENS;*6ompcO}jgX z!K*EvAH$Y2D-ch)%3K&~{vX`NHQDi`vDlCK*FmiJt{!1Y1kZy&$xmK`o?IoXoi-`j zY9T?Ho7tOm`|8WQaUGj?4$goZL~@{k9OEjQMWWMBEurG|s6Y4tcwZRC z7_$Q^IG`9olC$K-hyQ#`<7X?qK!d!*&yE2aEu>ZyXt|$4HKy*ST=q=X?&W}Sp}zDy z_mOq^HD7uYx}2;!qs*oXM`&83Mqo*e2^zV1F_tjz!GHY8Kc-j(cPLdPr3R>u+wl%t zSY|+W6>an1Qg=ElyKuBbemMJXu}rK)ABJ-h+o1k~5a)_%R;z(T6|LKNm${24=ntp)FN`9AyXTmMxNX(Mc0*CO+3jf|t;|e;UKG#m{B>_5{2M*wb*~g4 z41L|xRR(ziBE>)Uc)z>O1_gOuVEzrEzFu!|@4t!+`(6G!%WmT=`zp?&kWq-1!FmKjlNv|CJ9p2@)+tUI0HpK=}VFBVzoY zULgE*N1Gq8>G(E3egdVb#a5+NH&&r8P1J;SRu z&TaC(eP14I&D>mv#>80LnJ@kp>CR((cP8mOv;G;4+RzV|&RFe2|56wj^^PKPGc-4DDy7ZW_)SBxF#@s!EiHPeU6y%|@5p;I zOYpZZE3`g``L|y3NDSTszt!&9w|fTs|0UH2`{I65TOg;&wI zVZg@7RXrvudUtAUWu$}+PdE72+b74{Cl_In!u-f!MF9M<#-dJX0~L(0z3gm|Mc4X} zwDjgI6kKePn@wN@_#zL@52vroB1PSZ-b{zsb3Zj2K>r3-UWVbcf`VpF=&ke&CK1sJ zm0D#Kkyy7JxDZz1N7cAdxIZ6%4Ykq{vh2=uq_t*8WG3W;6ntQrO|Ew*^Z(q6)qV@i zSGN4_`2w&`Y>*`t)Jq+6iEb}ALcco?6}^_+M!R{N3oUkdS`u3`$2?#BR%-GEj_eb{ zs+ZCKa+1-K)diH&?jo>&y$_9)1pUV(#ru0$%|rf^6C^y_Vw#fKY1*NV`@lLXGyS!L z=g5TqH4WoGjz~1quEdHA#ad$tQWF8GfEfJ%qluUG_6ha>%JpPe<z0W)ftG95D9h~&FRz?+RI)ONDevUN%XJzuF<}b061iaXin{=* zu%Mjr8HCI+1^$uw%)(4?MTQBl#9CtGFG(@*r%50LCE{d2G8<}eKi{2YL})ASPFU0U z&xnOG7Ar&(BL&l2jIwkGywND})@%_H<5@KvqUgSDl0EoT^|NXXj7;`()cglF&8>`; zR52GDLc6UJ)vc0tEK3x){v7MGAvQpP&k$lBrW)+m486(OKh7V&FGmKY9q5B;()QD# zl)DvjN_Qxnv3L?bD&uT<-fK)i_d!+HVA<)wel#YOPVx?=6jTTi`^tH@M3a_VFTN-o{1=f@`mo3H z6|3mScnq~us_&*L8RH&x*aem6zIREvNv<~`!LMK#CQk1CKsocOS&6-#Pb-JB{<+P6 z^Nw_r^juR2)+*cKptg5zX}4fHm`&j6@A^@+;H~H)THc{yRT=cC%Bf3V7p!=q!_W8c>B27IrZ;&@$NjKonrs=6vgfQDnJ}+ zOQ!Q90*=xeMoPH?n$XUgON1FW1+iTNBXN_XT7>45^7AId52AWH-)qwQQCfU~v^1C+@c?!0vK`(>f zY%PA)rQG%YV0flRmuArw&>6LVw&Lqhdw&gn>mxC&-*N+imM_AT*uIfg9}aN+Z?l3Y4S*^v!W{b)1hu{B%~mSzRRAB?rNU{dU-j?eE6;qf2Jj zKm=XUiq7%v&wbR{0vz(>K-h{l>fA~yF~N?e3+W8%ikLDi&fHR29~Cfts8VIHjugQd zqEcqn1@g$0Ft{aOA`>|IN)q+L4u2o(u!%T<0C%494 z_>QGyE}3BJ-kYrV@Ke>bA#oPh$HSmRz|l*f9slnRG30Hhz1N6lCbqcLA0u{zMMOI7 zgtYk}!|W_#GP4o`OV0z5jl_^`Led4Fw7OksE`j|~fCZE2>8m%Q0$vRgp(FDA z=_TJnO~20_uc(XymLT7W(epm+la^u|QNT%eVCkezQ_jiimajF&h88)J6xf+q$YXJP z=G0Ew|2FqB)-&q_uQU&4w$WhAtSNg6SK(6Vm!IWQ)#llOm|!S+9T#MxP&To(@8Lap zOhu9~9gqE3la6z}u>7dA27<@p?=IpE`&9fhlW32bZcD9%8Qvc=XlWiAuC>NCxK2%_ z|Hz}h(_|xd#z}T^*rDR!jc6=Rsb1uOnB3xEK&?3(*n~5rm-QUeTlB4MCh;srPg;jH zM<@PMy#ZzDW_P50MKk8eBYACNMEOwoWWL*|6bxXBw@QapwX2vW17uVh3UrslB4@SU z%s!_TS8L_Pp}U}ntJxxoq^@-DulHY~%RvNn;`;)DrHy@yEhjt=5dA$u3`(t5Ba$}a zSYuprhG9~*MlVdW4iT70gT`H>tzTU<9_&2<qTBTMJfV&sfM#q$%2@K3xr;H^g>QRVhPytuV@CZqSb_O+%t{QW;|+80@QwU9-V{5zV)+<=P4Bc52CsN|d_Ev#EtgKvNTIaSgzt zKLng<&p&r@JUV21jDZwYTzqyER+Twgz+xWDp!;DATaOQsA&{uI;Qhyyyj{ttr%#!C zdmAXMYd!J150(Q9VL0T{GE<@gWN{*&$wgdl8?d8l%1%^f(S)*`P2%l^%;uowqFz2h zi~}TC6kt>WGecI;EBEFd_gYZ(mzi zs50C}&xE3zhf+lEUgT_iAPg7DdNUf#gqGN1$4W)?XEK4GPqoLF`)B&Hq@rdNM(y#A z+`SUR2+^-yWWn<{T>m-sMnPgqpBP)N(j*MDsZHooogRJ(bx^BiODpxHi-tpaVsA#; z;=k~<^S6FO3${}X2`MPL9A`4DnLj~Hd~`!z8FZfslFeE)ANnA62hh>V!Agk*e8z5S z5+wgt@X>*}K{a9Rl!GYioSAcN7&iD68yFUi1q;w(X2xRc6V-(Sk#>n)V?h`CupSJ9 zg(PegKBzH$&lPz>sEr293;8v_z>~Ox&D!$BV=}Z8g+nTsaIS4gA9}xvYhu+C`pqig zy)}NqZH!k3#9!C7mA=1Mrg1eQu%Tkg1NraGBya!~$l6tPeHAmyM{a)v%SjCUqqMU> zeEWV}X%yj9vH7Y=uJ1letp(>kWnn}#;5WQwd#h3{DsM2kV~y8&4q5o8kmZfeedV|= zvBRHR4w^3nY$PE6@?JB}oP$RfY;gbhwbr-jQ1!3A`^Rw&6k#)kNGPY`fxmJ6)SlFC z+?E91CHC;qX?d$rf8tJrl>e__+ZQG+mpx$Qw@CK36?h5c5j_PE&n_5kU%T3 z?wtZQjp6--H%Llk!&qg0315=#@D{Y1@s-$)-UTGYa5 z_#r){k-!mmU312~Rhf|&uS68bVt^r(`mVXU0mlY&)9+kEbc}dPzn7E1)7>duV7Ee7 ze<0bPyd13!2I-yo0lt0nr%>MmW;g`ISeV>Up5=~tkKbU!*W((OhE0G~$R}xP+6Q3Y z{)|gL$d;6e>D51)VoUaGY(`>g2xN6Gw(8Hs)meL*Zwb>_*zMGNx?PMElLdyD1-*s0 z)RNLOjdd;SaZ;gsQM*^G22zg~(IJ?8Di?NxQD^V`OgMqKky#9F&#VlIYwuxS)uf#} zm9N9bQ|_TBs-y8s#*3a?s>pNlf2fuf=cP`(H`nQjHmB^WJJ=O^=l{afgRC-9)Cr>HVRPQBl) zM0p|8W&#p31N|GP%7fubSJzA=3+QKe3Cbm%(!;FiGSsPsTvQVg#NZ?ZxZnj>=jVj~ zpPf;`swD@7iv!7WW$yj>yLd}R1qH+MeP#&fAR{8>yD*Vk6W_Z#{L;{|_@~~Rh`BJy zM&}NWjxTL>o*sYFZz}%y{x}wOZ$&5unZ0zpu>6mU;|4_^qECWbft=mzf4huH z2YR{QQQdq9y7_nop)78mdW3Hq7ja$=bR=NZzHK%#|MO+F51xg|^wH3}!;(cO)(e?G zWv4Ah>p!5sgtQ}w{8-6LBAYC=DiricS@L9E zYJa(GQ=38fAK|K{0ZOBNnXX=|7>a zBv1Cy2Ie~{r(J^Gzy8b#s1u_ zvN#U7Eo34Z&%f@b$sCz0y848xCEG5=1~cr^_gX{?UnMT&soGl9WZ&@Y`Agm%fvPN6 zlyNcH{6z=)pYs3klsiX~zQcra`fNy|^GId#BLSgk+Aq9h6B14;ssEr|`b&F1gJ_U(5_n}%SGrWoj1iK`)5}z#{l5^m_S#*Y~-Nhn#l7&0s$UIS^|4z}Eoj>xa zo^wD=kjt&exl&flDAYv})aTR>Jg^lebm)B;_)~%4U;kaR8xaltflMU0XL;Mww@UOe znwD2DEZQ@z>23PUxxY-RZR>Z^8CthXxs&BcvZC?=icEMLLc)UyC>A!jA&Kk7MZIw1 z_!*QU(a&rwO?-*v>+dpTCkmN4pueao$Q6Z5j5%FBd9{{Uq01qjD>KB+P?D$~yoo(TzRrmC2Th9CG!49)k}@CrD>aXq^{YggtU3~g z-Ss^~h)25*XBPb|=?BA)NRu>Pon~4Z@xQYzfXS3=lB!q%+9;H-dTf%ec3n-UXxMo~?uQi>xSNlsjFOv=mp(b491#zu zu`Sqek0!SsbmWfkV1iN;wZl?QAFZyCTzZNhL~n=)3z&3ZrA?Y8BK%i2s+J|fXp2jw zGYPX+mf2E9S;%eLxPgNfo4$OuLW<0IQM`f4rayFSJO#87KBERYWV5zfpI9S=eLAMI zK#HVpA(-(_Dp_1BD#y(C{SiS65j}COm&zbRdEwx^8q${N{tD!O!mcRpldzncP-v2= za;pp`0PH?L{nhbywzf03?v*jO@xLqdd2f97cnt~e$8+PQ;6jXS`8Y%AR#oiCrpbaE z{%A#LoX1%&984r|l`thADw7#KtwJ7X{e>_MjfS+9#y4pn%;`E9PD=F;qD3azqsWdu z*sS(mA=w^pM|f|<)r#^(gTt&%z-(b=GHenJ2fVRQyNwW&q^%pn$1;pDK6Rr!FsONG z<&~gukpj0tt!m+3guvL1G1HNNqipl)UPI6Ih~-r?$|rF6UtFD2aHhf5g=5>cZENCW zV%xTzd`Tw8#I|kQwr$(iKj++?|FYk%>WjC!s(0_zYdx099{ofCDTW3UoI6Sn%+L=2 z$VRSM49~G01Er$pX$r{A1iy0EbjI2&I9rw>IR7iwqIBA#hIhk_M4ON|h4TqJ^#)|z zkY_H1Yw3DWp}O^E8aP(k*uETg1jDHB_IlCR^b)a4Oeh_C>tOY|tI;(_zF1uBGEuAh zWj^FQ_vJkfdwU!9F!Y0$)wnPl$q{$}pP{xkfn?B_dtUuRQrHb_(ewM8?mBnx{8-Bn zwADbA(|ut2NXL;jk;?AG0q5#xgctHj-T zL2xNL^&0evFg&(At?C<2(2dF2cF2@u3Pvkd9;Qork${4uz?ghB#*Ek$i5 z)L)V`ZTVq?NMPDHJr%DDV@EflMIxKCeNC{OunQxnj7_z|d@IVl@TVo^K1_c?Mi66y4|8^PB@EU4x=p?=u0lWjbdY1y8_^IFBjuA$qcmwPzd zH^*z!1ycI=1%qS`ym4RXccB+u$*DX`?1U74`8V_rGFaBS_?CQO>=$d~|G)oQh$;Uh zY{zl{Je?1k{2A!l+VzBWEq?`|JZDr?BY?zBBg9|HPyT;vj z?C{8h;?St)L}cAm!$WQSiQZSD#Sg5q0V@QJ!#!JWqff0X=eilns zSB@E!pC0e;QBk@B&oVnMHUs5LJYO_r(>?&eopV*QR+XH(U?$JCh%H~`)Mwk1@stx@ zOt##YbrP_v>g%UShCrjB<3|J$rOb{_t`nXXkTersgN1k;nM{_-PH>FgV73cxzhhXgC`% zFF3ZRt(W}rZzbnTLd;!ZSSL8F5P)x;dysQA*4j19wnu@M37)aPw<}7h9I~@vUBHc-L01^ zsoj#k1~NeP8wAYr3;5}qsI@Y9#bF>=hua=uy(jKi)p`~m?qX?aQZyBR!wC>Yy;*+w z6^P@^9~9bZw|Ep2H5|Q{3dbI;p~`yNE-NqJPSQL1qne{C-X5^5m7P{ZPp@^{>QKbRHm~!UY_&n&b7jMha&uqr$I?2N*ri zF3AV&1x_ouD64M2lnwZ^gq;neRI4eN*;902m;S_gz*j)*0oX@J7#6TN(dJ@9IL>Xa zw|OryZ7sWt%F5#QW4PlPsh_Lb(o(9if1#DU=ebYM+x5%vE4*EvLO1J`p-A%;U!9jpmuhN3g&C_tTcqp-7y2+3?wE7QMj zqW_EiQ1+x_Sj#P%ogdw8?igN|4R6IK_05ZyWT21I4AieRAwQ7>K=_tK^vIht0!&z+ zuH7Z{C*esLZbEVa`3qQz(NaVZ z_6f2>vrphD_C@T8Cy~BmA~!~-%|G0fkbvq^xQW7owA9^*_obQ{G2P`M-%zt~2-S27 z;cxBFC+v64l12_XU?tSbkO(x*(1 zEtLq(2sLbqst$ZmEpZjXh*$a&s1B7}5BQEox)WmGHPHifFoWuj9%)BB{Ko&4LHZJ; z4wwAde>D>2L+DZ>9Fzzle^8rf``>K9tAI2fh$9yHUwjIovEsjI?C@Zz4Of~S(Ju+LSOy=?6nUAoH=|4NCXYtk74L;=S2FbdbYz^ zi!Nm|?<#@KW#54`xmJPLn2Z+C&EZ$en7#8e^2`FUt&W*Qj8BkHh`6xanR<~lZYQ#G z6(YBTf=6)!fomuyz@rkW(HH*v1OMq0b0 z!)dVq7tk7?##VR_ITuv(X?_#n6p@i45A(PSD8j1_VlTOWy(yaWiz*gS5UX% zxT9cxd2%XL#e@UPrtuGFv-Fc?b62M>$fkA%!sZQLN-qT_8+&(mWWN6WeZBVsM-vNf z71E#pyys83Jnu*#n=a)+XI^)24gH2?B6c$h$hxTHn_YnRM!myuG1|`XF@qoKKk9>L zLPf_3Hu)5p*1NN&26t?zAgU*(G@Ky)YsUl`D@K<3K^p;1NtIh>c+yd&0P?LD{F3g# zm4^gu+OGu8l95|Ia-iMUU+ewP0gTy^@tV8a_-<63TTFkNAd5ufSk~imm2N6b=_-E) zVC!3LL5=eD-mvqMHh+}AL`S?sOfe3^_%rco{k)^TXr7I&67gX**ao=--|pn(VeavG zSyFJRcd@7$s4{}^B7*oInu|>{Yvn&csIiciGDl{=tb&x z$NxQL)w;UEKxYhM?4NWtBl+~PR+;{5Q6IUrvz+M=&aq}=_SKY5Sg+su^b2oCQ-|CI zL!Fxk)=Z6C4RKL0ND*^HeEZU*q`#jtjXK$R%5&FD`W5ju6IAF;3A{Jz4n1WO0qh>F z209g`07BnU>vuh!5Bc7fgyuFMps8r0;fxD|-A1;Orb^{(`z`{FT5n7{KhZSg3+WjG zjN^C5!$}ass{mGj(1eDU(G*V2+Y5w52+QKQ(FlGW%qb$R6rvD6xvx@RyrQ{6X_0fbDyJ}QE@g-)Iu*7<3?9FeIz}4=0|^UxmOaULTrVMI zkAd@4EVUIPNv60CXcVXETm{K8hhNRs#9Oa%ozL+hnh>19G9U1yh1(vg!vZtQ2g1X= z6SS0#jLDDCD(?e76$WnraZvF+$Z$6C;6Pnjk!!9^MYM%V8||sqG=*8P*(loWk~=ZY z*@GU#vg+!_!%Iu8k7cuwg;gjk&<+1WiLRS6u=N6Mn2U7EnyC$#M~*}v1lBbVI!g`L z38pI}g5O<;&9zoViPqMSBk9aHz+fp^t#+p?HzQZ}(i!!_HR1jK!Pu2tzr}XoCKfbT zSiw;H(#7j=U8odcC_V7Thr76i)5!2mh@0<_jCs&YHV);oVg4W!YGN@E`1K2j#ucW} zFxwtU5|cIZuuI5XY$&yAn&v?ZSKmyiOM@rpLcauTY=SwvCKy!PHM6M~^E*=8^~?J+ z$}q0DY>j#W3FT@6U@d-(@Tn?Vinwr#SM;^iPA#ckidwO)-O{{QiY07H)!lA{Z{vuh zvRlph6+XE@lye{ApoG#$dLm0zpz83yO@wJZGiIf??OI%(I*ch~-x~@^n6}j1y@ril zP@%M;gRk+lB13HlM|6|+cv+mf@*)+jluRHO6kaU6Y*+&Tu(}{rAre0tO5Xj+heKLE z;&;K$#u8pj?$;;o$eGLVvu_}mns(UKm6jqFa|NPnstM13oW<71cQv1@-xR~_3(FD; zJ_b8a=(eC=3SZ3*>5(; za(I=6sMgbJA-=)&Q_C^ltAo&fjEayt^HO+*3j#TF)KK!Sx*QGSK{ciMQH}D~Pw+R5 zT=dGTg1KQTH7ed5a#nq(JDOoJ(wvQ8{BH;ShiY%C&p|qnG70gvukV{5&4FK21Sad4 zHY)gW0J-h^=>ma_&RTrD1q_(Y^oyEYmE4;jrCk%ZAJkf?t)1*T4Nzc9?@2xtd+%c7 zFWtC2uF#iYjg*VvPDE1oR@=LP_g39DBvBUZc>B>X$^ z0VB1k8y-|F(3bVqZwBS8WBT#7OA1r^l@*oAcz;vi?nmY``Noa8NfC{8mVvei@Vr^D|2qzz^Q}9vGls{#P-ng0< zM@f?mcN$=JmqREm@QTLW2!GOBS2R{d%g!0X2H$Ch?0`KCt48;;P526FS5r=0B00`G zH&a;7&J9m)1!ledywMEr6=GqL?w%p@R-!tnX#CpVb^D#3I`AfzXw+iZEXm=N0TCKi z+XUFi2DB$~hNGAG5Of~A1P(i%C$vo|&Ty6V#V>dl70>NU&<-|bx6vq8mm&khIF8y z#BMaIEb^h&G=q63pA8f9DpX9+TnlL8WGKx-3niVO!FQ?s8}qL=j^HtSfTS8jIWsiA zU&{(A&FCbOuk;~V89#p0*Y-;H~A4TI0 zg^6^E!>o4L4#@%=rHE^P0noSnIXC?dq2N*xSX4tUeB8-Qbkj~>HxGF0OWMlTf zk46^6xI=LqrH*Yt0k(M*-R6tz25`2Phi?S}0ds zE4dtUsHr*D@WQXC&Q!?z?i$zye5^gt*5fx>~Jub z%w-`&+8BNsa9U(bLaLG<8w4LTr6wauEdp9IMmMwY1|l~m@(6R>jj^T=9+2Vw4rF-P zc!@-#3d^NBXso2o92g5oY$ev*qdg%?m#e6V@p<8w1vL2JsEpBjYH8fhLBcl&ktmLc zRqia4Z;wp?z@J#{CWe-)@Cw(L-3JH)@isXDJCdoF6gIWHWKhS!LHjTL*KpR}@A*>6 z^A;d;rUAC1m*M&Sg8h^}HTxVbJoO_#L9P92U|nO+p)X`>IOqMHKNpf0QV7PhC@&M2 zHc;jh^fNuB7d93IUacv%vhsKy7chnMJ>*!LIu>@006hrVE?@|>sl(I7FN?rEgh=6Z zgHaTnelO7zWe~=R#jp7XS>V*3`Wxg({Y(-|>K(LX{WV~0F%sg7e}5&| zD5;1GfQshS>ZidA0pTg*-Lp$INK{qTHT0)eUz{4+f0MNydedGFChg|N|Mw>}oe3vb z5V`~9J;V|W=;>g!=Qc&9=eC{uvq{|}VpEw@l7jRGoE(b(9DMw z+%`jI0aPP-C-;t$KA@I@4m#; zTtV_tovq@y7G!Y@!up#`S9I2?pPI z083tt;&Whwt#{dIVS?N`>~!;0GfA}OMTf>Z=T^X-vv0?Xe%zg3BdYP3>9fg&SG6tQ zr1|wyUiG%;$Td$top=3KSOr{^rgeSCfKV~bhbO4U@I%h_+nA2n6F_ViImA_0;=uYT zIKwgeIqIYCjZ9SWF_N)BMXRL^GIEy~u(4|14L9SJ(vGNnL%dQc;%oVl_te7TdBV`* z5?S}~%1jzk*Ht&EC>r`XFL^9%XfT48ApI-w=qGuW%gmevf5R)eLZ#Krbd;;k2pbaZ zX8O*2(CreHPjnEJn@YZIuRZxl$rwf~Y_}f$?T7;IkI_Hh9k(!-F@kK$wZ(^OMKAUl+2fdbSth$3N;&c=r_=Q2CJiNu#b@j;HGE zCc|&27*m4og5)d_{WrVd4`h(@u+`a}+h4-v$J}1cTU`dVMqpp`1^a(Jp8)GW#uSXd z;zFS#_%`i`$BUd#q_|sh|DBZ%0KEDaNZMXLG6Yx+e_Ov}n~0jq^S`^~dY+<2Z4=q? z+GZcvHGSPT#%x}&DPD_mXNlUjbN#yJ>~0`j$^v#sW2MD6>p>=_^Fsc7%+VBhi`*~y z;NUypBM;L;SzHfo$b$r_<1uSTLgJU*3%SS%oY=c4^0bIoh%WsdvXF2E0KU=QmtAzm zUc3ROwTKacPn4<@Ja0PMSEG_Xo?Dnf68TgWf_%qbW`(2}+fmI5E?9o)+S!83>JSVK z-~pN~9KHGNc_L4BhCWhpoYm1l6HBR@O@qxe$BoIGk-65r1nOZ@Ju14Q5?&dsXup#g!a-9 zTQ%Wt4U@>xtTSe5qfotq?~?O=8_EPgLQhc-M??}nSZf-If08#=0R~UmjXa?Qp+@Ag z_qz=~wj1*xw_DMY`U@*d=~NR}j^3iqhWt7~>-&+tiWpaS#3tUNRzx$n#MY z_7P%?OgT2k;eP$#w^{uSG^AkIz(SMOW7?Hiy8rTy0Sh}Y6kLRzjWfX+<)nu-x#sGA z6XNg@#F;!xyHH4j4j8?ATTt7rt}Hdp+J)2s{wspLG+T`NiC1f_HN)j;AQz*N$~)Dh zn35v$aJwAogTcY+1l+RMYl+WCe)YrVpPrJizOTIgOfcej!m94XBIaYlq>uNKe888k z5=`~*0zQ(6><)X&%Q>z>N zk8Ka!4ZuG0=1jWV4JjfA+^i(!TT90g@7fWGiVv3c;w9LlliCH)#EQ^q%C-F@8h(pA z7aSNY7Avbx!lcV>Ek&wb);gpqeV+5_xp*2}UW-x&0s^h#rotKieBt|?x+b&N@Pt0# zomtIyr2Px}Pcp@{gK}zbb&LYX&0>>IyQJ4S|CoWrJC32jhs{9!+6A&;I#Cpf|7LGLeL=}0rm zWGncs`%;yNd{?Jq$Wu3`ra4aKfe9DCBG0Y@qs>hZp4G}vN{I3tni> zeW&{0j?fF54p10Bjmq(q70#@Ojgl-5E=Z2wVKciQFj(Fuk&$cqiJfiN@}&`PS=1Qk z5#%jV9g)OQ77y|$?=dSLb=!p0L+EIjQ+6-xS&C(%ZDh6aAv>zv#F)msF|6R^90Yo= z0`~b0dJS@ok<4cW$gvvbwe47S+J;GhIg=YP9ee}RgLwMorbnsYE|tM(7x|{k&oZ6( z6QhhGauZopd$*?qFUAGK@N5X7D8=CA=P<9mZ_QFfmKkGu8HD8qgxI3dkoL7EPJ)*2 zxlhVw+0<%Vv)`GA{skbY8~H%}*2JkG1!%kNnXkS9H1G4stZ4E@1OPrDyWm`?)3`yGXcmp84AWAHHh_v<_qcK zj1QQb66}-9?DY*^xpiB8qr#*4mhXA+#JeS~Xj_71DlE&-(XH!$Zgr^6^G9`b9g1NDfAXl{90lWTd~;r}@CST_= z%s1g}F%WhPe;4K=npJ%a%Ok^R@j znDADE0{|6M9sxlCZ)Z`Auqd{Qq2MO6tu0t37F+oKn1(KD+-MBF>t8#$x$fw=+0TKy zf#`c#gR%?UfS&Bul^q5(U^qd<1f34;t95GZ5=X6Ot@{-n@-UYOtc{!C#>E)XPs_lU zROP{RV%;FM?$ZW16QeNV9}#riqQ+pY6J9AQ0Ki-Rh<_O#1u;@Fqe75sT<$8`h!qMe zpb(szl{e3RLQT1qJe4i92K7<-s}-!#iGUv%u$*)2(}rF57O2%{nbC+=8Mit4bOZKx z5RVTufy`2jQm}nEHYw%}F-k%tLB66!)hy`bPeF`tfg?1;%WqN8VNhw$EYUPuzjeC* z{)0#H3TGz9Hn4iQr%XVl)D4C${a&>X*F(&n##}cU>{zb+p$?aDxqY+KG{#qJncF(n z4E)+4=kXhaq;m1M?K0e`nw0SRSv|g$8sNFf zDr>7rZHAguM6hpC!TzlO&YYi8V+6;-{T^N#bXgp~rjTB=55y4H_*dwr9cn7OaMNb3 zsNp>vKNh25iPLP@Aq5||tJKN zzO897)jvzk+mGZVHp~ldg1*}|Dg-X2nLVQ=Dk^VBZ{YvCVHMs7w-YMsrJ;|{>wD1+ z%=-xve(D)vHj>~mr%hq2{i+hU8Ug{&&o|~HfIlHuy&DG!sIjA2#S8Tn!68e5fArBP z+#qtW;kRW)c!;7r`=$)@bRvLZkA82I{pxVDRF5K_HxMdVaJy_)W(Hf%fAzM9>Q!s_ zl0RLiFU5-5`3Q=J-h+SwR)dr4zMc1H24!e}_8elGLisLoDE6V`t-|8J)7S@GvbRss zLcV?_4swBg*dTc+{{~z(kMN5fJ*Nye-amsX*MfwhRY;GSLvs36ljODF7IIuc zF-FPWJ$^#TE1J_P7WT+%cKm+IU{V$(7q~pCN2iZ zJy~o=aGCBq)7kU)tz2n;ufp->j|%W!aUZajD-l=S?`=6!k`*qUdyCuhTG+?K8{B-k z<=%C^5syIkVQe)O-&`+S(&kv?)twNh_zVBK*q9j^;ppV^iCP}LWu*&PqN`Z@_K#Wg zy(wRgeSzBic)G7&{;D#9g2<|Vtyfq9lj*qUK%b7`@SC1N{#CJjp&Hfft?oVmarcF4 zOr5Yo%J{D>+Q8QW`)DS~Hy!7ZPL2!|9;8+AmZ!@MQA$L{wrlLeC`S9Mk{%jUIw4FS zJJbP7xJz2u-GMd}G?D^<%Gt>o4EsxOdJdtXb=tBQS-nlKOG$RTi07ULh+I<~v@DngDN?s?-@clg*#cjaJtfA;esHr6)P9mx)I+8r;MI4#74 zsMB%o1#2gSh}QDn#YAdH&BYgh8<-CAdS-!*3eXb$X@#f8gz5lf$H%)skXu&W_bYW1 zH#g08U_Vrz{c3rTYL8y9TI)u$U2L(To+~1txN*VM@TtH)W&erxD++r77u!=^`7YgE z^8NHk!sevvdNKlE{&pd{1n&ew8b?!5qOkqYuj@=Su_|+6dq5=dZkv~k_>POWY+{SH z^APbE3L_Qk^4bQ7t)$O_)n;C?L#^X$#2AZoNLo8v&+2>|FT&y*@|!lv1WXrW4l}6Tm~t&KHx}Qr z=tE1Lm8Y9&zvQ0aB8lhx$*@0@pT`}L~J1U7g8)+`XIIomE<=ih=D#i7rd z6BlI>T?=+%ADK`~&`Bajo@FKW?JQE*g*mee8_xC6ppNVw{xcju^ds(+Lg&9e%V;t7 z9I_1?%lBmTatkVMDVB-FZc3sCOHAZ5Y&80vLp7e7;U<#2NvR$(tjG;2f;L<*mUg}(y&A8YD#&a^b@EchGA9D^01H=}ia4Yz0(Te3t|7@2a z2q#v#S$$GQw^HxKZ0anMJS^-gcC!TA3scd;sJjT(oWs7;9Vl0U6Sy=A!tf{|a~`!8 z8j-N0(Xw<|;#m+2gW(4QsYEYRmP4r1cA=!0V@JRXAqoukX6}Tc8SuDrBVYqR3fNgc zmsAWON9BYZBBvBfu4i!TIH&yL8)$K>6d!a310QNO-wEVIWJW+pD!K6;l)#T0dpwIz zbVr>V%eF4p>+np1EN3CPJN-mTV)0JJ2vnlh3pHK)Sf~b*n5Lkd%j5tW4UOF??+tQq zDpXvWBkWbbggg#I87BjU^JA9Bn?<5zLq!2F8C|+TK3Xk_<%oVC1EnW6ml2vqB6~xQ zoCWNZ*f{v$=OUUb1$waN`msUBA2)%UB5CHCFx)A<9Jj0~y*$EO zjI$vMA~=gBc{UDt%F;Pet#On5(K<9w>c}BM1=4E)*+!HJqdb_-z&@(|6x3()n$p3l z^qf4&^uy++6xik(g8M^#d3id;VTypK^FG5ivJA|`7Ion386QS?PsinCcw2OZyMMG- z3{~PBl1@GP*2GM{a*)c5H4CZF#NW|}>!Ela=%35-VknG_jvVnqG~mkVX%qWy3L1}M z2(k_YWR`&*hqKys)8X%#!O|+;_?(UhRj=WO3v9O&q&QQmlA&|{hr0Y;FpB_|V!oyd zQYQhIK}VL9&mOKNMP>_H&5NKb#Uu&hDJ%KRR@?bfPcM$rMNl}=a5;#*0uy3QfL`7^ zjis%ER-Bp<3PnAAoLFS#^hQwHbwcUn{94j%x<-Ifx;~&EsHb&zR9$TNsXO`xi-vHarb{@d+2*+j-K7kKc13lT z06~K->z$xmwyteFtqdF`fcM#Cyz8pzi+DZzrDvw{%+m=icRsqS+OMYl-GTAb)^mik z$|=p1GSB)tv-pbLh8BKf{-KK^=5hV;;4T5s&GB%uqqCkP|MqaPwFB6qI=O$T;k|zg zI@VTaJhFv>LayN$G)+5_qv$Bl(k?VxaqLQfs}ZYNQNmhzOFvxE8kn{nihG`me8>HV z@EMbC!WvG+Cl_UJjwD}x&tWu--635umv9hit>hu>TQxm^z>g<|qIwa3d2c!XkjRzY zgEFfgIq5+i&{2-ipaRI6S}R-a^l}tY>wW^j*~1g2lBj<>HIy^t1*b}rFi=mi>UVP` z@rF#0JLYk~4XS=L>M_E|mk-uhJ?!)96H3#Hw#{j%5_)}!Ag6@7;Rj!xlfnK;WXz8m}iElVH`xEJk{PLJ<5bqO3V_9c(j>gim?H zJ^pWwOnzNxOqYb;L0_QZr5>o3Ej`a6|DXxNb*U z_h207Poa6zb|7FADHIUsh4cDa&iKrFR*2X!QYT5dzv`fxfAwZ!cb)C}5GEpK^+3(1 z%!enbwgbxsEFEaHpuNwj-`=6cd8dD!_?YOBBr-0qg9^yU6*zMqSr?yj+^{gBJu^F4&c1fP`%kG5}@3KI#Ha@pz4Mq2+ z(~AzjY*p#uT##6UC2^jp9P*N}kr85n^kY-`$pC0Dq%DNW7wFo$tZ2OGu0GC-ASdJ5 z=gx3yaNW`HqvdToW=@+vvjrDX>OE1PxYRG@sWYEe@V`jU^$5OO0UnnMW(}`ny4MMP zoBlgib^Z74`?LaHLZ94nx&KU^XGS}@ZYswwiJ&whO-)c#@fcAHUD+~HoU>G6wpXB} zg%k&2Z$0-GPZK(R`nTbpKGbFP6vk<>!CP`@ob2{)_~} z9x*^tgHBy9W0_7C>6tW2eHFi^lN4E77b620sYnzSg1DNF``gV5|A4;`V>9QSnX{>C zAo%0s;|1#$sMV)Ybo;ZtI=_>lKEmiy=ydK5xz`q(V3v#QLOs3bL6xJ2=;dJeygwwJ zlkmbNylehP=156#n+`+tQFvcG?gBxEKn@_(ek!)^9}4>AF?sp5NRM#-D9Ksm!j(%b z`?X}H`B2tLjx?Ps)62w5UVzvA?}(0421DR1sl+hv!R`C&mVhDh8yK00o5bJkxPq3F z5dbg$C+*p@jgyauizt|LhdrVfebvOOt&r4}`WPKQd5$thS2XJJJR5v|hHsUjStCH} zpx(S?tk!qU`kWvvFX7t4;w8jQSz_4r^F>ag{}wg*Qd$1ZS5i4gsT#G>Q2FE$ zmUD}3X>6#~eR&anAP4}SMSLADmGKV72%DX7-3l;8^&?z}g47~%O&~fJV$v36(8{9w zGiv;scbB;8%KB#x$|n%JEO^p2wij@V%ERg(=7&9H<^4+wQjZPTo!zrO*ZZSzjqItw zmn3wb(hUX25frX5^#JqlWXAiz@WKu(fqqksfp{6vsvp;QPx_EMS6uZnPFCC#?pdb0 z#Gkp=GR7|;+o}9mZi39}^B01HVKW7D=l1rj6E6Cw03*SUdQZE~ZV+$~S7U``h*=$f6I?8@2+nYmI|r3MEg!YECVp@E5|yk`XoIb1P~f+%?2QnO$eU{EgN0*z-6k5k?PY6JF6 zhyQvNrJ5#oCB1sCRuu2ZG)UaYW?k=4+Rv*TOtO4uBDU^PuSfmf%0EoM)T=%92 z%@Z7qy&&&Rjay`BEDW~oP7BY*D?7}58o3j{`SKo_$2Wvtz@~CeF=B?HU6B(m3}f#{ zpiGWLvgPT3?OiG12uT$P!*k>@azY&OZ||7%b%3tyq-200ibvJ%hT>OakF-!WUpxQp zO1^h8gM-4QQ{8kN6Z}(5oqQ-u-k)xn!zI-=JUjlKJXRRk zlgMW6C%AU{VuQ?=1VQjj;WiV$^F#ZS`Q-iQJ}JN2K@;rvUH=hX+jKH(7dZRTAOR+H zEr*p{+f1hskV+9IfYjQUNl=#*R(kV$_tCQ6JCXO-tH&Jr7snVaR!Kyv6?XDli_Xha z$ntSHW5tI_n+A@`Vnn~_pp{6PKF(q*SI9tlRc*V{Y&?Hkkr1sLv~!(_||&z>J58mkmp!0JJ!4S|X@D zeN#c%b=Jg)rYtXbDgm5h$okF*2ZAB4G%QI<07{DNAyLKDCN(hp5XQ@(2W@LE2sM=M zEKw#eO2$%HXAP>5+4YYm(FR;Uw!#+=Hat1wz9(3d3FtK{5Od(GZ%wV?$@VM;+pdi*{GC3Gctzr&elmBt%x=B0t zh4!thx#lDHt?EvbSMSE_KhWo zK5%*N5~8{kvK1;$=wH~#F&3c7CH;>C#bH9kn7>Iz{M)S%Cx*(JQ9o!2fMGVkMF{mb zM_}>|=VY#!()$f~bZ+ZNKNjc6fGU`vQ0p>M4R`{Vj$}KQ!TPFVoeE6sBhLk1sXPDg z)laRU3)iOVpMvv*aq%>$#xbLJq44?f3M83E8T`O=ldlP{jQM|rS@g|=pxsd1aWPnT zAs@=8j@?1fOXaZ^zC%T`??0(t>8pM~ui#(+AZp}Agw_J) z6^D1k1K@xne@_rWyy-K(V=4rq?h864BzAJcUdLF>!dPr85%9sq#7iO61~&NK9WG7H z@8j%POfXCkVH2K;mp_sdG@*+`S>A2eqFfWe(~gV~Qr_MsaWHEJ5J;WXU^D28w_}%G zwRU}Au}T`)K@KQ0L&`BfVE#3Q{4 z2;gku1diE95NFQN7HI*>Z5$?Z3a|RKki9K`MyloPa1$E=>b(7Q`wBv)1CtE%sh+1y zvrv;jZt3!6tEwrRwsBS^_lm*{7Y(L*Y7~NDKD@Z^@VzBCQzeTSL#5_hs2)(4et4Vw zw&uUUY?wt+X&n(fS>8n_O@TFnaLy*8v|~0BPZdzWfcUUl2{H!QKQVYWLwjZkPEj0O zWa}m((7`DIa(ENwCiP0|S&Cpe=#erCo1$?@o1$Ti@{=bsm7_;XnVZ=yye1#YB?r}2 zDNQI-^r90=KmQ0=3kf}+HJ3rWK_BAXn@uA$LRbxz=}55fR)t% zazPm?7}}dcLU9Z_U0HR5q)ip`LPR{|SEIkF6tY-9*>N1!I3=gHFnfMLD8z1G#7bj7 zgV+AQhY@kKQh**B2&k402#DoB`VK`xObV)Y_LI zW456hlIeRE`>`W;k^O2xQ+)w$A{KGGj1s;UWCKz6SZU{(Z3>SjmkwJy%X;0cL6Os( z2Hp<9ZklOJ4Zhp(=!r5>gESXw$Pdg>^4>a#V4^ZLAbmPb#8;w-@A@ zBGBvZO;Nwvq)=_g%PXuC{(>+R>$W7AnzywSalF!j=L& z7VEeJ+Tlip#Ypa58%q0hNoboKX`E)zyRUv!cT{cAw~DnOD<} zU@NpC`E)0B=TR4-oc`IPdMhv5xf5>hT)d2mnwf1o{|iwNUTu@i(8Bq|Z#8qrQgHwt zld}y5IVL%G09vf(ZPa&)QaOk9^;`#7$R3n8B^%s+yb4Xj-(+f6(h7tWu(h)NMV$3W z(dn%I1cxswp1SYb`*B@W%ivKBz@(Y8sMx|zoyC@gLrvmR+*RJG^=hBz;`WT3Ge&?o zXf}KdRrmOhj+&oGu#JnU(_@8}u+uL=j8si=oM zi;N(&4?f_G%aPk-*df*X+eNI~jb)(T6%y@h>WKoOp{)P;UQ$rUi$X=Ax@B(1C`Kn6 zjthLqm6~L94oX2J&|4pOyY?u9T6uYKyDhyB3~bji;yL!zRmvf*F)LwD7D?BFbUg|Z zKI(aEaBvNvwzGkCr~a$kFFOhV9mkB`VlB(<^X$mR4@uKRobqVoHu};O8f6~WmVAMm z$~jBs)&w8iYiheTWabhlBE`OUG73jgZ{fee3V6?aJu=Zmu~!{=_lTn6FXX2Sr-%rk zs8{u2Hn9zJqIa-Qq08}N!uCZmJ*Zq_t9irn#2^LlXzWLeyiSfNsRIEleD~B z+;5@7zcp+7iKLJX+#G(VR*OcLEVO4D6v>H#u2y|4_=J#hO`bzD1)Lk`Q#tM`#C55y z#JNX7qY%|X&x&U2Q)2=eM+#A&DGj$uB73{#%m3Bk&wQujp>-}tG$T+uxB3gB`rE;% z%`%^pQujgyi7y?KrCgv+X$?m|4O!nYJbP_yx3igA#l$^76oL#N$3y^1a7=`!I>H)! z@jn@*CDim_DazLI#l6d=|GXhC*$6@&>$upwf8O74u)|zG{yYFq#snxQ-MS9MV$NQq z^r&2zMD6Gd2MgEGZP*EKFUz@pRH)!&j+Kyr9DXEekU^Szf zL4<{E5wpoLLm(?OcP7gG8$GHL4UB_^e61fV>P%TK2d4;BntybHjRN7FJ18Mc$l*m7k6oCKy4>(s+L)2T!qx65R{!jxzjSqg7Pb6 zWtrkL6$!gz?+GP)dqd#U`rsT*B|#j(BzD7qn1mdtfucyJ7#HRgoIo}t(2>SV1EaZ$ zl#Ebnm?Z<9(|SYbfJ5f?;a;UtZo;vUNx{BTbe#TKF<$|B*3lG>5yHf9`=#q?L7}&f z2T0k1-Y7HXv!a+WaOt&|X%b$8*#&d$ivK<&0ki|+_ zc;&TTY3(gF7tm4^E(y|xjp!djPx%4Cx`fxB-hl5v{d_Uz-XMB=NlrMnKIZ5`#d2115M z*ZnMev9EMWk9Q=m4X9iQ&yj6)m3}feDPCZ%w53m$U|KT3A1*yo=?QVJ4oATRTf`F3 zSZg&bE=!jnL8yhx>SM8{2LyI%!6X>BdxybztSBaI4IT8_9zm%rtK>M(FM4o%4FRiqLsPzh?T>!}hghmNP2ke_o2?)8N){Vkpxi%}rVUxR7lA8`|pG6xQLdE%QVuyv3#H0u;93u^wgPoD?@7OBy)`3E&6 zeNRLP|6hu=7DFW&lVA)T+%6dA5uS)HehHp*of99TIoL8kG`^46F`MQ*qpQU>X%rpn zVf56$Su>`lkCtpG!V0o%?B<+V71CdH$uv4NVy&-YBfl!yD#su*vNXR)^9vjSN-5TI zZ|_J2bHe57425R&Ey+{L9=7+-8Zlr6y4N^PqtJ~|(C6TYobZbi8c8Tmalpu_WT5G}3l2ptcdC$cPc2vs0PsqNFfL=AE z{4F9m@N;2!Lv48TY%=|p|@i!D1>>lO=rm%KEcU> z6gg9HH47S~s*(KNh1IUAR>rAz7p$)u@~xOm^9#WIA@Ki~mVwVAC)`!t|ORpVVh$3UdJYa=OW*!X3EpdE~89R)%T) zTH@^lvl#v?xlsD7*d8!Zsr^{0{mRxPhg)$Z4L)?}zH*%rD?Hi~uK1xPkG{NXBKZl> zm<*7Y#OnCEvMQ(%OAdW&w&Ez*>0);?i;|_BBY3cDbhv=YYZ?01qs*>bx%vi4T?5sF zUJI5O;3AdHdnr%tEs9X{?U-`ve?ogg1b7HDC*+) zIw-YEkBu^={uOe8w_GDoY_nlTK$Q!?@Mi$>-^51a<96Z<C~1#gxotbm^4%e!kTvX$1zpEoQ8VS(US6m?t>b)LEhi(0$R6ZA#0B`p# zAep)}xxhN(=CDE;zWyVQb^ta(?uL_{(>$f;wK7M~tmsxV4PwlqCP( z#I;nq)YinP=a3GvO7~HK{RYa(J5EXoBG%WSxEoPGDN|hoIM`&uS|ti_3$VWX*q4$w zj^QeBK}q%HhRq%(mukk5n+{0=RX$51w2mBolS87#YV78F2K#z=ifsFVoLW!%puy%TW@x;1jAC(AyE~H+=T|V2 z^KaXWzA|utkxQmFxR8y7;pM}>(r6nZkn1PwPVg+0PNzKHT3oI$uqn7X@PHtE2)+BC-QH|V0b7M#FEFuE z5^%6LVFQB+CaxS0*H*_<{?S^y4^2SZA-^mD#cnLtHFbnA|GNn?Yz+$AT?Q3n zGeCHmO(=0z1)d8flnV?<6y9^b#XBus?v~O8G))5#LqCR<1p8fYvH=Z(+0OwMQVn7- z7#7zT6JOrJ@+un2k;Pz|>$A}Uxtxl5tm|m;_U(^fpA&H}wsl9f-QSC@kU|+J^-Y=U z&xI&e^hnwTEJuH_iVRIVi`=o;>V3BkCZ( zv*QVH%axD9oM19wq`0oRa>iejsTr%}TK()*cE?IlLFYK7PSDb%)Te5g!Sra9WPW3l z&4RF6D8x1)tnhDtK;ISxN|ALi2iDt!YPbJ~^shH%%Q?QFr zG%E0so#^J<{bTG$i*wg4T-^?)-vIVhj^j37#&i&A$|GoZfLHHs2W7g;~t) z^4nY`w_)-Z)oMHXWT(){vqLPD3;z;Q9C0ljs9C{kkK_0LQl5{X``IYc?(x=jE@Bp> zD?Y*D;s-0S%&Yh-lsU&Dv(aJ08mbcDmn*hxyr=A~cR+DMNEK4tK)?a!AelH(Bohp) zNk_Wvl{bOmj8NPytfB$LA7Vmh8H4gbX1o|%@FnYip+Xqe$dm6UC5J#gse zEmhs*1s;?TN;Zmv6K%2T!!p?0_L{pR*r0K^o%eQL_os+7WbbWiTBokQ$jT$YKmKt% zRxK+|#B4=H1pl>J`xQtFZgd?!B&R88MP4x9&Vb+yP^|;|zS`1Ip)9#sM`0spFLwxHG3Ib7d?<7H@C2Nvgf`DdkeVDw!TJitSD$KMC7Rx# zN*kTIaSuhdm(njCH9~}Gb59)rb$4K@|J~bTwU3ZSSF3F z$oUeIW(xU-H0?{e>}k-@lcE~iaGY~I@e%D{qBEYtJSEv6Myvc37KI=?$|PgD@?wF4 zQ436nTD-OM=peKm7xLW*pM+cjvptt9Ur#HUDr^Ri3Je8NMP4qi!-dM6eIc5o#tte5YezE;85#9jX_Rmkvd4;iC=cPQ==HsHa{_m!zh-R;8~gxttu@Yd0?kQpU?_ z*JJtB&A%Fi?==-V^%yV!mGOS>kH!pXJHp+TZ-`2fn(@QwE8&#vDkBj#V0!gOQFkQq zXb`!{ms~eq11XpZC^1jXlgE9_Xr6gNQd97`nW_8>s?yT+jU34MvN`}UeW4M(a#?Eh zcB!odj{K6-bN88@t9Rbu$>{)|h54DZLLPmGksFTIryVi|F&$9A27#`{PRaEqfTJX4 zeppH8mSo|^9W(dv+lzGjUcBoh)^is3E|+7U&tb@CJ0i`SWx;bh;`zG)*#Y#eZ(W=_>}* zf=jJ{lMB5UOIQf+rB=C3@E?cN{~XYX9DJWoLfjPsTsiFXqI}O7Fey}=q@GJFuP^1+ z$Z!Hn!OkiP5_kIe7*qg3G{~6{j3%ply!Y;`%8$V&3wu2Ok&a#Onu)O(5s0&}weHpW zOnrAV6xry$9@tfB+^`B%XNqAsp&P8zmGSee%~S6;)5m(yTEes$L!(&ktQuvcoD5kv+h-+=4-(5WKk~PEsCe2cOO(H+=~hc@yeDp ze1O{N@^KIzRV1MMGz3xm4EFbSdD_FWgffW#BXLvk23&E&F!SZ_^u}SiMxULdUP%<% ziQj6oB4f9L-}azB7W$7++SnC%hXkj`fRUR#Np6oC7&XarPZ0o+4hRelWlr)prW#Rf(wViYRFy zDg%$v756vnrwqXH9rUtob~-G{S4~s0gXQ5`f}nHHwP2|j?n9deCsFuuLCN)kff}1T zqMLE(IpF3q!<7Nd-xJr0sddBB-Olm}|7WQ|p6z9!ezT=qO+f)5@v^#goo}R-vyI-P zJUb{o$`RI|?`=`=M3BL{u)kp5@}2C6QE{ ztHrlv{V<%wHNB)D&&w;EGYuht@@OwF7Z)d4SHeP!6A)b<@> zvbUr5paR6%O>i9&JVtxvS*k7=c2@UA7s^(4YHx1fM}B4_H^kl1FW?)#25vDE!-|iP zaBF}F?7vf*R%`j^XfuzfbrG#f6#ORoa_g9qsw*?}-IPdSU$|Z#itq1>FH+mqq-Gy7 ziG6M4nnmPud^0dz<*Z$~wCOLJNmPlFA(dr1wFjhoreZN(e&8NRgXhWAhbhEpFsV`g zO{(L<7zFu1iWkRZwT|b0vRKM>7Bqfk+5g6R@_`@e8ueR0UHf*vx2wX>dASoKSp6+f zJ}=<>JK|(YR3mO0ilf={pVcx0e$2AX7Ep_iA)-(>|7Gf}T&<422&fjWmIRQ99l%b5`sbsQAV+JnuRSAr$+T`s~UC<<0kO`5i6R>C| z)9yiL^hZJ07>)>PFhtImKSJ~?axTJ@Q3Q&K+c5`Z;lbDiItuweK{ z`+7X^FRbK3;~zR2hI>i&!L-mb;t{;aCQMb_Dx6Q9q1`3%N?H=<g zfFolFor$tZf-GH`T&u1M1sr9r9FPp-vM&b}?YfrA`!h#w*dprgUI3C&EL>nFRV-!{ zdvmCnfY*Sftn56dPWn$}@`^{QENH+{Qha6Eu&GkB?3&tsCXddZxm*o4PS*O!yC|S( zp5wF<1D-Mo?&{YX^jNaZMTI2I)D!?+N!E0)oQqNQ_)wX)H7D|0VftGc6%bydOjqSy zz0_(uFVLx+M+*|i%rIdEhUH8ieZ)Hk4wLl=&x|ffI;_m{2ZjvYaj`TlXGI=_VG7u9 z;uPOAA7`;O?1-~*EZhK9RdxqxgM2&c@9IV9dUMlZX`!u#ah~V?^S}e03?LG2iA@Y{ zxQ>b(ngPf)!b!1*lGJwv5nyxsB^scQOix;B306eg613-osEMJ7u{Cs$p0NpKxidDt zYrb*${0(AUke!T$MK3XHSl<(tl|Esdv}mbzzp?(ufLVYYAiTS&Qd^Y3(S!biqA~wA zzOC{#A2KyQ=y_e=z*!LU7!3-(XUd@3HyIe?k&N6=RRh@oQ$}%c4j`+lA7?Oo7Ws0% zRu}AYQ;bJsKq@R$TmJpaAD?!jSc{3?FC&7^`kEK**QUi-JvJk(C7*qUR^gsSfCzWtA+V`q& zX`D=tLo8-O%T&!zUiRM&<`J0Ia>O+m9F<2WQBZ0jl|g?iZnR)*Rm(vYX#1ULP1K65 z$pm8>q$pJLfvvBIrngm_>1KwhNvcU<481F&JU=C)q9a6vk^wTq97IXu(;Pr5qTzyy zVfu%67oWRyka;W}>)miB0x{#lSAsVQmNn%|F$oeUGu%L%?QtNan&Mc7N{$UP4eetj zd*w)_yBA13rbba)5OApZG$0!5UIiF6RelYtgv>m@d+z2WF+E%8o$a-1WS40;*njLO zGv+&P?<=oM^MLBC1JVhu?hP9NFS%c{&Y|>otKPr=^=b6V^vvwCvriuM(fm@z zgh%fEMuRBd0r^J!sq~P*V1R(2{_nis-+Cn(iX`bXet?h4fn?(MPF~?Mst>%Ap~&-) zE?)2&<0|WApd8lo!_2jvD^z<78`L=I_}u2T@AG6;Rid=Q}U9-kyb=tgD z!{Sj22_TD@IXyZ$I&u&mcCp1C9(??(trcLqUUP9jLW#8$XB`e$-@3XRr8!8wxgL

GmOzqvfG-X^%;7?6<~Yn>H4P39|iq3Hjzx>?(;zx}|oDIj^Dq1(F1-y5+oM0>1Ueqq;0{Z;#^-f01Pck>3 z=}z1`-B*)`ZNk&GjItir)3((8z(~s*ll&c4ui$muY<)0)46wh!8D@OG2O+j#mn+`; zlcqnRPlR%av2`8;0PvY5H!Evv`9A9v95`|>4Ad(~JCX7_k2b!v>s|cV*#_`hx2#7E z0Qg@)4&KYG0U!q%CM0`nMMp84qXp=zzBZjtwK&0qHd8IOE39>bCi{0zpfGo}pLfeV zlRKd;ZIF02;M+018|Kv*8(TZ(s_1}{u+f}+V6e=s143Z-?TWNQgHMb3DZ*xffFE9W zSFo1wYc1w03~}goeb1@){^#7ybD{SXfT;aA8X0=%j=#YseyfzXKO2$T2&_ty-L#0< zNzei*vi!q&f1%f1r5!v8`pIxAPPxW};|{)~wEcZcumtVlvuzQB-k(SO%3<4DnqZO& zw(*?VZFi%In6#a2zrSdBs`K-mHyiyFDuqp2t!$h<$=TDY?CEWNwg6Ii-ruhPY@KC4 z^AC`|`T8yKBj**|K9){SKJBik<5O_r?bad?Axu7K-;nNq%!TItRk7SH^z+-Qc#a7- z8RXe(={A_nK1{1WdJR0`C%4GLaj=c>i6r)qKulo5`ekE~4Y+JRC+`dKaeIpXpp~SF za+OBF6GBbQ69r3w9H``Co8nOgpnY9_ZQthNl*t>?mlDO^waDvH1hgQ;#nqHe7~NwX zM}ZF~e-F0bl?nuhcq|0-pbKaP;owWme3SMU%52&7_9U?*jsq zKTOd3){G+`k6o-eda}9RI093^P+nOTx-w20DK-U)NvT6_8IpOCt`?I|! ztGB;?K6C(ZN8X{WY9!wPw8o|)N-?Jl_484~DzS^V_Fi)plWM0gr>;QOJb2h9Ypm%T zvbD2OI+-RKeWr%7Wd-o{Vi)$6;C3|kL`~2Hd_?hAw%syQ_+W~PdGDRSd45bTiYEAk z&30Kib7|JDH!bt}FQ8uz?87)YW-Nc8x(q3tii$8!xTVq(!_v_J#ckijN$<{TyhI?+ z9V>(O;a^`IpDy0p-4OzjaPWWK4DE6=0x$d$E_6PjE~hT`h!R6ot9=M$H)nOO*?GD zA#I$b5w1P%iUw{R^zhvGe%Q)+9AFpux<&pNAM*GcAobZJi5n(pmxvm z^0YOc1DV~exw@O^kdwkg!w;PsQJoK1j3*GVi}5TnP92v4mVcLw(dJ>7*-LB&&%b^= zV|&QXY%=*UUSdDvUh>{%ta~vo^4MN_KNlLu0>>EM_Yv@!aEHF-w}0+f)WI5Y5Uld! zRq$)~hh)(2ZiOEkg@ZhCEJBgr(Y=^&ACc^Ks6m3seFKw ziT^9$QA4x=#5kUt@JultJ&9i+Y7wD*{$B2L#b~Kms%0`^9ax`B9xZJ#+K04Tt&l>6 z@EI)Vruc*RaO6@@_8FXcxx4CSXV2M?g#W5)Vtn4dPvBRuel~sW(3VE&PuGUTA2JUi zxnQajyImR$E2XN{23%Ys$eJBpf<6?odk^{yVh+^?K)MK&q2~vR84vsQURK)|3oo{y z+?w;=rG2v(;Iu+W31i=_p$AS}fLt<~iPdIBE6z2mvv49Mfnb;~; zAW`%Vpj+1=S|`SCX<8UzL-^bJ=#b`;Cmjn|6TOg`g<`Xdv@m8U3FkK3hx{LKXDIL)i}=&K?Rk4qh7>pQ za3hp(&m60{p#X7uNEFm2PT)Ae8RUTG-n=CdAPqm>lYZQNLHymVBV&o8s3OD(_i_Q< zlx(*W(vc29*~o$$=547XVRz`fi|y>nYw!r z+-_n2f(04)nb|_)nz)z{J4o&-x&<%7&B?N%&Ps%|kA*x6B#uO$zi|)}9qF0f0dz|T zV3bD45@hXb-j4j&lMdwi@IHmUl@C!GwqwQ~lT?3%C7M&0R5b$3LK%+`ULr&&`U#Yq zk1$bf7)k3f=s*`fVyGx}4y7pexge6*C#u&6JV6LLUAf3vx6p9sK*)Zwxl=F#b3WqQ z!4>#884?PE-nl9O#Frs^6c^6766y0dK*k;=3IG92{-&BYL zQHmBrW-!!ryaDC{zG&KKdIKsNCdQe>63x7j5rUEDR`HLlHgNVMPx#|4P-zu1b^M%q zwqAouJRW}l083K%hY9d8@JOnbds(qWQi+SJt~E-MOEzS6AF3To4)Pm;LyPhd^oc>Z zQs&05mo41D&4p%BUqrf=wk9)oO|1VoGhHPt(*u*yteCi+-lRZlzkiC}j3YemAY?lk zh5oRdi7Rk2xo1HMMcvJ(pw6c92$>!g;(O3pM#Vk;9)gE>8waqG?q!ysx&*<^HdSkF zx9G;0?(&Nlo#Nr=KJe%rDkN+WtqXl4`EUN@9e1>AiQjRK)oAd`V+|Cck6k-^$-{{N z0r*^!_x6OP?bfuTI`)UALgTlyJP=JI&8cycpwbPZuDyJ)7TO&?FBSVI=k=&QCr zX*5ZeVsvSbzX4WeMRboVZVB3iXU9MlS3>vw<>-Zx*qY{YAwf$y;!R2@2}Z2pqN))k zqV{2Kfsx*SpX@Sz6P#7X@VIKnbcvR;F?Y+7?PW-;=n8Th}Am;wkKpxWr%U?-{UNDL5lA}^P~ql# zM*Ao1fETdHql1ZBK3m~D?>;Zp%{pKp=z=`XAbM~?!Y*ID&dtz{to;+}`y(DIg58h} z2ny7bZ)IAH=z2LC?WAnq>b#{rJo~zRCifOPYY-lN!}RYQ(AIj}Qf~?{xouw>{9rc2oV)1YDu96Wd8raT8HKTkL1rYIOHlqq=l5 zU4fS%7?d8(_t6Cmop3$M!GBo?w{pun12}!pwVl1|_*1@aL5|M$R?=ul;|vwavHdH{ zqhH23xptqYMchx6jvbDk|4qV7kca zldCV)*!0|;>P7s43n_A%w6IqDo~=$^-H~(_E8z7(oFr}`-)349#Ug+B=y@Om3@~{3 z8z&24#Xc>KDY#g$2Ybldj#RREj;jKjp>6CnwST*j_^Ma%%Vle7V3>MkA$hmAy1W=$ zv#!p1Q)kUM%XDj_P$$)C0hJ@pB>~d@NEx$zds|b(*{Ykh1h%?du_q|HoHr0DL7Evu z1?vHq=opmb3&(*<_K*I#UbpveJwU4uOZj92mxxZSJc|U+Do09J1R-N}tU=`Q^wwxs z`L`KSQd|g7-d1f=Sgvn$#&Gntnv(Q%mAH+(5Y`h5n0TvqMPiWHM1Wh?zpTCPW zm$7MmOY~iTK&?O!A5n_;J9tG7BPD-3&3>9y=q)5OBZV&(abP`Oe}$1ip96@wHS8B zBOf3mQz3X|1Vm7$ztBWHH3h=p!aTWWgN0iVHUX+6!sR|BjmFH- zZcRTNbk8UqIl((F@z5dY{-mdSM@&A%I}aRn+osdNRhMqbCGF*>B>_m(GhOZIi=#>J zib)dmvD1NtM3ah%uBAhIrHM^DtExE)s1b(25Gjp)HEqo9)l9euRho>DbM!*>j&n~6 z%}a^yL*pmfoL`tZ(E(wjmE=Uq^A8h6K^5n7@he23!8$`yC9wf8N1t(1meXY`s;6g+ zzV@+&h|ypm+Fd6A^A@7ZB30B_2jHBuXmA<9(+{93SRlzx5JduRB@1p}<5p;l#GN^& zX4+Rd383mfFB1U;$a@@dUT`QiBj_e3%orAEu`EV;N5lKRpMa4JxZ(CPJ&e#M*?yg& zHd$bvNE6Wx%8Vz%bB8qtn7!!Xxnx5~*|d393^Gd2|gSJFp6X_0=9sto1Bet}DuqLmnIL5+206bM+ zIc`WuW1TKn8^8|2maK?JF$n3C4?k~-X+=nHx0rqbcTvn6EJIDaB;jXeEI>VBcPI-y z>HGj~c8=;7#_lheD6ut$_!bO(jlX3&5G(Zo7+Q7e_2|lFsVfIiixsNavJMdQM+1zi zpz-L+*_XcssL~^oWszaX=%~z8;9ZV~LO0{@s-^cBqX5_m;KIn$M4^IRhZ47_JD4U8 zEM+vv|90V>VMXNq+mZSTW0m-)U|K~c`QnoMVsGlCweqrp8vKnFwJ0yfQE0%f2DfkTgayVU0etJfK*UB`nCzjC!QHXck#4R$BYbg;N1Mtw=gzoI-o59~HVLzb8MuMej^g&aA~jba0uA zs^@dBD}JNoYb%~#&Fq}dlK>OJAbnq+gK5np<_U=E){|Z?w~R#E;&SfQPcY!^Xw7Bg z&W@43rP`?fpj@fm=i!)&jI!G*tDg-EPa{Fh=c1(h%Q^UB;Yp>O9Sx%piyYBEEh`9t zkCdrE9>1-Lmbb3h7-ys+<-OGBghx&8L9dDqU0D!yswibP@F?XHEUQ_xU}K2(&PxVI zjRo+|MHTnUbL%`J+nYInV_?>_1hbX-gYzZO!w2Y4n!8(c6+`={Od(Nt=-d516>*TY zG8%b+SKyhz27Q&KXxk7~uzf<)ic}(;XmMA($Q7-BjXg!>_u)hkVs$#KC2^dIMlmQ) zH=9Q$v5AGi@0P(ze260wPK_QQ;;P?3!~u8&BCIsJkPlSSLnHA6*F>63UzUN^M545w zf+>t`%(fxNxGmr|*kFdw!(bY11-SrD-g%2hX)c`AG;l%(KYErKP`?{b!9efYJ(Q+- zgrigXCmHz|L+~%TuU}%#FyadPpIgZK+ybnm@kUnfS#?+krB&L=u!jM#%{`l#PypbC zEYK)j8NL<)yWrb7_teHk&UW1(EGcME82ycRR$gsKKxA_=`>4LxW!5j0b}OKc!uZEf zm!!3jgL&bPP5TY;%ex%*tKyIUHMBi1W?Z+dY7CE;cxdGrLm$)I9$VFP`&kWB$FXiZTOL(S`*GHi0bvu<@gWv?RRaWi=F zpD!cys>Yw&a-I^Gtbjvw&!$EDZeQD6p(%tjPLsA{M7Y|4ls&djg(en;*yp~0*Gr}S zfKQQ(Z^HaSsFP-Yv*)0*_EhbE&GRNic1Lydi=p47hQ9kAD{N-)CC&j9G4b57@RzRZ zTqt&1H#g?%(Sa?)3sxjNxvk>rNNdFfRWg$rpU?J%e;Yy@rh9mpxzMQ2Be0oZHYl-J z&o^;T+#_$lb%RfVJXoI+6bzu$j|aFfz>;hp?ePsN62{(I7u;sKB)#|S@f8G{TF1=U z?a!p{5+lax;!LgusvQ8Ftz6$TcW^w1ErIvSFQ4j?e@$M9MMN>K(jB+5-z&o_$ZG9=1DNyI4@o{S$4wXYK&ZX9q( zmJAz_4@_AA)`SlKTa*HxdnVwR#sUmX4u$Fm#XER+Q=Mi642%I{0Fvef3`_wWm{tG` zOhmBst2cwjh3gDdrGere+8kD26LnZVm3D?(GgKGz=e_|L7#Bcw;&MvGyn+!aM>fK>&xt|GZEOs-Au;ff?fOJ%{Dt83%qzNyK?BOPCw%G zfbd-OcaR+!>&)aB%ucyBY9ybT1MEw(ND~ZI$*R2a@^l(3c=2$zp4 zjc*IT-8`cpTWD=RVF*5ee{OOohFNJc)2O zsgTugm^cO0My{oxbDMi(Sd%6Fo95nr>YEFX+skR5a|T;eNUHYR%NmBzf`Vh080K-QqEZ~ zVhIY2xTSDs03jt6qCE?kIvdnPL5l9`KYOoU&Fy@b0OV&oG4Ci6+6zuNQh)l%2*3iV zL}Gjenag!3I;ENc`5(+YWU>z)P1{TAPlL6B%70#@3Y2_itEQS3iNhUK<+S6pS&GFB zqB_p!?WYF9CjoZ-3*ki5;&4{Vy~_>R8iNb`~5nvP4M!E5cLw>jE;U{OeH9iHqxz_ zQ4KpcN1yF@;ww=m04ke~yB%tOtPxTDh2lj!SAXl~5>o+}TB*v=v>1waX73J9sI*^1 z2{Pj-#~!!C-EL`nAer|$CkzF2y-5nSGut_WSbY?~GQwKt{2{MeF)aYyoS(3kVW1YJ zSL}|*Gh^7eTO$lDTx>n`W2w+^(*|I(FCaZbMz`*`p|B{U0DVWlg;UD$cySA3PQLUf z@-S*TB^+p0mvbx?i4?4FjCUUjrhz-lH;=j)rZQ#O8()-K=mHc*l?oIxgYt$56X>v1 zCPgwW^;?G0q*oUHa_Y59_7f|cWy@or?v2C{NEXqqh%P#@pe1@uN4+QgI=JWG5`GK3 zRv)FnFL&y5fQP}*NvK0NQFUgNgxceZ*Y#+fv1rj#wiI!me{W!_=-OAPNFr+%7vjJ2 znQ<&zjVO|tG>VJtD7#Opdf0jj*g^?TBg->#s9(ACp+-5l{Zzi;K4qryvQnw9RtQ+U zuwDu}hb9X%Z?w?h>F|E-i^&NX^6*Upy8!*>5?S%P1Uy$glt+Xw76kh6cofm#*ca2E z1S;@I$EiRGbVoUK*;NWcM&jFcA$sm~9z#Ivz}g#AVP8GGnSj2P6yuf+m4oGpcd)1y zKb@V;VhN6T@?M<1S$apd4mI;#Sbg9`ULht)&AwGh%LK{GK%t}o@x>dm3G*>}*q6Rw+&WpvPU5AWA!RAY*EDV@X+#t$|i6 zHU&QSfW%P0l;sZa2E`k;wjLPVBnZSPL!(EAhak-~UQ<&$%pnPZ!?+}6O(tYD(69}7 z9qks}S4XNL@km0i@^3wP&yNf*cdb>x(tQd0jv7ci@2S^h{U@Dpw{jwV_?T+aV ze2tmQS12uI^v(Psimi+cC@+aqTQrigiJTUyEZgh4j+EwY{ih)m0W7>j+#mayDJ{|g zmlJ-e{12Dgsl(azV1q%-MwaF@-Fo>vt}LC>B0!_RqQ`F1`jl-o-^&)~w zq5+8!)Fr&Ae&E$|P!AuRXp1lT%De|dicmZ1MooJu_iEh+e`<1&2Z18Ra?O7VTRO5t zN+3ek(WZq7sFX{Yr1q94zQuwj!t=5j!mBbEPx(Ow;8`wO>#!lcLXM_6L{fgkbQ0RU zs0PQ2{fvr&`C- zRPbsE^36h}(Co+h4FOWrd3XOd!FycN?*THa2xf|0za6GV^bvnDmnQJGq#J2VU5@9TqSeWOM^E z!9dztb)~lUeVTo>ST_IK^h(#~&8;WdiH zj%Zv8Vb%wTx$Xl;VvO_1vXl?=J3yD@4R~%uI7i(uvw`>1OKjUzOqg-?nDO%(h|unV zfGir6TP_*cSg(5xp-b;S`vdr@EzjyunFk3ZWe2x3f6_32P@k2e;e&&kia>WWTZ)b$ zlYG7P^G~1)iFYT{QWv{x9T8>H<5W+y2=wU%>|BkO$~q@r1>Dg;4&@h`1ORaR;ce*~ ze~J(8QyFu5pVuHct!xim-iAbEscaz{Cfv4rM+q+hG-S*bx;~5$gGAda>CQ^ww7Yb= zXwS>`X)i>7n$;v3?NBYQxr$#CevB8Rvx#74d~8Bdj7NQ5T=rbII)kV6l2&b8)}1WGpGF?Mp&txcx&P|}#LLaXjpASWln6E;pkO@n-S35$sfPVJ^*~%qt@|`}Ur}Mj{Uvk8>ZIVRt@i%Wu)F5) zq`iVs_l_O;v;I40bUK5D5_9|&uY-?Ka{~rD`GcL|Q+}%f833-Kr1cq_xB}Us$0bEb z{F5PLq^0JH?E&5&W-n-bs&2%R}uWD&!5BIr_B&?r4Y+U z7*2H_bHTS<>Hr-poaQ&UkNUnE-h#Y|J$@W@gSZ$|i)(>eTN~6tKz8NNS>Nj(2?TTF8ZA#haU*zv^HRfUwpsgA$f2kqPpSGfOgOiO zo4q~K0B}6nZsKoOgf6nTfZnVqV&!Dbpl7wNUf|0_n{wUkoK} zBaXFCe^by3Jm#-_5*Z#esWa7j;=a;r!?;ropaFzDq=u6;1N|>{B52G$YD7_LGHQ9H z)APbj$%7GFg<|qV_yzhNfg{=EX)SDi9HBg^sS$E@A_80e6wIcbt_w_n=6^ZA$m8hV z)LJyJB83Y9$D-ZVqsHrd>2(!2V)^1%UE%RL5#V*&@6){8daG0BGVFoYhK`D!$BK!- ztpIJYZ71b;Q;=vRxr5i@H1KMtW9Uv)?WbTRO9j+2>&5e2NI5T-)axT)1+<=BfF5SQ zms&%e={lr);w*dehv%dfxWvAOH%xfY&p#70t6L#Feo=)7B+^pY%%vqn3*+ zdT-fY`F|km!)LNg#L*)hdBB@u9I-`9Gq>K*F)WjJk|qlNJZ( zdL$&(iH5I4ez}|Ktg%XD5XWGdaRO$&+6#cPkUXPHcGJA@xnTy%$%oJ#%E^$3jw!7@ z$@}}`Z;i1A@VZ2YZ3ezYVU-Le>A4&d^uKDX+gie1 zJLnT(q`dn{QU=P@GW7-z4;rbaB%E$SKXkbjQ5lY3=F3tLs5^Fx#xf}TPjt3529(g0 z?(0;*Bh6$G>Mv2nUi^Em9m!a|R25c}=SEUr+L2mB$7vw+_vfENlmaG~eVGc95yQb%RB|2)68W1Mg?(y@}cf{d%E;E&-xfWA?C zT1>)gJP1nVxG5Wf2(qJ=IwmH;a#8Ecp$J8AsR|HntM!9FK2CFOn z{IS}9^19Jh*wyA)E~h#pn>3NX?cooE@9NZOuXRGJVnUQlb)g`j~ON7YL7EU>E(!|uebWSo)V}X)AF{zYY?gMb28!X%6r%BR8cc6y zNMG^v8X$fl)i?%F($#0T_WjTXdYj#PIU|mNMy0h5XR1Fh!R9(j7;NF~i2qsPzeO?* z=L-qFZn*Mc!RJVMkhS4^6DMe==$OR$)%E8M&ieiET9z+t&RkEA5SO`Gtb-|ex!2hX zN6<-W{>`GD0H;RkWQF7nCQi3M-nR{F~SZ~&BWEJE5 ze7qneZqpr)xAFFR`u;ESO7^R~+P7XBi|$N<*kdw!#}KCc>KPIDJ+zN<@RytXAZyK!9h6!`6M;CyB+uV=Sv>Y!WPLe|VwmZy@2m zVcecJS!iQGPBN2LTOK56(sbm#zE`iPQt5_#sX7{ z1ElGch#4SqASl*yJX1+N(46Vmxp1fvseBDf5GzgixJSe+g1Go4dUWR#qPPFH_mC)x z)-W7wtDZ1qXuik}B!)k;CdelHmYzip`^Y^IIh+EJCEr*8hryY+))uKcXNyz$WfmJH+5e8iY@Hy1TaP4sAeDnX!dzE zkhmkN`}~ROk77O07&1R41l7$~nW~J2p?taNWze_Nz1IfSbV_|>k9byVc8t=p3VfCf zTxkS^)?8P4@E)iSS?)JL>nkO;1TV@TyLg5r?O-}tLzf+a!k#aK73&IWWk>MTTTQKy zbL%Rv0HK1_yN)>1unF#57J|x0S=K#jf z47wN3rVnUgLHHa;vilo!I~vgFK=uBT&=d|RAuNX38cYZ%l=l&*6{6aa(S#Hdw@i3N zZuK6xF0=dd*d2J9$WcRZa+-f7cQx&#b-4M>`gh4R`O>HJqV+oY>pX{@C7dLIJve=l zTVBY;ugN77%2k?7*>wFz;+k`$5RSycL=g!Rmsly_b3l#?t&j{;m>Ek_*no~b@-V7CXbi7=2ov)AB) z`>TtPS072Nfj>%eI(TF!-`(Tm;k(#{)Wc){7ar=*BJb5h`a$=T+1ZdYSuNpE-Apbk zOqlVh_lY;@eaBb&OBJKT_k%K6&nuk#dw;Iy7v}x@sE5P%*LD>Eb+kLs^YP-@MmQKz z0n(xy5Ih3V*Lz~D1*8sYUVTy`Vs)eTN(BBKvcZM1MCtyVn3>cSZ*acM_ymj23-aAw zb4vb6DdXxnL-hXY_eX`?9sUPVM8eN1eEg6z_*fYCVh^9Cew0&|@iWEk*{-`+tMch!3U zT<5>U@wx?jxH{Xm9Cmg)pl?k7Hheyz&rb)*U5#bdR|OBO9X+{`Fe!~4?~(6b z&d=_Y0h1{O_2;}Es|v5=2xZftIG{b-mw3vs5(|j)8Xg@s&8RR?8h7mhv)i~qwRgHd zHcP7Akl~UR{7$Y;>(~7h`s~A}i#L0KLI20+Dh&X{#d&V7AK#VxuaDb(((jLp!+qv2 z_}Dss0YSm8PqW@gTs++aK|LaF+r?c#GSF!_!DmiRACN`3hQ`NqkBi4q$mqhOJ|`^a zo7q*E5+20g_3e|DZ0&=pDU{u^bSf}9WxTxHp4(f_a3M+-+o)d`4j}aG=jys@Tqv=? zf{##9h-7s$OW6M6O32d`sFc2z#X^DIIY7K+qdd@`SR)&}Jg;MVFFcZeG;F1GzA=Az zvcAFScBUC`Lj0pJJg9FC{VE;COO_x`_+N6U8q((l{|zI!;g6Bb9&1k}oKnHv6rP_ zwq5*dm$@c{-|5~9j*%hbFxy)gyJzsax!;Imsd}%Sh3c9Eb)L#O`S&OPPy-SZs8!6l z%GjC=c}9RwzNZ94;EqoybnOAsO!gBQgG^yPYf5|Md-o4P2_?(j%APM8QPg;X`ZHn0 z@xypU`eg_w%Z@`O>Dk%d5sGPxRuAJX%qrpAL*4&vdQ^48m@=?T{h|#qdwT3}R4ZHT3~%cR&mO zHgZs0*x+Awjo@{i^uLRYg>M@IXp@1Njx@ zd=ebQ!8tFgS6$Nl-nqjki)0&Y^Q=cLdw~%6z1l|6<_~~ier|;XJorJ2)O-@T_EVlY zGLk6Xo`wfY3^FhEft4a4(1Q4Yr4NESC+cI9XhMW0<&UWsq$sK$GV!tq>n)2`8cv>u zVV#xvZ=&#f(@!p`K*e7R_CTJ_lLw4Wu#Iz)Ge$4YqlS*M-Th8XkCJj$_w;LVQY&Nb zqTJ*wa@v3oVOt&`p3eq)N>q*^skq!s%*#w*s|9T4^M2hnBa!5+m~>?DG2MWf`zaF& z=-PdzyU4lnt1xB55WidbK#7C_hq+|1pveHEQ!`@!qP$1a-p#ldb3+ArW!MgMZB48?D#B^L@ zV0Hi)&X~iD>4h{Jwjl?B96?6QaL?Uw_wY3@<0jK2LdEcOnq?6AF*yA_H&pk0eiq|q z7PY&65Pc{q`w$zP1S=mr646E9-t%{GxK}zs*<0sENVl-*q!gmKr1d~9d5n|`ya`uq zz^?S~A>rT-jozH!{Z_^Z zRkH;FoyV*TB7*c@Xq>i@EWJFn<~-Qac`!cDO#tZYFJ>nKFoI$QD*s$@=1z#ZW31JH zMTG8vA(Y&j>uv% zLdDJV5@>4Av%ff17gEmuz~f%yo^u}ghju3tWA6Re0i=$i>BvjaUe(=J9m*Oa;u2La z3>l8O4PPw@_JS3-wt9&bd(QZgrvhMw1)_rddN4y!LSS{vkodUwNHhfxr;q3F6zZ0h z!EHZWBfzi)TqaX2OD&r7-^#Y!BemP-3FW(VytR~!g0Avkl*$#<3a#Xs8rxGg-nC1^ zuTW^bC0?uh?<$ARbtn7dR#R^zVUxev*ww*!Q5#HO$yA$$Lo-5_A-8J**9`#Zt?ML; z5D%I=>`b1eV7`4ep@|IO%it*{yS%a-hVg~!7Sr=of$K9NkwVyz%-gsOKxSeC*&xf6Z*^0l>1&HIM!!F~Z~X49|Y>9Z{| zhYa#D?3SxD8-O!el!o;&?6UNdOPMl95Yx=pW<39{G+%<$$xJ$j|M`Ac?L`MIKk$9z zyEs=$J%ZLgF~{_OsM1E2?O$}zzqU$Djm?dcfYi=(nGjbLOa-i*sX$-Ww;ji)jx%D-_>j1m(`XY z*1<~jC;}R?Vag>WK{q%zK{_r_+OTr|@d$1rs=+;_hKMVnFWJG)?C#?(kY%;bTffM# z8L~%Vf^Cr@+R%doZ`oHoxaM8cVAJr$H$k|?XUQ;Tg9;DFdHw*p+)36)Wkc}zbwHg} z;vo$%*BF<-mj7+wd9kYk=5F6O{sh%zcjNi>X#a43EVYhq=;77hQ<1w{g*C9^%}}t; zMw($umd0m3AuOf2N%F5QoImCd6l z-6z%sB&~tECEfetnh&IU;oZYD3uPBaPm6aoi0$>JJE7nf>O~Vt1{Gdr@Rr*pgst*8 z8++Yp^kb1*G8N+B_JwU!4@__r1!uZsuAMDJkdK{Jo^t>KV0X?jiU*$4X;KxwSo&Qr z93(jUAzHCMABALv^-`PI(7&6-$l;O9AsB=$%@5d%m#4nv5<9i_TzP0Z-%TRuJ1GXhi{koXY9_w#&2>w$M{`Z5;buSf>F9Z!_Hr z3LB%aVZs2Q0g8(L)NEEz8bAmzf?;wIIj`k<2-d5EomYj|FgvAR832vZu8P$2O}%2S zP$Q?78+DfKTf=SZP|^em`gW<0d6>}+MqbLIYh`*l1Q6#bp%C(Kfr#1G-JHG;DjvWN zkPKxpu14*s@YC)&;y|cikB~jL9H42#o3twdPP_o2R0R$kllsFK1pc6?CPE}((8hes zt%!xBBhT-`N>h90Gh`hy{ISfz(nt*Oc7ML0KrioltDq`WPJ5m#P<7kA1ImF2&v#qH zXw%O5A4&kIyCjZpt!jaoz+=E4PzoS6U}OWc=&djvn-_Q_>}bfx<*J9NTNh;h1a32z z>7IaUSlX}z0{nkuZ;H51z)-X9ATxQkO`9o!KUtuZOfwaiMjLruGH%_ze;nm@Sgfg zZ;MHT0(q$4X}-fSJ`BCa><0EJ*-L6R#4G{N3D z^Mmq|6;S{*+m;aMql!SaY*dv%fy@2D_6&_oI=PNhnZHc_QY(6V`y>CIHYBs6O~R12jNK7D1AMf^(|xZ=Y_zvC?c zV0GY`^g$;0DHN4#FS?h)y70%d>A=*$;xOv1shbgJWHNhe>5A0AH~@M#4i%1kuD~*z z(qF0`&f^R{$;$M~ECP!-Lna^68j=hX?C*Mpbik8Wzp4U_52bbR{pY=2@Y`jDY8w`< z4LR#))x-5!#(NGuD$4mSI=q*d9as$Q&fjW%ElMFj7n7{MjK(Rx$VwQFtNC!n*$>|0 zUY&;wUI(MFtyB+rYSjYmNI;kz3ibAU5I2OwZ+Iljsa0lrkzAmLS_cq6_28aPs<+hZ zn4HeN3SA|bLMH51<`NGSrqCIBRP?x)(ZQh8Q1nvA`q?e|y~xJdZL?@e+W|M}0yMxl z47$97b;x(4H4#S+tmlYo`%rU2P*q?K!fxbwN&Ajfhu)&x&^Iv5qr271tpMrtFdASg zG^u5N87??kxQa`rLzgnm=9)x*kMsc=U>V?{ba+}|QZkp*DhaStNOh)f(!h+bd2TA) zI@YxQ=R;J;DrGvtrvkm9`@wWoT3}{6)~U>;byD>0bWP(WXioeRVI;@k7mI4@?yl7b z)go_7elFnMY3=qC8~s`S^mE4Z4GeWVU$2S0*@;q<%kRUF|H0CAq& z>$a`_tB!a>S+zpMArr^0Lkc&2SzohQ9<$dULhI6CmUe!n)Gy_@dNn}S9cGq&=1T9@ z&(mivU5gHw5I8v9iw>9-Fq@xnU1Z}nzV3~D-w;r3R}P44a|vBV&a`65Gr*3Ww_c5- z(^P-vG5@9apfb<$g^iE<(WE(5ae1+HLqO2%DpHAE__95N0N| zO+n1ynK`X(LSy9e-XF;2lO(7JCPk zxd++4E-FtN>nUtRm>IgP-f#7uPBn*(g*DkGAy^kMUVCf8K)CF{s5$yd>u3#kJSBnlIfY_q>9wUl_4mm^u#6tyS-;g3LF{Uu>f_R%0pz>K7v zi#?Ju0N#xX9=wF4zbcJFraoaiA9^P>FR2hNRNXx-|q`EY^l`!bGocl#6M}Z`vJ~$-!^oR0ai! ziGX;Dm4>6PNr_8j$H67IazbFyS|H>rWG0RbRb*2*jasahS@jb%AOl%uJddDlb^osH zZ=Xy*$m*ZnwWyJSSas7_rO(MWaqCR7&s$Ev29nq}n$_fvKIIcPu7_FWMx6O%Y@OX=i%6AA2X^m;<-mbOw1rcWT(IyGW?F4iJw z$eGmQ3B~NWk&{}tdFxPIB6;&0#w~k)D!gj(UA>nGAKT1 zUZf)}Ecsl0U93#EPqib}F;y(2(E~^pO2i(xJBIL7YW7< z1Kf{(aV^yC#L1+szl9^RiF?GcA6AR_$fDQuX{su@=gev5b@Bn$GZ=hP)P?N=l9Xz0 z<6qAXQ7CG?Y68*Y?Juev9;gDt%occ@X5j1PhrMXAsW86}?&YE~k7|+YF24eLYXhTb zIB8`22ZL7E-GnO!;W-gUAGDFh1L)jXFul@iUgG(-ImwMr)mb#ZDr(DiS5Wz>n+GmU z-*^y`aC1XLJT3uZsZt0V(|>)GgTX6i7PxLm(kN={CK=5S5bu@aM2^dx&*F?4+zRmU zy@};UPdcdfUw&g1`n1QH&}9Wo2|xy>Je%hDCSV{QgR12a0(2)B%0{ zkUxKz?R5c9pZZpTNqFA~{N&Iv5sYJ>%6gct&z~!v(SI+ce<*tBx0nHHH)^Z9>2`}9 zv*G0PFRD)l-%wR8lfwQ(k~v`|5STY>jP+3JdlS#G$jp>EMQlt|&yM2Wu0-gRk5y6v z$13Eu*^PA7UN~bODe^@ipU}bJUgNJQ6-dk#49|c8tp-08l9X~)#39f3H{ssw1>Ol` zTTf7Sa@N}=j2XVE0jA7<4GDkgjnH9JOtd35#-e6JZT6sW?G>KH#^HO83rdbcPp{;L zzHr0bkyJxH$~?ne@`W^AtwfFr1D1=$EF)^pkhR4m80W(;a5Mz%qoY_8 z)iAl7%OUKEL5gE;(#GWwQEm0;9dQea^*gKA9*6m??eX+-J+efcAaWrA95-xOl_B5pf+k z35`;4sqp6_@~}Eogg3Ldd-yY#`vR+g^e34>CQPMGVsn~?Mx#a2^Q-ORzK2?(0VyDa ze%VB?RV!0EUk;c8^i@W>U{0^?d#{N`Op&`swmBDd*G!uaS~l9auICb3R-~aKw2MX+ z6Bk38`&j#3guUUlmZ@6P=r{7DskTOpS;K~)bihmGeo5;sxd1DIae`wF zwAn!7tB=@gV_>(y2JZekjJvDj9^jcK4!E&UiNCBihv3MNP`y9;R_r47cE24y2UM zWDEFuyo>Nl{H#CRmFqqtVK#~Wvp(tVqiej|&FVB)0xd2J#7F@UEP>E~!q_#Bed56D};W%~B zvmq1_9++gJS%$RI8IZX;b7upF)QO(>X-DB#ow4uCtWe~{;4@sxw&6){v0<}}OxPFl z-hv}b>aIOeSp@&-00{*a279BYCK?YL;k5Ib__W1av4aA@%E@o8{~d0%%rfb4CRWk` zQao5H2r^5<6S-XD%lv4@=32%?VTUHjUR66DpBRN8rI|!*0Pr8Jx#NHvK$0R10be;C z>dQqwRx~o)uYt4cw{>NXtq;?W9BZ>09*ysCs_9FYy(porQbvo4lPvMhll_ARapBcO zf@W4Q<##% zOO-8w9-*492SAZBz=y?tQatR>xL_5aLqjlZ-9q+~g(-SqJg;e<6SW4S6@E{1GZuSo z_~^VmaibVl)!Bzn?7vVm*%)ajpC`*>MGYd~y1-MdOm>Dfq~S*PXTidV9}LpUUqL2} zXs%`N43WU^XjJ$ifH;*UL4c;DvSid-pQ(gGH^J@>8KAPZ?Acl*ryc5x>!Hgqwgg|! z(~JIKM<+LwK&`6N1tRIG=^3GtcV>!bS6Q%8;2f566#nc{6MNoVncC?d`bUP5tw8Ya zHi-M6Ox*dGqr@QGUo|NY)XQqp;T&~Z7`7IbsH2(L$C648+S({>3jsI^6-80t zKqXi=XaLiw&_usvQc@*XG4gLl-^zjfzosdLB2|^$i2_pOy5Wu;0Rx`}sZz4|>N`3M zdJoMWpHyiGzom>FyyuYebCD`;@HNiV)b4?d8Y5MgGpJ*hBBjYQ;EmAKz;2Bq5Mod^ zpFt3Q=J3bqV969sLk9gb1YR$%3N>BF3oK|zZ2)o~;MUQi6c=N$eKcNsf@Q+L1>!_U z<0OJ+*u%Y3l75Y`xj06C|~zz&YVivwSpi-xm=pLUiud~&rzLY72A*YUt)UyodKkrQ?MNfS`7dyR1pJ`WN#A#}JLU2bao#s5`Sou3SpDZZUHX3 zhR2eFe?j*nTR}>81iw}P4KJ-q2Z3-`9ub`5JGid|Me9ngINNRgpeLk{LJ+lx%Sa_{ z9SC=B*q)vdS~#s@VhgY-f+Y4xDx_sL3?-9+u#fth3iieAVZg!!od*)ffwz!&-*;pT z3JxZDZcD##ly|ic;TB__3V<-tP5>040B3m#AykMAZ4X*!6~n{t0i{xlf)EZbQUk15`8>LDEr8#Va+XjDZh#5WoYdWx}^t z_<%!mK9emU!ZUUgJurf;xeg#!w~LNRdGLC5cOm172pPWOA>hDB z5ghGOu>VUkJbmCMl?ie*<9xG)&jf@&QY`PE2a@9q6lZQ~DDAGP<`Q zCUSRTq#%52yzOU*3nsZhs{@*3(iN~yLXfxwWCAzcGX>cOThL!<^f$^o{qL%~NzxVY zQ$8_QhSNL_BNKabAMv8pRkr>>*Vb2E6xtHM?Tm$%EHS@!)i9RW_0(JGo?3i2!R;C+ zf)wiSF90jfwB6@7R9OE9kVu03FF@iz_#TIP>wn`B&i@UMNMOz`39dAZc6frQRrrAv zn`HRhR;0~w(ap)H=c7!JXZ*iN#L}{}HHs@$m{4hYxX|IlC&r=A!rC~-UxEl!if|4Ky~Fsb<3&bi z3MM-UIY_Ga4yObyC|kF;gKLb#f>QjTNqI&J9~@SwdA*M$jXs8gB26*wUxqOg)#ic4 z!J=~k@o%!-9hi)OASXchj|Y#ds)wiF9YE(t+S{b*?FIrqb8uZLeOC#^bY2Bg#9JcVPv<2doWS2?R zK|!TaBkVX{c|Q0c8Q>3Z@hhjRh*-W}pea;w`-^plKy+KV@fC4%XZYG#hT{?kegO*j zSjT2MS8xVVoOSxWVX=66u7G}cBf4$j!~aR9*|D<*NKPIHW;|Lrp>}@ZV}Wa+W_&N?$3Pae%00gO8fLj0R>iH3 zSmAZlf0g{e94TS54ax<9t|!*m7SisZvH56&pCAG!Y(Cw_Y$O1$ zI6e6q6O1SA(+Ozry_Z@%*?1*1e26?;E_=iCATQa^?)iVJ->Yx99#&x4**8C#2XbOv zNFzzv(<4^SV!lq{Prbv7^THR#9ML06L;BQ|r?q-0$90 z-yTbYxfB^_UC`A{fvipoUnSXExA(j+g7Hisuco! zG>Hr&UPB*e(i&JRK$73Yv$5;kw2F^ z`3paeYxpBxlv)4wj*GWjdOa$v*8}t7Nobr^o=xo2)ZkUe2sn!F^{IvJyIR5qVClsc z{i>sI@d4+VvlGQl$Om;XK7OS8E*cUb80hZt*M;UMsIL$vQv4nC+l8j2ApvE_eKwuP zDlFu4(YEw2G5HOaa8%r&X<32QQ-gVGot4Gn5`w2Fx#s(&X?n zyi$XFyV=hb*zp{a6@nHac*VW}t_Fo~8Vs^>>M>#@oUIFFr~k6(4&lDM^`=oap;rGE zR853GuT8a*T$cwv|MeJ2OZ>D^R471IB&vM>sM%8)$C7i(>cjKjb=zce%yi^dh!}uPb-S7FNbew+o@$MWO(~0A0ikIWDCLFHi?$dR zW5=FVy?0Yq1?%^Waz}DmAFRRME}L0w?I0YY+-GXCs&Kfvo(H;~8JlX+S^spx*0t2i0+P7p7+X0_BCmQFv_~z135g7uXDwuS0A8@D}3$g ze6Il(4UL%m+ogS!T096@dm2S3zJC z!V;>QuUe{{vr0C^n}x1++1ex5nvuqW1rHHn)(W{yxkXzPo7KJ&GzIi#y^`(DI9s+G zBNPre*i1}1#T<>TBwUg?Smzh&)B0NnI)Agg{PmU*q~HE#%E}MgyDo2mJDs)1egT>U zs^jlN33*J3nG5-S5m1&g4qS{PQexWwe624kNagZ_Vt$StAc3Q(--18MBEFY<{Up#?2 zplkg*ObL*`Sie+4f)PwyPL3+0o0gFaIe_zXISEu=3nmFAt;9H+Wix z`_ooRrmDB6lQF==Z-1pJ6gd+pkXWd=)$Tq+8#L1OCQ$Ux5FBw?3@!SM-Leu$@I^Wf z_(V_*>Jeykfj6*CJXpx?CeJn>_mnxNr+)Mc&(?1J?Iyabt>h|vDX>uBE^n30eMTz* zY#tJj|4c^CP6GbD|IhQ&A32K=%+K{iEo_LNvnlwr?q@27#bIIjdoVu!K&M`QmGcai zsc+>M?1ZtU94+WStGBn-6qK@_@;y9mI~%;EnEcx^7CN#4X{g9W=hOdOj+}M;MqK=- z_~v5-0s?0HPYszSUBD3pUi@17U!9K!0)L(Y27fqWHDDh5Wi1hKo11lG5gwo z97+d_bL3#dnaZX0$1k1?*W{3_gpqeKmx=mSoQLPud!`~CN(ML%5dY)v{ls~;j(|tV zjzbj5>t|uu+Pq6yydNUz?R%Jr2LNCe1FqyNEc`H^+Cuc>m07e%Ze8t%bnpm z?S`0@=Sf0zlz@j`FQG2F*P{cA>kRP++QbKlp8w=BV8lhH9YG|SK6jCE%k@w*Ji6X* zWdVM0sMj}#cz0YJpz|)qm&Qif?esGN+@rsc5;iA#CGnkf7@&pHA@cXngJ^sWUOr@# zd%;%)u>U9a637V(b6_sf7qROy^GzpF~ zD0&Lr5IE+L&U+8d(ypwGL37=2IdX^%Bd!hItT*-@sz#e>z|Gh@*!JU&B@<5T)AAN3 zj)hTQM0o3_au23}EAxo-gpT$)B!z;-Ro@w0&OEyIjY%u(%npsi*cEot2X&-9m(GQq zH0UnJbR1sc)Dut7WBPNAQ$nRt&@6ENN2_u#((Arnb$Mg1f`_4~2V09R+JRK~WzVs0 z)6>ZOyu+Cw;Kk5!xxV`Q4v(g+{h>&>?WR7$urg90NE(`V8*YWgStZLH(+nN7bPNDpe*eG^(cV0{mHDa4%vtt#%z)=_p!hMCZYyR2*N*mcJ^EjD zNeaPus%=S6$WeaL2aBxX;>m~(62Vna!IKXrQ@gTHz82G@s$`gDjqM_F4 zXB#3d0F&#*NkJ|XP7b@~VL-W^IJSALH}}!_tl!g>esM&))5;)<`$A_X<>&!UMWKV2 zgunts?)_(^OL^3X{`fA?bNVk#X#kzqJBjpEgls<|uq3W=6U=J;mr_l&YT~(Jd?=nf z<(-HVxkkwT42|fAfr3+N>;h}9e=@SI}rAe;|`0*%l33AceK{hh1}mI|LfXnIU>%R?wf9vJ&7JQ7cfKRZ))UG2`U6 zj%x)Zp`ZKvGrPG69lo=F%Z!IH(gj#wFOT-*Tf}@!}DE_ZeoUu^|V7Nknzx5dyh{jkKisq^Xsa zLAQoAI%K(*MYMFZZiR40kvwxEi_sR7rZ}$*R1%32UX@tCF`@{EVrLV2s9YCQ09{lk zbNZz)D3iH9yT!~%ucY_eyhMeNSm1xzo|vfzqN)R@hnN_hoT8q9k)&7V`Z86#u*+|i zeqr(VOa?a>Fq_PSaH*&qxQ&ftMxaz&2pRW@m-gJ%^O%Sj>c)se0Vv@AMDj|K59NeN#Z5N_RRzfo#E8-jSqg`ppnMgn z;PnIX;pjALst%=>cbfO3;zI2RLT>7FQBvllx_u2O^72o0b< z0`HD6mA;0UmxQ>P=@uR+9>0qG7Dpyk5_5Jo#(u_YKez3c!4zpZ2^kF90w{62PoVT? zU}Z2+Xe}#~STDzj1-|~iqbZK#5En%ox1oMK2Z4yVhSP&-MqQkqig+M{DZO_2*~U6h z3?`4o5I7YPXSlf@DkjoFgvcp;_@_(Lgm^-l#+L4`O=T_wC)Pu+*5Ot3>Ql5eYkfeb z>7`(f?D2b&k%2lPWfE-aC)2vT#_$b$Y zYHAwMU>9^#Mz(ACobDPCp9>&vmAad6njjX7QPoryx4)1e-dr=Bgw+e%bfi1!r0e6K zr-FcrOERV#!h>I-V-~U^R^afFC9nKFfe5n59V%eyT|RVs*{aK5El7!Lh{p1{ndxiY1GGSg!D z6}3Ykki6NLL)^(6C1b>@Mzkk7iyh1A3Ra5GwK+$7KWnlbHDa=znoQYAtJAE9D5%q% zD_REJ-S-sPabAc|3gF%+scHe?IeagpFHWBb?1kAQ+W>0kVp2Llv*tTBhIJNDb(K;W zu}yU`YR>LXG=u%%)AK3q+_^NyyDZIBwRPWizb>$nnaB!afT{7@{98I@$~1UwsUHDU zjIvm2CXL+LECf7&-@5*s!vgW`mV2UX_M7mWG5#5fMgCKL0Px)qO_eL0NdZ|okx)^d zLL1}YG|hK;d42V6(RS3~g?nDL`=qj4cAJ^3r? z9F<^ghbyyBvOU0yrN4MMAOMxrLxc)xv`;)9+d-%g2nMvUY!(bf6p~o9F~R(h(LY(myQ0ANOV@v= z7&SIGn>e7ac^`$nVh#APQ-5m)uouOP%W_=?5AR?=|09t1J>kqhx zWHwGWcYkG9f`nrP{*Atr5z8v` zEW**TIxQ=*AZ>A7zEuhhTlUAI70I_KRYWN^vA;-DW)xYWZ-Ao~9m5k#llw*r`Fy_4 zB^f)-^2QCj&fp$3X@Q+9u(vzSfGNYri>;^D9?Jf$>W1sh!aX8BTdo$)Fkv^Q} zcl;JheV9Z4!ZVPF@MZSPiR#+`!MO|X$dh~Q-Z|m$m}qoTI4(UHj}emldltdj_HJuN zD-KRkU3l=i5$}!LG{kigN=-{3pKgXsldfGnJcvM`JG*`?ctg#I1c4`1;Y=J&GMDw9 z@QhOGxGx~fhX^sfnCPId0Z9tq;D_t3Y4Xu@lF*0YHc<=MnkQKs}z6hw>CqZv)692 zo53|vm4M4P`Dn}cugJdMHV1)s=I%I{&fO$s9Xv=zcc{p;izFnnhb|&^8MoDn)IwZG zXDKsi>=|g*(&a@e*i0ZfM014K2%k!jemW_1b0omm?q|3lfK$M33auoUTE(v`v$l&z zkA}trz(M}qVxrNTpJ^8Gxt*23g`S0fmw1|XkXuIc5H;d>U_6~=ELoShy33iWeP&-G zG<#uVHD&B0#>K9tND)|G&KgC#k$21+GUxBe!?wvG)1NW5c;UG4_#?Qr0N{!|PFF)HW)u+C@b zEnG?&HUi3*WkgdFl;7vOIZsQaxDT9+p#DN{ao&RYM4D~(L(I@3SR~^i848G4 zl0>V^dKEPUP$&TG@W(NkFnG{i<&@hYL277c#>kF6X(Twd|x36@#P_6*Hx{txvD7%@Q=zW zYF8X2OSQL-VEhDz7dLP63id;bZdBUX6^54FdPR2Qj&_ig{y3SBSnri0(l;pw z=IMT~%hI+=U~Q-N{ayFjan{s%&s$h!#DrV@IIuU>{!Evn3~Au<8-AbykWk59>^m`H z1b(Mp_ijy5-Ab4UQ|nOf(}RC)GU2v3@vFnYAN?4*`SgQbdUh(=VGG^%e{pq=!JUN7 z+K+A9wvCN#+qRv5Y}>Z6v2EM7HcmEr_j%9x@|>!vsp+Yj`E*ZBU)_CQzt?43iFp_B zQb_D-w9fb-F;TmK55j8I9&cbmCH=yo6I$$ePe-#tGhjiK%$ofRW3zeJXOP*}rqV5s zlkanWcCMl>7eA@6;50;sa6qT+L4X4Mrm3`1QR>}vBnS?nI^lVLa1^o)X`n}bkaJBR z1&hLyhMJRCsr4XAwqXSK`;56vHXJ6Y14^!mm$KT*Um7!?QY%jAe+9fP@yQ}bd37H5 zJ_C=(R&0z^NhNU6;qefvVCKVwv*<)K98nI?VtFQrDJh0dGHSSbIlu%rl4j3*#3b_a z4ZmBYe2H%a?KIxP4Ras{{?0xFa~aQfK^*O^OU*@6*oylgt1F14^gX%Xl~ zPeoul{MZ7al&OEmJW}0^t~L_*AzHhcQ1x5HWLINA$7zlXe}%LhOwAC4V_@E4@tU-) z@i_EXS?M!mZy9Oi2H;p>R#vaoe!;2LKJm%v+eELQSx%Y ziR^z$n@6`ov6A_ur8A2#^cUuSU7gq3F{b6#wmUG(Xa5q+SLJIZXhX>bJ|>rIV)Bc2 ze+XZRPA3B}K+d5D&^$g#BlJzuNDfnWnE5xX`FXn2{0R>yyg}jPPNS1-`4ebdeFS0u z+`f3fYIg!ZF7NRj`N<%0(C&D!Jw25XYQ_O@wUkpy*VFa${eUOK1s=1x(#|ga*Z`*3 z_TZX;A?}XiUwcgs69lomgI9r!GG(Cc>5xo&c`&LY07KuD+>|gRzIvnk^u?JGx0;6M58Ke0|<(?7h1nOdEM& z=D;OtBN}@d8eQJ6-xCwEXO1FtfU{*LN(y|;ya4m`!=Y1f;(n15~} z^xtm{0lUIJ`&S8RYzPKIiC{dU1;-)#VTX9^orcA{Yq26WmtQ1Wt=KEf{*2Uek7q$n zog!LrR0dp0AILt?-)t7h*jm%2qOM0?jglB0&|G407a-`a4I~A zs9la4@H+MrwtIHJVHj3OLUgG1>hl7feX`trz!UJ%AE0=64p36!CWKy(4zue-GSiG6 zew1;S^bfLZ@TeNa1ROQjVq=+y0Prax&dIn)XTylmN`{Low*DjV9OCu3{ z%6b-8JPTgaO3CFY9BkZGn@n05jcvE{eAvr}iY(p+xYfqCuYm%W%)K^Zdkk9o%wE<; zfWYA9tH_p<=Bd8Z@jZkYRMqgxo%@BQ?$zt^799daynL9=?nYUEgY+ zFA2D8fKfY^-FjL*B<~#;W6!~Oe`rn(!0K`3^P!*QoMp#ZVI2R21oa?9*3Dzn*refL zA1NbQ;-||<%W%~#SwavLtPZ-OWN`SNt8toW0+r%r=~r*y_~gbZRU?gfGfn3qEA#R2 zX1{3)`AT(qBi)NNxWjk|3gZrO?sC>}px*_5iujWXcZ@h;$tp+|4a^lb1SUG}DCvCE3?>d14X}BjGe@Yl5g510} z!x8{Q>v}77oN>NAx`EWn93sC>xUDTQhj7OpZGB?rJOO{A-v!HCo@!hz@XW!0*W2mL z4!xLgLQY6D%w1)@pNj=VR6zU(Q07>Hor6zCfzv7M63(At!WcY#U~DzB-Xj3cfGU!I zMY_cDek27l0*qRm+~{TDtXrUya)e?odLZCw=*SFO<#a-aA&XC+>k=j%=Xqnn`T#-9r5Sc6ykW@J?t(*1^ zy6B{Czep&q3J9rqPA*;|MfT_Z`wm5pv2E|!#`wpbxVzrxl~Tg2&!%Gy=Vhy5 zA#q#Hmb! z^u^Sz&;OHir4bIQ{z@wiAW0QjUq|UqXgHfUD@C>+4Ol0a{)_yl_VHZaKvMEu>Izg4 zC>Ny;0_&!Z>@~T_DjK`#>jSt(@w#sT?w@)x1pac4j&Z5krPE{XL`R|R?F5O#;o&dx zY$-=a*&k-1IUHb-0F_e+ZzXH47@BBnRH5JBjEL!C6{;};;x>$rQ4wt@yfkV+N!8+6 zs>R3fRrQKH!oxk_0*xGOJAR>14%il(4;i|g$_|~o+-ik|YLpz-Y-9F2&jvowca9f8O}oGGp?NW4-M_FOK7$Ud--wCJ z7f=jVEt9nccz4Lz>|gX0Tn{YK=AVQU5QHT1(HOa%%+lYc#4;%rQhR_XM9|P(LSFWLK*Z3M0Th633tMY{o{}LD8C}%q*1@_x^{(3>~Zht^3nkmdABmj9*sEqsq^Mj z2b1#;TAYcGFeS?X_)OQG(Y}o!&dwtuHQ|39gKXph)4dV+s6f@&jk+k_rns@ATJA)^ zF1e1PIkh_*6GWYXjNTIW>xE=mdgFHnv?bkW^9G@wf`VfE|qKgDL~J84NgWjh!$KF?F_cI7o93 zLk>0){ZarSoAvq~ynl#N8zMYC6rnE0G&U?d5jV&01V02DcO=VytW142Hof|TzTdeF zw~<1)n;8tSSx2)K9(KZS4W>~LQp62@7TCtYTE`n?UYgvyDfO}dN>{D-iYE!^KPS@# z*Uno-5P!EVSn+Wi=Z3W2b5T_jF&>r7V&~)6yGSkB3cQ`cnrM5{(&oAqC4j|X|01E> zhqdMdwcLT{GL|w@NpnLl4;W_n)|BSoN2_{O?h@ei34fSatP{rJY+BzYba$LN+e8^O zyL{&Tap4}6N1=`dyn&lEv$Gg^0-yfDd46%}Vvo9$CL7*-s`-dK*$eTlWCw@u)~Rn1 zg{>@c2S~-*?qeWa}jjq=@D4won7nR2YYicett+6$Nsj=Iz1KU?(F-C zUsS$zXV3;$%=s3Pe*AjxR!!P#a&)htp;5a~4pyN4G&297cJKnFsUJb(ErfPj+~%VpFH zAy|DU{JSW!k@5&EOZ3w@HsPJfb0sa!Poj(@0t0pmFh5bSugl=beQKrW$SA7)?Ea|j zUb(i(rD074DEs7eK%wg!Be$<%^&r;I&cJQ-IaYYyVX3eTK62Nkg<>hb#c^_Q8h%9d z8-2;_j=afZdZer}n@kgEp5V~Xql9`j8kg+s#?u)bR-<3r2`?mI_vh9>oz_!d5V#$h zByZiBk&?p-&eE(s3?{Y<*0$+&;YECuK@=ZS7_`j+uwU)aUXt#KDF`vNFo_j+af~c^ zf*kGkE!3&r`$##poAo4>Gri+?I8q0$dvE^c>AwfczFbzVTTyzo;I2s#p$m`@e?O_} zLwx>+L||3mPjsal7bFjw0Ybz3qNRksU^P*v|49plm*dWNe>4tR=PG?E)uz#}8HO?mK6ucpxl?^tOr`)Q8-tFik>7shiQKU?pg zIcEH)%fi*mqsAi8&?&*+<8g!zK=EhR>M)QCz&36Xy`U6QJl6@J}MWYOGylgWnD_DD)gVE!{ePT<@_P#DQHN&&Z?2 z0QngEd~m)8<^*vS77IzCJ~wlmEU#@R#re1wG24G;dL|H0*N%25xmb1f^I?-rp|5W9 z?_qz6$216HiX*j!&z1=;!xpy9#>NWcjlKxN__j2wR*?Rp#XxmX(jkXWSswCmND7ae z`r|Ci%5w)49ivHcE2P-l+l2Eb`dCbY02=mR#~bhZAIbtedo1#TPhr(pLH}U0XNz+@ z(EJ8BMR-QZaG?-@xD<%Ob-G60Je5+U!pyB$q5o>&;tysirFy; zMN?&29UKIKSXpdEoMCY!7u~*0_N3m7j09l*tf1F{%QmEcXzaI7dQXI@8Vq%fZZ-AumQ6xNA;aQ*3m z-HXKnBupxuLY3ZXu7sYNBbe;}RvyQVHv$ZUmScFW!Wl-?#R5jz#e!oIZ_dW@QHjvY z@ko zX5_-YSDOUy9Gjg#Px5zvpOAI^wllAVIXiLGtJS1GI~$j3%?{;YvDe05u`ymxf}=lP z5q$M0x5b*Chn``L7TLpcs+1EEXtEA~TU$kHL8vkg`TKl$A)Qrs7P44J??V@P2b0(# zc?nI$*LyMRfb0=w4bXy<_Qm8tQV8#1Dl;2yXSs&ior^f;=o*P61BMC8(k;f4XSBUS z&{oopET&YJ#gXFgv+q2X?+IohP!Y#7wc40}99bqVt_&7vJr6!Sb_Gzk)mLCQ)=qez zP1|vkV~_C{_i7JT6p9TsB3^D5G33?Ye;dPEG{8L&+c(C0C7Y#ST4B$xbkH}}chj#B|)oq|7vfSkEqzD|+gx?>-ioN|U)N@ogl z2C8fgj&iRWKN)m8K^Mg&|G1T@2p=a*X%2Ue;=X1VL&qJrlB$3Fha_>1oYu<>7#tO7 zS89Rg=*fKd1vrtCd8wHGw7h(Uc6R?-WJZ_ZD`72`p7eMk@#y)&zvy_H>tcQ z5INAU|B8O>Bu_90i(|~O<;>lPq#|`ad2B|m+{ZVS1}MB_|H}XisG4t4KitfEnOePz zIc+`0e;VYn!v~MpB^%SFf{w&%mc+(%@wQU04+yj4?x`n)p(%Y;MI(!>Wlyb^UF&Sk z-y%fzUpD-`BNfeaPn+}Mi++vQ{;^>$^DcW%U_x128b4X=tU)4=Hlo_W_#ixnp7=T} z>|-5W1vosd+MOJ*k1&@~CE+QtjxMsE-Ds_=8b{MeS8as;V5Iwzk72Ovh6VDeA{R1q z=%6vZF(Zp|Z=#atv^sywqc-(nxVjQY0qahw0C%epRzSlLQ;RaaRwPb~wpI;&VU6pq z#p7Pd37&tLNak*OYk#2T)9F-AVwhX(B+(3<2CyQb+hA1HqJl#-rD=f>9ISv#cufY; zaHuv$5Tx&|Su5RJPf*~kVaQf>u4%DecxI>1RM+R|W~rv3n!G)b_?~1XYDm79!iO%^ z!_3B6xa1RvI}xfjx-oK930)iMd~M9wi|XxF_iIfvNlFr(3oz?<$biS|Sas(k#A%LCRl4um_00~j3&iP7ktIC+6F_F` zy>1XRqDb%hl_ki^Q#F6?uLl5E!M@|Kf#yF>|8sE=5Hth~9u5kF0EzY)3W-JryuFDH z?gZ9BjWM04lt54s%Dg=+p@f0BS%eZfP^<%n=KAMyC+0(i%HWL0xR}?)(n}@Zs5(B! z-#$(?&XsCQ;xL3Q2P(H)3^mE3;S2M>`=sA%A49J2KtLEuKtQzr8P=mn*K-1alD)yR z`KRL^c>9VpbRwPbiF|rmG|s@41OAW>><74WcBoFW7XYKdMoI>2t?7OL({YlL5#^0N zjeceB%!{sbPd47(ou$;h%-ZaaYw2muz?J|+_aVA^$c@`!cRDUQUn)G^o{t8^JXiyy zl8c@G14u4kz~`;O801fg_D+ZgWOz6cFX!Bhcu&qd_{8jYg*QyxL43c1Nrdu<}%%oUPiI!wAM2q@T4d+afc+cs@9%L*K?%7O!fu6%JDcIrKp< znJ_4dp%m(8^}LTz!GKnmzw#msIR4LwBlrddB)t`WC;i9u^5$7OMZ^{};s?=7aGpav zILH&FeY_}w%2rEvr4?+r#VhO21d#u=fGK|c7*qk%lUHBBuTPum{GH}tzLycdWi_cc z)ZRA4Qj}xFSE0g1i)r86C=eJ+mLdRQ5D%jjE?K!>3jSy6JFHnng+wK%PIJEZCoW@3 z66=Wd)EjzLd5e1S3WL>Bph8;&ebp2 z#u@1rrEu$NyXC}4Q25>)+*2(nUOuijgqgBkOI>xiqi(OLwq>`oCgtQcsO@)GCnc*N z?ZpV8W;p|hO`HKXnLFcy?%JcXV=!JzRi50WRZ~v2)3x>^JZqWE?#nHIB43BBQ}@7K zZWKgiGJ=_8r~pynQYZgSIx7G_8`7=KAMWn7qEw>Mw2EU_`NNzY5M!#wAwPU=X z3CrQnEszeR;}fv6178EmJlckO;}+ja#VBudFY;d#53lx|Sb*UUJ315(62Ykmn@8Ld z#$i3?ijV;(8wA*(;fgEqZEZZ{pTRR<+*7%bF3>X%)##BifxAS`SzdrUQ7iFyMj;=8 z)?(X9=8>()JU6f)0lmm=%;Py>8}SL8(V9w;j77oJ1`Pmfk~73*rVUbr`5$&*=P$|5 zs8WY!9}(U&J+qldW4ILW4mif17@X_uPpm(A{90zhAo}C;n0)p7$k?tgdBC{Wi=}hG z4TvxXl(O84`&ToLS|ot@5HLj4j*z*_4i2#ew^;LIJd4PZ>_Il03)Z*|M=mBvCKYRG z`W+CRgi*)8@*stq`y4|Na8gr$QLqv8>}MN6lmM)Y%7R93y27JFW3;D4#H908UZOBI zb6fg00!>Li8{B>M?8lMiRbkz6$fc+fi|pp}fkyZl`s1coHvyP34goLRb^0e|Nm=Wy z*t1El^0V1taRjxi?j6zj)Isc5dChke`+l+)x3+p`@ULie+kQVxc=Z?!WAp;;KI-aL zQ1TzVGoyrM<2Uy}*bI-%%fti$UujKgS|52>to5J2b~| zP~TyN3SIy)umNJ;{}oW#(#E2VhATj3xJ$SuQw~9kgSvvbOAa@9Kcy!V51YnuLx)X< zqxogJz;kx6piogd2c5&pEC!5j3+6As2YiCchTcc0T{l}S1>X4nPzZ!=pWBDwS(qCc zzOw5gIjRUd@&6_2P)kB3!|5Ozt4wM*=8EDBZq7A#Q?p-&cRd=D&m$s zW!P2PkM3H;3>JS6>umUr&Kgo@6cqe-Y?2;pvJp!>lc#8hYBw2zjQKcD*qzCOq(a4N zd!Z!XMhQTHqNQtHR}b5QxMl|*$6*hT5-0^P7}-B;su!N`WPYGtbIP5^h&)@QIB?)s zIP-$0Z7uWxIpd+79D#gJC4MT5`bc;1OM^ZmDXf(Qz2Cav3s+H=bV8I zl|K0TYcpmh5AO_n+ezNZE%WTc48G}#uDN8#g z7!P2O4uOvg3%JmoC27Wt|)Z{39LN?lerv&uVox7W00=0)tZ>j>7`kH79MTUGl`dEvk~F;*mh`vB1B zcsj*Tx#rsbtX9>{xbmIECExjcN9a5OB?GMu{p9538TH<555l|H+8B6Gar=yuJ?tqA zf)V(Oq2^suXTN|c`z%nwW~nemQ7H@vhMi(eB1-9<2Jq%wmUv;-J3U7~zy6ff;L+v! zdMFy$zd&sYYrx1h2qnk9p{hUnx&rcGT7#<_tjB7rd+%cFN<6xyqmOk)4l6BmO7Pt& zcHj>@y)c}T4G=egjVb8}85qu1J{(5g@=;I0xUn3GZOXZ^nhZ4`>GDVwtY009`_RWG zgiPJJGydgDeHN&OGilOkXeulH6?heshq%>&O80-Uud5K&&_UrR#;W+$$N=pbK3YmL zEP8yrG!~|jvHlgp9-4Ltw8MT|BhW2m79ydRky63clPy*EI42_y+C>mGl)Y+h9^$!l zYV=8zHX2Ogqdl@}8kzqioFli}rSI3*5e)IWST8V!Mb#kSKObLs^->j`yxxGFPB? zz-hD1JT)@0PckNcn+Igu((b-f2n4Zo4otS0SdMAOJNM|6?wHS8^XBPmxQ`QxK=e-6 zjU!OihH@OpDLrxdx0@gyi{#20O6))jW8PXIAqSCZ0b3ZKO8}BJ+FiB{C2^DIU{6yf z#T{PsjPgLp6NG!JVYk@P;m@R|#(%|k_yn1oucMmD`f^jF8iFS%KppihlyHJw46Ikk z)W^xEFlJA=%{HbDz1M8lxI`a4t&{z7K{fQ^`^`=KW=WTjJsp$V82qISLiuab2Sm@+ zllj=d;?=LBdJhoreU+8b=7=|WZ)$j5NOWscgRU5*c~MJ)v|h~Yt!A9}(2v@?p=USg z&4{((i{qOb%kSx*ALHtOo~wJXcZyEP6O4%O5R!JKEO9Bfh)fy{F$Np*l))we)}z7? zIx$VBuMO48+K^#bKvd#Ts-!0Jb|}BDnLr{ab_Vjaff;nF_Hk!5-bbaidvo~wDg@&oBwyZKgl)749%lV8q zg9JHYZww}GqAAPiVl~E8M>zi@NVzT6v4q6sW*hzv?U=8^bodycFDJJA3&9{!6uqE~ zYo=liQ5dihUI;6lABZt29E?nPCqY%LXlp`9x(EEtBr76?0Gg9$anCYh-Z$Xz=i|;& z=pl}5n4sX?w7~i9O``V|*=up7jx2E$Va*1cgPJlXy8t=~6$i1@wvsq;%6}2|s*_~_ z#RC(a;I;`pqLD)_i^Hq3Z%*Mxcf372(R)I>M;CC4qHjN={F(!AXBBy+ldW&xd|{_1 z>eI6ChJhCx`jF)@wyTNnNuu#fJA6FxuqdRu{i)5?uKktltbdV{EWP^*tLM7i5k=xN z%(TTUt2X*wgEl>Hc;PwZkN8E(>f#WW@Vtc&L3q*6vt-;FDK|mLf6n^x$DaI2NB?fw z{%<5N;XF;!8>+%xl;EQECxb7QRKNuxxVJ9eSUz7&f}Lt88*Uz@FwCRg>C8~*#TfxP zFs|@WTR@^hB_73oeaauWsmIUDmWV|-duPzH|GE z##DHvE`y{fR9ya{Lt&Vt*2xn`K8R_G25hbV4R}ZhriCl1?z=`)yAXYZam2 zh+8^!@&#J7Gag{8w;BLF)`Ovb8)4P?S2yaQF~*fo_a#a+TCJt_-OTZE0|*(IJcIZA zr)knNaloUZ5gS&OzcuNm0V9zYkeuXQ8d(vQA7#gX{l{k#v9MQ!-^Ci&529(^hoZ&! z$TOc7YP2pXa$MpeW&a?<-5z+jkBNUHy+FE*;SV&vukv;Jf4uT5sQm85Pa0d zK{78q^eFZ-^ad&&a7T#ttpnuCZL;q1MO+MWO15u;3VW}xbN`)(it$fCH%!rxWIXnO zR;U(u`T|wa^qAA_=P@k^JyPRCq3AQWx)j{YPrf(*q3l$~4)mM97!5By#!^sC$DDkw zd!}8U!`*Rj(_qFx4gb9Hshbn`%xb;IKR7E2PeoIv`3vp`=vr+q^nq}Hh55J<=~-R! zKu2+P@V>V153)I!i>XQp^q4BmqATRNF!Q{cj;eG<;x3F|1Fq-gT=bjt5=)o?cv9CQUGzEb-Q2@KHe3Arj9u6Da>3zmJI6+)N$bbtk)rwyj%)Q6Ig1aK zL|6iaKp@ zQq3B6!lnk9RxZmh+T6oi4Zw07OuA!F+#7ty?6L2)`oo83#MYokIAFA#QW?wBO4>__MpFlHU*GsLklj(q(j6zEDOzt=ts zvQ%DdhDa}RPZ?W#@jJwIzO{Jj#bZ>T{Is7fla??V_QRs1kY_NSFSQUa*jKTLie0t` zhn)XG;pi>{p@3$DSQzJR`|2sirNPavBKh(FJ($3qtBe%om`k>8JSOO7*DP zfs@|tvrqT62ak6fUrz!xPKn=!eM>!PzVuLJZwT960L?!^b3ff}x9DFIAg!Wa!WULWrFDprBor4&w<0E9jbWLR#qel9 zeY@`=fW}6noqjfd$Ntm+<#|2_3YQ5;45q+?tnfODfhTj-)lu|}8z#dPu>8b{`f7}y zG=(;&U%4b@Rg>aT3;h5Hb$FBT-bC{}S3iYbLPTSDV7T+?WzRs?v4WLSN{_3T7*{1a z+Hti<-*6{Skyl15BYaeAH&F7e#20K~cyg;@h9I_&cese-ty`kedkYcs)Aa+^5lzu` zc@}7(KAEAxjc?{tZpPb&Q6&K`HMlu6m(6Hi+G(m87_**o2q;=23?3x`(@ej%CxL4s z>0Kn?LHVnkeOs;Y9lNb|oFDc($X6(gIkb3DGqsj{ZenAcZ!)B8;ro@ z6Ss%?fpo%=>obLVN+r&0pXdch%As5dgH?*m8IavL#1#J~^&dyB(Y0dlRBy(C(S<@l z2cJw7#Ei4iZ*X*;V5&`d|rD_SdMMydJ70e9( zOOjBT3AaWAMW3q7k4wNu&}w`J^th%~4@gm*?*_Uqrn_1y(u zv2wL1W4(A5rv`|0X6y5lUs;y@;a~{bd?QmrD4`ABQsH_!Rdcw#5gD$snX23+G=;eZxEVq0IoidxXTIPJ>8vYdd z_wSn)V)*QlIroX>(wQ<^ai2T1!D@I)85b3-Mp(3e`w{jSBTv>qs8U1pjMG=B*URH` zsX)7EZCN6x$x}*LvSo-SM1mBPX%woj-e|LF^^E~2Z_zW^6*CGV0xAY5JH{Kx>HoGV zV5B3ODUphjT%+Zn(G{0S#Yh=TgbHNLSiyk%dMw2 zHqC_|(`{EpO4;?xvAKw6P9zsy98%y4Kh^Ca@TD-^*#%s+-9d#_f1{9!u6aU{?!l06 zl?MWViIE)*-xx6jws{Eb+K#rVuR_X|xAnakrIZzK4!|Hj!^{;RR4}$tGS=bcGj=7_ zv1lOC(R3ko>9}5%$%p9gwWH^~Bjo$bB;!3h)7H8>t`^rCLw^e!gIWS>&+E#-_^Plu zfG^mNdXr0MUlo>Spm`rpUxE5}`B%+5)c8O^Er_ zPN@bxL)CjhJ;e@i{YZTFyJ+{QBV-zNaY7K~P8#o&RXQQ>S4=}Pt`2g*vcW7BBq|ob zN&;#a#bq)76atR8e-4W80#eK4d|`lJc5jr}i!wZYOki`aVuMnlGj zEF^|Glo?sEMQ-TQxl^T>yWa=}HNgNc{#o4C_E!Y;mOoNeUwugzPxqlHGilRhupJ^u)^sN?NfVUy!4+ z^%BGuOH&_1p2toaZ9+LR@5RUj@n3D@ytF|;9_tI<6Fu%ck}=-{dc=Z^gY})13Uw7Jm&XSuO6GNovG`!WetHiu0NrF z%60e?vC#dR5Xou2^7CbU{Tc4xJBH8BQ2slZb%}JUXnnFQibK~B^Sh8hO*WYBw}ekm zAMpE5XFEscoyy-MLMaT?aBxy%3;L>-6{B;7VRzs{bEI>-Re3=!#mi_AlDm|x9q69^DcHZ%|r`~S3|cAY_>(g~bFVA9QFfe~P8vmy$`EKQ)5 zCDZ+5fhhnBbJzXGuYQo7HD^LUtw$Xg2{ffcGSSM}8zZ73)hmH!N+ibE+XHgdHuH$`3uRv-Wo^uzKwMF-)Yh0eF_DnF1ZBS)p` zHR5pAbT9d?qND|a5M|$XYR4jQ&pl1^iwsy~%B9CBdCmp&o--y?-{vzc(;^gNLvR5X zUvnf;jeBbpxF_8o+K@O%2xMpeGvmbL_aX@F zeI@{l8bK%~dJpRQ>wHHm2qP4HQ`QIy=@V@#T*MnB=lEFXx3j-pRM%XT1OIN>$Ce{Pmu#epkP9#u|2G)4IGNY0up5d{U68o&aGV~*UQ#d zU&Uk5XF!J3~Oz^eqQ z=>*h=^f84URuhIt)feag@4AJ9f&waWaTGj9=^^Pzr%eEs0Q^(?w+0JWwLQdcum}^| z%X$zlW(}xKG65iW-P`HZM$!9`jha#+Qg$&`H=CW;Wb-1Reg%YayF!4Sk+pRW7Y%&gk_7OLkY|6 z=10h!e{HRAtAGg+Jb28HVY}Cr?cPyfrhWAa_TRfgmsR|iaFaFtIaGAJw9=SiPfhbT zZL4z5Q6X`1`}-iN^H>qAJYg=pgPNWT&!fXCfRYe%I(A1M%C}Hc>CP(0AM2@mwn5p2 z*FzeuRT-{v5vGC1fU{&7d>zT;Yw7j(^ZBbM&~vyk{{S)sJ5Qh6aQ-!W0)p>=P3XU0 ziDw^Y!K{2{ag?O>)$z!D?(3^MYE;QatQZTu$%&w&9y>=(XtuabvP8CO=e~@?S#jeZR|RA} z>@`(t_Kt$R_Vsu8IIPJ#3cgk0J`Yma8~OJ?|22Lg3ZNFNQ9aq|8W7Ulj&+1d$b7zzw$O`E2i9I6s6+}$jKZvV|JOnzULknDHuoW{ly;$d2$O4W}>pMSf#jrjYO( z{>9crtW`sqmh-F&o4V-M=-V!<4x6|E>E_L79j9Ld5>>m3N^|Qm$s=XLuABNJ3QS4FLI(Sw)8dLoW*W=nc5 zPG9IJe)OdD)2XkESW%QRu+Y_E#MZY$ny;nUYkw1(wC?`hcfk5Ng5(c=1+;ABQw;sX zs*@>3?A83^Kx#;}M%M4_4z4U?D?H{nguB4hMvVLpTBJ0zK`_%9334?R&e z^_cc|O{=Q?aT^?3R}&_TPYBzASLQ?n31rV5L=z-|noNuq4%S?x0%Ve(ij*AMOXBui zdCE4P3Sduso8P=sDS?0GnyyS@s1+^#=qTTW9-J#B!8`%=z@Y)1W;~AH;U+_Gq5X%g%6vM1gNhhKxASK$> zd(jc#9`9Iso@|mX1AJNIzD*X8pVrW48X8GhcZ&0(mPU@mHv4t%n&eUO&pii5QfLXx5=MyM}&K%^(sm8BVPY zL|!zP@10(Rrx2Y!bu%r3ud;nx#TdOGFriG0eyg*a9ts^kS&rA$AM~!TFor%~h`K;% zg-AaRgd0H$0A#&OmY-Sza$CN2+B?qkon(W+iZY6`_JFzNSwmuwmKCUX6I#tVYJc-g z6R<{E$CM!wWS?oLDGi^5xNjeic&o0VW$dtnKSh5PtIH&lZqdZ|4vFX+p*+^!GVAtaDagR zzmXY5`oE+U8E~WZ&&W(1>3g<*ooWe3fC%`-QyX#tSrSW`m{~Y7_n(cKQ-CosGv!8z z`@>$Bhc~bhZ(`w%tVPX0LHgOt#?IDOPs^r*YO@6Z$A+mvf+t4M_1Oq9q?2qX=ao#V zW#xDvbloyYE|=)Rm=O-oAc;)`$OwDvidJgVmgDeL7XWu5+(d7MUH=I?fjATq(dgW<3xa8nXs36js)&6r6GH0Uiz>$SM^V5nU8kZ~ zVOT<=ACPBIV|AWH^$;XhyO_4PkoqFojLwvjNCC^LDjSezwVq`(1yWqqJXhKu@OSQtG%&jopMF{1W*sNe=t*c8D2L8beNRX5kd5@lA|%# zT@lv=H3FSt;;k@iO*EzGuu6nI8P_5rg%o{W@PW=7ndzv-HJUrf%kZpog3H6f41G4n z^r&Lx5r-+orMju7@&&eYl~(RuX&UqjeCGrE zZ}6#Sp8;iYp>=VE{X8qJst_3-*gmX^KOxk-_#SmMsqD%`Of7treOJ1U(xh~({@*X3 z35R->Qp*rx6XQdf83=ncL5KIOd*#phD?llrPL`s{kPA^S{3YU!Gn6v+lke3MZOPHa z@`lt8mWBgCm5;FsDnL4@2(cbs%aPd{3Vq+idq!`H*jj2tYyS9FK^;zpp02y3x(HuNxf?en^I&`8Pm?}m;J-s0GoE-5O_U7;dZmDFTkyY zZqMZW@rW8CnvY0|=LMS}PH4(j`elY^qNJ$L!c;DD3dMQnwWvKNd&PHL@ZzFKn=g3< ze~+j$b=~n)y?^}PlbM~2ME2fWS&>avQC28>?-g!jC0jX0gf22lk)08;ZpKAs zM$t`1MrM-VxmSIE>HPC~&hvSH#`B!>d_L#(Jm;Jz>`>k!t=)1|bp4@$?VYhzXSQ`C zp>^9XyP3o!R0*$8heNvgP_LIxq$y=#7t(+f3 z*;ic2W)k2l8@tN=9#qNjvzIi!iD>@#m}9+S`)WqWJccgi^pa13%nqSvmeHfO%#4$K zw2r;{kA={V$+}Lr8=@P8;JZ0)tmLrFi>>x%ClS#?Fsll$=>VB#pVjqf4~KIJ2J$cT((|pST8=nI!tf z_SPj;sI6YVZ_F(FvF5W^$I6Y?F>V`4_b$`Qy1A5!_iOlQ{o!6zMowb%2}x$@jRvVE z=ZWg`d~Vb^F7rj!jM1frjlm}mW~#s6`&G_#;H-W)fo}HOJStk=^xX_h4jCS{mp{0& z71Ufj)5zI!LH2ES*Y?^9{5BObYKLT)F(_ci?cCs*tDTWyMD+k?xVmeMG zhW2E-o(gMX7J)$@UqMt>uiAvUhG;hGIlJ(nZ2)hy=OaqTOx;M`XV7N8rZ(am7?soO z$!HtPs1o~Bk4tRIjSqCJH;5iLR!PT)Jk>iF?g9M)Ldz-iLbDU%BI6rD<+1>>XZ#Kp zHy$7QP5q>iXp8)ASBn3rR@US4lPg2Y!kW3vEGCP>=kk6DJ;^k0`@)eRbWLJgGX)R* z+Q1pLmv4I8p_cFZ;(&exZx8z&JG1B3b+IinG0Ur3Ru{dk4&Vva;cOgVZ)v39vlheN zrN<_v2p2DN--Cs8E+AIeI23xud0W%Tyq#|Ko{2NpV7|s-*&CO%D{;MmC|zDfL0rxy z+=0RU0}GjEqrrXyK>)t^)99D0qIX{9+HkSP1i!T3s$`)`rp;RrFN4PdH%sB; zhJMfFwDPYi56KCPU+#(FZ>8F%p7y$F>1>Hk$>3TbLOpSGaZYPlqV#E-)Kc7)shfKm2Msryl_8Ob#{ z0h?DC$|J~&!YW-&KF7RMcTd^3;`}ztQqxY~3GcjnURpFl$>%ZAp3}9JOadQQb!q*3 zg|M0vQ!D(+rQ<)(AntaG^d^@qome7>uK2R9@qSl4ymK}B()+!qL^?{N*31{w7~8J* z?2X8{lfDj;=ddc7d&zcvx_-$ZKEhf%z_?ql@(veoyma)0LbAVJJ0>iKZl4XvP0G!@ zdsdq&n3Pr-e>X|dd&n#1hJgpIM8TfPhE*76x!hq6XY9On-6mq;N&6tN6S^&=RDr z-n`>ROVL;P1mrpSwSv=J-il}p@)3-nI1dZsNx}l^Pc@2^vGv>uJ0#(y*)BRe}*6Fg(-GtrUstXpAEOV=%njl2>={ke|> zzvHf=sA$ZtIf{evd`I-M5c7*T*_z=el;1fBqJ=)E{gl5!T~FSnrX!jrKBv5hKCel` z+TS^)+y4ens!yjR-*TJd115$KDR8#w@``K~ZBGi;n5xCPiMm@u?A@#2)I`&L ziq=XVmS|29?pK!HWZH~xp2(RAvLtA~Q$XjO_nI5H%F@(*=~df9GP-ooGE#G^WWzm}cKSY}OT!!wvUNsCctgD^ea z7X7p}CQt9?i2sxUjTEW>sk{ESCJlMF&Xs!bzTvK9Fy25QqU16(X|s*ae0~|sCobJ& z?`me`cK)@E|0eCt9EI>NJq%(9qW6u$k9xw zyyRQjOjA>517hd7DS7RrCaj_CdI-adLTAh#(&=-_{C-GrcuFT~T9I(?{JbstiazML#&DGS$9pL1pNup}%wX z=L#ubYv?+(%D;;E1^+w1gU(3!WdP|7)+6B&RM;83#cvdx_o1hJB03mM2s`!61iBPJ z8^TUqIje7bHigH@JH5vp@3|HGoOaNGmskMYGA@3E%iMGdvAWD~f=fcZTt1uct=7A5 zL4JPIemU8$A@+5Jhi(p+MwvIQcSja>bXY1%rY+J-oc4^@KN>npys=kGQ4M^+rBqf@ zed*4-@4mRW_zaL5%=Ls z-_l(oX^A|6E=Qs{^<7FiJnIW#69F`DStTCw7p(vKSprQ?`)hncQVhHf$9&$}>mQAO z-0~_!#$6(dC4FDM*}bNK%GQ8V9l;X9ZALk2X`6gwocu4Gcrb_{FiDquUcf*_y?l#2vrm#abc-VD;dQS5AjeH^Jmd# z?+X+;Tevfo1$DXM-1?X}T^f#j<|)S&0Ys0@yy}@C9n^Si&U>Yyi*6%%={=8aTO3mO z9WvjCOMCS(+R9Fa&R1D&YyOBx6Od3+l=)U&{B2^4_k&Os>1YsPNBq}q3qAIw!1ms3 zE>DJtv8ijDl8JfGqf=uY&^?4|P2cur{aXB^7pl!J?evtZN<8S(36J({nf~%MGYp?>iWCvs>{!YoFyHtbh(wK_y&*%LhBRr4!V+=mj27)lO|j zI^y5+&7YNXsK$KhzDt-^Ps+6;XJAwMmdz^hq#pNERl*(XhuYkiz2*nSCfaUlX-n#B z>+(D}U_E1x8m+B)CQP~H4vNpQprlHFmeN$mD(Y`jqN^T>Yw4j!)awro-y0?&l7!A= zuW<-;8l*jDi>=Duki@yQ&~JryMzG$pxQWbyl$>KsrY@AsW zx0ttiK+cT42fgGQ7e3E-&uEAW9J?AKh6JOYpE2dub+R{ui^g)xc@OC54)T)FPCj#c zwIxGPxqH3G*Z52N58^{3quDW0^Qp=uMH|aVo8m>xT}r_>pDE8t$CU)Q$c`X9C8lRR z;d6r2dRL{~eX{g)odPa8Y;5^UOmn3R5$6tDOr7Gc;!BZyd};cAKile!nSS|f>7=BVx}V$rTR$8sm~DcDltoK*(G%C za;wf&YAr?%aoc^S{I_C-!9{lZYRuP`Bx>ka*d{+1rm9FY^XJ$6+Nbf#Mftk zrRmC!-|C$^H#t*872me}9kY1jRe|P+Y0g5zpSY49Ojw%A4 zQZ{(;c8J?o$pm`06LU~+u*o z7TVk3#rW8QdpCTC5XVBpTXA545jZ_9wnl9ko(sno7FOW#WY~iLKKutCc|Md1dK}M6 zUV+14T>v=H24@FZ0s%a5+8rRQdBz1;_{J< zGr)2Lulye%)V6KNAC69A+NVK1=nQyRfn{-maW24V zoR)B~Qa%g1+%r=Dwn(!X2Te_ECIQ!608$*BqN_|n5L(rKA#k*>&>y?VFcH)rI6>-d z6fvmp`dcJy=MvWm$O4rl38&5&oPzK!?*6s%GC11S+@#*KlqAcQ2(sEkK4%DIG~NDZ?qiukODs z{k>&`#2+w3kzwAN|KU%9Djone&fL+@eXTqo*VC^a0Umh(jJO`b{fMZ=1L_e$n(k|U$GO+V4fG`D}VYC%Pk#F46b_p?ibu# z1T?}zpb6;XH-b_Q)_*2Y#v5S5SuM{ve-gS@Fz8N$aUHX2hr~h|!DMfM9vdM_y#Yp` z>USju38w*ncmt$3f3T0jAh{3Zk8Ht_5cDK`n*ZM+NBT}*KnEH_>rj6kA9AO_FrTCN zQ||*=L6(DIz5olj>jO|@gA$o9RC%i&TgeIP`$Aohjk;#uKl`nrRw_g4j<>QIyyFYV zVkH}~l1|-NNoFvo8%|9Aw^I;+$`7j=eFV_Oo K(-!J6*#7_wBRwhr diff --git a/distribution/json4processing-0.1.1/reference/allclasses-frame.html b/distribution/json4processing-0.1.1/reference/allclasses-frame.html index 9936c0824..f5a47cec4 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-frame.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-frame.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html index 15b992bcf..af583a555 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/constant-values.html b/distribution/json4processing-0.1.1/reference/constant-values.html index e25df506f..a6775fe67 100644 --- a/distribution/json4processing-0.1.1/reference/constant-values.html +++ b/distribution/json4processing-0.1.1/reference/constant-values.html @@ -2,7 +2,7 @@ - + Constant Field Values (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/deprecated-list.html b/distribution/json4processing-0.1.1/reference/deprecated-list.html index e7548cac2..b7c7188ce 100644 --- a/distribution/json4processing-0.1.1/reference/deprecated-list.html +++ b/distribution/json4processing-0.1.1/reference/deprecated-list.html @@ -2,7 +2,7 @@ - + Deprecated List (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/help-doc.html b/distribution/json4processing-0.1.1/reference/help-doc.html index 4485e316a..6846831c9 100644 --- a/distribution/json4processing-0.1.1/reference/help-doc.html +++ b/distribution/json4processing-0.1.1/reference/help-doc.html @@ -2,7 +2,7 @@ - + API Help (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/index-all.html b/distribution/json4processing-0.1.1/reference/index-all.html index f3885c274..0824ced17 100644 --- a/distribution/json4processing-0.1.1/reference/index-all.html +++ b/distribution/json4processing-0.1.1/reference/index-all.html @@ -2,7 +2,7 @@ - + Index (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/index.html b/distribution/json4processing-0.1.1/reference/index.html index 16f7e2e54..256272f76 100644 --- a/distribution/json4processing-0.1.1/reference/index.html +++ b/distribution/json4processing-0.1.1/reference/index.html @@ -2,7 +2,7 @@ - + Javadocs: json4processing diff --git a/distribution/json4processing-0.1.1/reference/org/json/CDL.html b/distribution/json4processing-0.1.1/reference/org/json/CDL.html index b8ae6c387..4058b2763 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CDL.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CDL.html @@ -2,7 +2,7 @@ - + CDL (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html index 0dc4911cb..51a80b3d9 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html +++ b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html @@ -2,7 +2,7 @@ - + Cookie (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html index bdd3e58fb..7847ee2d9 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html @@ -2,7 +2,7 @@ - + CookieList (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html index c5ac1cffa..d53f7f1fa 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html @@ -2,7 +2,7 @@ - + HTTP (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html index c18be4a01..d3c39b030 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html @@ -2,7 +2,7 @@ - + HTTPTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html index a04b4d943..a8101b8ed 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html @@ -2,7 +2,7 @@ - + JSONArray (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html index cce2b9a02..8ff78dbd7 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html @@ -2,7 +2,7 @@ - + JSONException (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html index b8b606345..9e1629f0f 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html @@ -2,7 +2,7 @@ - + JSONML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html index c789bc8ac..f0a16eb16 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html @@ -2,7 +2,7 @@ - + JSONObject (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html index 7f97a526c..516999bfa 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html @@ -2,7 +2,7 @@ - + JSONString (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html index ab1513bf5..17962b30e 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html @@ -2,7 +2,7 @@ - + JSONStringer (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html index f7443a5a8..9dd33f2cf 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html @@ -2,7 +2,7 @@ - + JSONTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html index 438f9bcb1..ae4d8eede 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html @@ -2,7 +2,7 @@ - + JSONWriter (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/XML.html b/distribution/json4processing-0.1.1/reference/org/json/XML.html index 6e75c2c55..06b2ea0e8 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XML.html @@ -2,7 +2,7 @@ - + XML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html index 5cc2f9c54..9eb87a6fa 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html @@ -2,7 +2,7 @@ - + XMLTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html index f671f9a01..52398c41a 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html index 11dd521bf..04eda93fa 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html index 682b7110e..cb7adc2f0 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html @@ -2,7 +2,7 @@ - + org.json Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/overview-tree.html b/distribution/json4processing-0.1.1/reference/overview-tree.html index c894e7e15..cc55c51db 100644 --- a/distribution/json4processing-0.1.1/reference/overview-tree.html +++ b/distribution/json4processing-0.1.1/reference/overview-tree.html @@ -2,7 +2,7 @@ - + Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/serialized-form.html b/distribution/json4processing-0.1.1/reference/serialized-form.html index 264ba682a..cfedbe5a1 100644 --- a/distribution/json4processing-0.1.1/reference/serialized-form.html +++ b/distribution/json4processing-0.1.1/reference/serialized-form.html @@ -2,7 +2,7 @@ - + Serialized Form (Javadocs: json4processing) From 5f363a9a15bdffccdd8bd5a5848b04ea4d40b931 Mon Sep 17 00:00:00 2001 From: agoransson Date: Tue, 21 Feb 2012 10:41:24 +0100 Subject: [PATCH 06/38] Added examples and started the removal of Exceptionhandling inside the Processing sketch. --- .../download/json4processing-0.1.1.zip | Bin 162290 -> 162303 bytes .../reference/allclasses-frame.html | 2 +- .../reference/allclasses-noframe.html | 2 +- .../reference/constant-values.html | 2 +- .../reference/deprecated-list.html | 2 +- .../reference/help-doc.html | 2 +- .../reference/index-all.html | 2 +- .../reference/index.html | 2 +- .../reference/org/json/CDL.html | 2 +- .../reference/org/json/Cookie.html | 2 +- .../reference/org/json/CookieList.html | 2 +- .../reference/org/json/HTTP.html | 2 +- .../reference/org/json/HTTPTokener.html | 2 +- .../reference/org/json/JSONArray.html | 2 +- .../reference/org/json/JSONException.html | 2 +- .../reference/org/json/JSONML.html | 2 +- .../reference/org/json/JSONObject.html | 2 +- .../reference/org/json/JSONString.html | 2 +- .../reference/org/json/JSONStringer.html | 2 +- .../reference/org/json/JSONTokener.html | 2 +- .../reference/org/json/JSONWriter.html | 2 +- .../reference/org/json/XML.html | 2 +- .../reference/org/json/XMLTokener.html | 2 +- .../reference/org/json/package-frame.html | 2 +- .../reference/org/json/package-summary.html | 2 +- .../reference/org/json/package-tree.html | 2 +- .../reference/overview-tree.html | 2 +- .../reference/serialized-form.html | 2 +- examples/Hello/Hello.pde | 19 ------------------ examples/README | 2 +- .../create_jsonobject/create_jsonobject.pde | 18 +++++++++++++++++ 31 files changed, 46 insertions(+), 47 deletions(-) delete mode 100644 examples/Hello/Hello.pde create mode 100644 examples/create_jsonobject/create_jsonobject.pde diff --git a/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip b/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip index 56fb1a8535920e6498d16aaee2fc814365c78721..f7932a3acbaa2566b852d8acfe917878e721cb47 100644 GIT binary patch delta 101895 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

P1sP{G+i*v@=Qh`gbo&(u4diZN@W><|#|ig3!G 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�wpDFxXE$C}xQG66Q+-DwY&$%p{N+Bi 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 diff --git a/distribution/json4processing-0.1.1/reference/allclasses-frame.html b/distribution/json4processing-0.1.1/reference/allclasses-frame.html index f5a47cec4..9a1550578 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-frame.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-frame.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html index af583a555..6dbd1e5a0 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/constant-values.html b/distribution/json4processing-0.1.1/reference/constant-values.html index a6775fe67..1df2becc6 100644 --- a/distribution/json4processing-0.1.1/reference/constant-values.html +++ b/distribution/json4processing-0.1.1/reference/constant-values.html @@ -2,7 +2,7 @@ - + Constant Field Values (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/deprecated-list.html b/distribution/json4processing-0.1.1/reference/deprecated-list.html index b7c7188ce..e5aed002f 100644 --- a/distribution/json4processing-0.1.1/reference/deprecated-list.html +++ b/distribution/json4processing-0.1.1/reference/deprecated-list.html @@ -2,7 +2,7 @@ - + Deprecated List (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/help-doc.html b/distribution/json4processing-0.1.1/reference/help-doc.html index 6846831c9..0af514c5b 100644 --- a/distribution/json4processing-0.1.1/reference/help-doc.html +++ b/distribution/json4processing-0.1.1/reference/help-doc.html @@ -2,7 +2,7 @@ - + API Help (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/index-all.html b/distribution/json4processing-0.1.1/reference/index-all.html index 0824ced17..4eb9f717c 100644 --- a/distribution/json4processing-0.1.1/reference/index-all.html +++ b/distribution/json4processing-0.1.1/reference/index-all.html @@ -2,7 +2,7 @@ - + Index (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/index.html b/distribution/json4processing-0.1.1/reference/index.html index 256272f76..e03de1bf0 100644 --- a/distribution/json4processing-0.1.1/reference/index.html +++ b/distribution/json4processing-0.1.1/reference/index.html @@ -2,7 +2,7 @@ - + Javadocs: json4processing diff --git a/distribution/json4processing-0.1.1/reference/org/json/CDL.html b/distribution/json4processing-0.1.1/reference/org/json/CDL.html index 4058b2763..f51e69b3a 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CDL.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CDL.html @@ -2,7 +2,7 @@ - + CDL (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html index 51a80b3d9..36b1afb20 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html +++ b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html @@ -2,7 +2,7 @@ - + Cookie (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html index 7847ee2d9..9200c7113 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html @@ -2,7 +2,7 @@ - + CookieList (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html index d53f7f1fa..0fb9f7cc7 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html @@ -2,7 +2,7 @@ - + HTTP (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html index d3c39b030..dcfafd50f 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html @@ -2,7 +2,7 @@ - + HTTPTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html index a8101b8ed..21089b148 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html @@ -2,7 +2,7 @@ - + JSONArray (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html index 8ff78dbd7..c90f8ecfd 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html @@ -2,7 +2,7 @@ - + JSONException (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html index 9e1629f0f..37adb4599 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html @@ -2,7 +2,7 @@ - + JSONML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html index f0a16eb16..badaf05f0 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html @@ -2,7 +2,7 @@ - + JSONObject (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html index 516999bfa..b2894a0c5 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html @@ -2,7 +2,7 @@ - + JSONString (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html index 17962b30e..64d4a7b62 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html @@ -2,7 +2,7 @@ - + JSONStringer (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html index 9dd33f2cf..c6e624f4e 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html @@ -2,7 +2,7 @@ - + JSONTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html index ae4d8eede..9531f1f13 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html @@ -2,7 +2,7 @@ - + JSONWriter (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/XML.html b/distribution/json4processing-0.1.1/reference/org/json/XML.html index 06b2ea0e8..ac0dc6297 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XML.html @@ -2,7 +2,7 @@ - + XML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html index 9eb87a6fa..bd4f4e2a8 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html @@ -2,7 +2,7 @@ - + XMLTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html index 52398c41a..b806f232f 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html index 04eda93fa..5b47c1bd0 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html index cb7adc2f0..0c046b879 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html @@ -2,7 +2,7 @@ - + org.json Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/overview-tree.html b/distribution/json4processing-0.1.1/reference/overview-tree.html index cc55c51db..c94094892 100644 --- a/distribution/json4processing-0.1.1/reference/overview-tree.html +++ b/distribution/json4processing-0.1.1/reference/overview-tree.html @@ -2,7 +2,7 @@ - + Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/serialized-form.html b/distribution/json4processing-0.1.1/reference/serialized-form.html index cfedbe5a1..17b7681e2 100644 --- a/distribution/json4processing-0.1.1/reference/serialized-form.html +++ b/distribution/json4processing-0.1.1/reference/serialized-form.html @@ -2,7 +2,7 @@ - + Serialized Form (Javadocs: json4processing) diff --git a/examples/Hello/Hello.pde b/examples/Hello/Hello.pde deleted file mode 100644 index c14456a35..000000000 --- a/examples/Hello/Hello.pde +++ /dev/null @@ -1,19 +0,0 @@ -import template.library.*; - -HelloLibrary hello; - -void setup() { - size(400,400); - smooth(); - - hello = new HelloLibrary(this); - - PFont font = createFont("",40); - textFont(font); -} - -void draw() { - background(0); - fill(255); - text(hello.sayHello(), 40, 200); -} \ No newline at end of file diff --git a/examples/README b/examples/README index f2c0a4fab..71782a3e3 100644 --- a/examples/README +++ b/examples/README @@ -1 +1 @@ -add examples for your tool here. \ No newline at end of file +add examples for your tool here. \ No newline at end of file diff --git a/examples/create_jsonobject/create_jsonobject.pde b/examples/create_jsonobject/create_jsonobject.pde new file mode 100644 index 000000000..063a40faf --- /dev/null +++ b/examples/create_jsonobject/create_jsonobject.pde @@ -0,0 +1,18 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the object + JSONObject myJsonObject = new JSONObject(); + + // 2. Add some content to the object + myJsonObject.put( "myIntegerValue", 7 ); +} + +void draw(){ +} From 7bb2f852f42308998864de2c387392c3f064ae62 Mon Sep 17 00:00:00 2001 From: agoransson Date: Tue, 21 Feb 2012 11:01:36 +0100 Subject: [PATCH 07/38] Updated, the right repository this time. --- .settings/org.eclipse.core.resources.prefs | 3 + README.md | 75 +- .../download/json4processing-0.1.1.zip | Bin 162290 -> 162303 bytes .../reference/allclasses-frame.html | 2 +- .../reference/allclasses-noframe.html | 2 +- .../reference/constant-values.html | 2 +- .../reference/deprecated-list.html | 2 +- .../reference/help-doc.html | 2 +- .../reference/index-all.html | 2 +- .../reference/index.html | 2 +- .../reference/org/json/CDL.html | 2 +- .../reference/org/json/Cookie.html | 2 +- .../reference/org/json/CookieList.html | 2 +- .../reference/org/json/HTTP.html | 2 +- .../reference/org/json/HTTPTokener.html | 2 +- .../reference/org/json/JSONArray.html | 2 +- .../reference/org/json/JSONException.html | 2 +- .../reference/org/json/JSONML.html | 2 +- .../reference/org/json/JSONObject.html | 2 +- .../reference/org/json/JSONString.html | 2 +- .../reference/org/json/JSONStringer.html | 2 +- .../reference/org/json/JSONTokener.html | 2 +- .../reference/org/json/JSONWriter.html | 2 +- .../reference/org/json/XML.html | 2 +- .../reference/org/json/XMLTokener.html | 2 +- .../reference/org/json/package-frame.html | 2 +- .../reference/org/json/package-summary.html | 2 +- .../reference/org/json/package-tree.html | 2 +- .../reference/overview-tree.html | 2 +- .../reference/serialized-form.html | 2 +- .../download/json4processing-0.1.2.zip | Bin 0 -> 165756 bytes .../create_jsonarray/create_jsonarray.pde | 23 + .../create_jsonarray_of_objects.pde | 31 + .../create_jsonobject/create_jsonobject.pde | 22 + .../reading_yahoo_weather.pde | 37 + distribution/json4processing-0.1.2/index.html | 132 + .../reference/allclasses-frame.html | 59 + .../reference/allclasses-noframe.html | 59 + .../reference/constant-values.html | 170 + .../reference/deprecated-list.html | 142 + .../reference/help-doc.html | 209 ++ .../reference/index-all.html | 893 +++++ .../reference/index.html | 36 + .../reference/org/json/CDL.html | 500 +++ .../reference/org/json/Cookie.html | 357 ++ .../reference/org/json/CookieList.html | 297 ++ .../reference/org/json/HTTP.html | 365 ++ .../reference/org/json/HTTPTokener.html | 277 ++ .../reference/org/json/JSONArray.html | 1463 ++++++++ .../reference/org/json/JSONException.html | 291 ++ .../reference/org/json/JSONML.html | 422 +++ .../reference/org/json/JSONObject.html | 1847 +++++++++ .../reference/org/json/JSONString.html | 216 ++ .../reference/org/json/JSONStringer.html | 303 ++ .../reference/org/json/JSONTokener.html | 667 ++++ .../reference/org/json/JSONWriter.html | 506 +++ .../reference/org/json/XML.html | 601 +++ .../reference/org/json/XMLTokener.html | 452 +++ .../reference/org/json/package-frame.html | 78 + .../reference/org/json/package-summary.html | 239 ++ .../reference/org/json/package-tree.html | 160 + .../reference/overview-tree.html | 162 + .../reference/package-list | 1 + .../reference/resources/inherit.gif | Bin 0 -> 57 bytes .../reference/serialized-form.html | 178 + .../reference/stylesheet.css | 310 ++ .../json4processing-0.1.2/stylesheet.css | 203 + examples/Hello/Hello.pde | 19 - examples/README | 1 - .../create_jsonarray/create_jsonarray.pde | 23 + .../create_jsonarray_of_objects.pde | 31 + .../create_jsonobject/create_jsonobject.pde | 22 + .../reading_yahoo_weather.pde | 37 + resources/build.properties | 10 +- src/org/json/JSONArray.java | 53 +- src/org/json/JSONObject.java | 3334 +++++++++-------- 76 files changed, 13642 insertions(+), 1728 deletions(-) create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 distribution/json4processing-0.1.2/download/json4processing-0.1.2.zip create mode 100644 distribution/json4processing-0.1.2/examples/create_jsonarray/create_jsonarray.pde create mode 100644 distribution/json4processing-0.1.2/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde create mode 100644 distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde create mode 100644 distribution/json4processing-0.1.2/index.html create mode 100644 distribution/json4processing-0.1.2/reference/allclasses-frame.html create mode 100644 distribution/json4processing-0.1.2/reference/allclasses-noframe.html create mode 100644 distribution/json4processing-0.1.2/reference/constant-values.html create mode 100644 distribution/json4processing-0.1.2/reference/deprecated-list.html create mode 100644 distribution/json4processing-0.1.2/reference/help-doc.html create mode 100644 distribution/json4processing-0.1.2/reference/index-all.html create mode 100644 distribution/json4processing-0.1.2/reference/index.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/CDL.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/Cookie.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/CookieList.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/HTTP.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONArray.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONException.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONML.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONObject.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONString.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/XML.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/package-frame.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/package-summary.html create mode 100644 distribution/json4processing-0.1.2/reference/org/json/package-tree.html create mode 100644 distribution/json4processing-0.1.2/reference/overview-tree.html create mode 100644 distribution/json4processing-0.1.2/reference/package-list create mode 100644 distribution/json4processing-0.1.2/reference/resources/inherit.gif create mode 100644 distribution/json4processing-0.1.2/reference/serialized-form.html create mode 100644 distribution/json4processing-0.1.2/reference/stylesheet.css create mode 100644 distribution/json4processing-0.1.2/stylesheet.css delete mode 100644 examples/Hello/Hello.pde delete mode 100644 examples/README create mode 100644 examples/create_jsonarray/create_jsonarray.pde create mode 100644 examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde create mode 100644 examples/create_jsonobject/create_jsonobject.pde create mode 100644 examples/reading_yahoo_weather/reading_yahoo_weather.pde diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..65d33d245 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Tue Feb 21 10:36:23 CET 2012 +eclipse.preferences.version=1 +encoding//examples/reading_yahoo_weather/reading_yahoo_weather.pde=UTF-8 diff --git a/README.md b/README.md index 7961fd53e..8365e96a2 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,8 @@ This library is simply a fork of the original JSON for [Java library written by */ JSONObject obj = new JSONObject(); -try { - obj.put("myint", 5); - obj.put("myfloat", 5.5); -} -catch(JSONException e) { - e.printStackTrace(); -} +obj.put("myint", 5); +obj.put("myfloat", 5.5); println( obj ); ``` @@ -36,29 +31,14 @@ println( obj ); * Creating a JSONObject with complex members */ JSONObject myfirstmember = new JSONObject(); -try { - myfirstmember.put("myint", 5); -} -catch(JSONException e) { - e.printStackTrace(); -} +myfirstmember.put("myint", 5); JSONObject mysecondmember = new JSONObject(); -try { - mysecondmember.put("myfloat", 5.5); -} -catch(JSONException e) { - e.printStackTrace(); -} +mysecondmember.put("myfloat", 5.5); JSONObject obj = new JSONObject(); -try { - obj.put("myobj", myfirstmember); - obj.put("myobj2", mysecondmember); -} -catch(JSONException e) { - e.printStackTrace(); -} +obj.put("myobj", myfirstmember); +obj.put("myobj2", mysecondmember); println( obj ); ``` @@ -70,14 +50,8 @@ println( obj ); * Creating a JSONObject from a json-formatted String. */ String json_formatted_string = "{\"myint\":5,\"myfloat\":5.5}"; -try { - JSONObject obj = new JSONObject(json_formatted_string); - println( obj ); -} -catch(Exception e) { - e.printStackTrace(); -} - +JSONObject obj = new JSONObject(json_formatted_string); +println( obj ); ``` **Creating a JSONArray of primitives** @@ -87,14 +61,10 @@ catch(Exception e) { * Creating a JSONArray of primitives */ JSONArray arr = new JSONArray(); -try { - arr.put(5); - arr.put(5.5); - arr.put('a'); -} -catch(JSONException e) { - e.printStackTrace(); -} +arr.put(5); +arr.put(5.5); +arr.put('a'); + println(arr); ``` @@ -105,28 +75,13 @@ println(arr); * Creating a JSONArray of objects */ JSONObject first = new JSONObject(); -try { - first.put("val", 5); -} -catch(JSONException e) { - e.printStackTrace(); -} +first.put("val", 5); JSONObject sec = new JSONObject(); -try { - sec.put("val", 5.5); -} -catch(JSONException e) { - e.printStackTrace(); -} +sec.put("val", 5.5); JSONObject third = new JSONObject(); -try { - third.put("val", 'a'); -} -catch(JSONException e) { - e.printStackTrace(); -} +third.put("val", 'a'); JSONArray arr = new JSONArray(); arr.put(first); diff --git a/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip b/distribution/json4processing-0.1.1/download/json4processing-0.1.1.zip index 56fb1a8535920e6498d16aaee2fc814365c78721..f7932a3acbaa2566b852d8acfe917878e721cb47 100644 GIT binary patch delta 101895 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

P1sP{G+i*v@=Qh`gbo&(u4diZN@W><|#|ig3!G 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�wpDFxXE$C}xQG66Q+-DwY&$%p{N+Bi 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 diff --git a/distribution/json4processing-0.1.1/reference/allclasses-frame.html b/distribution/json4processing-0.1.1/reference/allclasses-frame.html index f5a47cec4..9a1550578 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-frame.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-frame.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html index af583a555..6dbd1e5a0 100644 --- a/distribution/json4processing-0.1.1/reference/allclasses-noframe.html +++ b/distribution/json4processing-0.1.1/reference/allclasses-noframe.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/constant-values.html b/distribution/json4processing-0.1.1/reference/constant-values.html index a6775fe67..1df2becc6 100644 --- a/distribution/json4processing-0.1.1/reference/constant-values.html +++ b/distribution/json4processing-0.1.1/reference/constant-values.html @@ -2,7 +2,7 @@ - + Constant Field Values (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/deprecated-list.html b/distribution/json4processing-0.1.1/reference/deprecated-list.html index b7c7188ce..e5aed002f 100644 --- a/distribution/json4processing-0.1.1/reference/deprecated-list.html +++ b/distribution/json4processing-0.1.1/reference/deprecated-list.html @@ -2,7 +2,7 @@ - + Deprecated List (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/help-doc.html b/distribution/json4processing-0.1.1/reference/help-doc.html index 6846831c9..0af514c5b 100644 --- a/distribution/json4processing-0.1.1/reference/help-doc.html +++ b/distribution/json4processing-0.1.1/reference/help-doc.html @@ -2,7 +2,7 @@ - + API Help (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/index-all.html b/distribution/json4processing-0.1.1/reference/index-all.html index 0824ced17..4eb9f717c 100644 --- a/distribution/json4processing-0.1.1/reference/index-all.html +++ b/distribution/json4processing-0.1.1/reference/index-all.html @@ -2,7 +2,7 @@ - + Index (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/index.html b/distribution/json4processing-0.1.1/reference/index.html index 256272f76..e03de1bf0 100644 --- a/distribution/json4processing-0.1.1/reference/index.html +++ b/distribution/json4processing-0.1.1/reference/index.html @@ -2,7 +2,7 @@ - + Javadocs: json4processing diff --git a/distribution/json4processing-0.1.1/reference/org/json/CDL.html b/distribution/json4processing-0.1.1/reference/org/json/CDL.html index 4058b2763..f51e69b3a 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CDL.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CDL.html @@ -2,7 +2,7 @@ - + CDL (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html index 51a80b3d9..36b1afb20 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/Cookie.html +++ b/distribution/json4processing-0.1.1/reference/org/json/Cookie.html @@ -2,7 +2,7 @@ - + Cookie (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html index 7847ee2d9..9200c7113 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/CookieList.html +++ b/distribution/json4processing-0.1.1/reference/org/json/CookieList.html @@ -2,7 +2,7 @@ - + CookieList (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html index d53f7f1fa..0fb9f7cc7 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTP.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTP.html @@ -2,7 +2,7 @@ - + HTTP (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html index d3c39b030..dcfafd50f 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/HTTPTokener.html @@ -2,7 +2,7 @@ - + HTTPTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html index a8101b8ed..21089b148 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONArray.html @@ -2,7 +2,7 @@ - + JSONArray (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html index 8ff78dbd7..c90f8ecfd 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONException.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONException.html @@ -2,7 +2,7 @@ - + JSONException (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html index 9e1629f0f..37adb4599 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONML.html @@ -2,7 +2,7 @@ - + JSONML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html index f0a16eb16..badaf05f0 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONObject.html @@ -2,7 +2,7 @@ - + JSONObject (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html index 516999bfa..b2894a0c5 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONString.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONString.html @@ -2,7 +2,7 @@ - + JSONString (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html index 17962b30e..64d4a7b62 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONStringer.html @@ -2,7 +2,7 @@ - + JSONStringer (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html index 9dd33f2cf..c6e624f4e 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONTokener.html @@ -2,7 +2,7 @@ - + JSONTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html index ae4d8eede..9531f1f13 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html +++ b/distribution/json4processing-0.1.1/reference/org/json/JSONWriter.html @@ -2,7 +2,7 @@ - + JSONWriter (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/XML.html b/distribution/json4processing-0.1.1/reference/org/json/XML.html index 06b2ea0e8..ac0dc6297 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XML.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XML.html @@ -2,7 +2,7 @@ - + XML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html index 9eb87a6fa..bd4f4e2a8 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html +++ b/distribution/json4processing-0.1.1/reference/org/json/XMLTokener.html @@ -2,7 +2,7 @@ - + XMLTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html index 52398c41a..b806f232f 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-frame.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-frame.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html index 04eda93fa..5b47c1bd0 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-summary.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-summary.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html index cb7adc2f0..0c046b879 100644 --- a/distribution/json4processing-0.1.1/reference/org/json/package-tree.html +++ b/distribution/json4processing-0.1.1/reference/org/json/package-tree.html @@ -2,7 +2,7 @@ - + org.json Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/overview-tree.html b/distribution/json4processing-0.1.1/reference/overview-tree.html index cc55c51db..c94094892 100644 --- a/distribution/json4processing-0.1.1/reference/overview-tree.html +++ b/distribution/json4processing-0.1.1/reference/overview-tree.html @@ -2,7 +2,7 @@ - + Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.1/reference/serialized-form.html b/distribution/json4processing-0.1.1/reference/serialized-form.html index cfedbe5a1..17b7681e2 100644 --- a/distribution/json4processing-0.1.1/reference/serialized-form.html +++ b/distribution/json4processing-0.1.1/reference/serialized-form.html @@ -2,7 +2,7 @@ - + Serialized Form (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/download/json4processing-0.1.2.zip b/distribution/json4processing-0.1.2/download/json4processing-0.1.2.zip new file mode 100644 index 0000000000000000000000000000000000000000..69daf84e9f152370d63d528321c699129ac9e150 GIT binary patch literal 165756 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

1l{XqiG!BNV(ZCeZ2NU_PfeQA@ibeL%~}e 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 T@v!-$>ySB)-bm6 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 literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.2/examples/create_jsonarray/create_jsonarray.pde b/distribution/json4processing-0.1.2/examples/create_jsonarray/create_jsonarray.pde new file mode 100644 index 000000000..93bd2c04f --- /dev/null +++ b/distribution/json4processing-0.1.2/examples/create_jsonarray/create_jsonarray.pde @@ -0,0 +1,23 @@ +/* + * JSON 4 Processing + * Basic example 2: Creating a JSON Array + * + * Good for sending a large set of primitive values, like sensor readings. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonArray = new JSONArray(); + + // 2. Add some content to the array + myJsonArray.put( 4 ); + myJsonArray.put( 2 ); + + println( myJsonArray ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.2/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde b/distribution/json4processing-0.1.2/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde new file mode 100644 index 000000000..4d6567c5e --- /dev/null +++ b/distribution/json4processing-0.1.2/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde @@ -0,0 +1,31 @@ +/* + * JSON 4 Processing + * Basic example 3: Creating a JSON Array of JSON Objects. + * + * Good for sending multiple complex values, such as database tables. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonUsers = new JSONArray(); + + // 2. Create the first object & add to array + JSONObject firstUser = new JSONObject(); + firstUser.put( "name", "Andreas" ); + firstUser.put( "age", 32 ); + myJsonUsers.put( firstUser ); + + // 3. Create the second object + JSONObject secondUser = new JSONObject(); + secondUser.put( "name", "Maria" ); + secondUser.put( "age", 28 ); + myJsonUsers.put( secondUser ); + + println( myJsonUsers ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde b/distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde new file mode 100644 index 000000000..464cbf759 --- /dev/null +++ b/distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde @@ -0,0 +1,22 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object + * + * Good for sending values that has a specific meaning (complex values) + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the object + JSONObject myJsonObject = new JSONObject(); + + // 2. Add some content to the object + myJsonObject.put( "myIntegerValue", 7 ); + + println( myJsonObject ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde new file mode 100644 index 000000000..a9f824821 --- /dev/null +++ b/distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde @@ -0,0 +1,37 @@ +/* + * JSON 4 Processing + * Basic example 4: Reading data from the web (Yahoo weather) + * + * This example reads the Weather feed from the Yahoo API's. It's using + * the WOEID for Malm�, you can change this by finding the ID you want + * at http://weather.yahoo.com/ + */ + +import org.json.*; + +void setup() { + // Accessing the weather service + String BASE_URL = "http://weather.yahooapis.com/forecastjson?w="; + String WOEDI = "898091"; + + // Get the JSON formatted response + String response = loadStrings( BASE_URL + WOEDI )[0]; + + // Make sure we got a response. + if ( response != null ) { + // Initialize the JSONObject for the response + JSONObject root = new JSONObject( response ); + + // Get the "condition" JSONObject + JSONObject condition = root.getJSONObject("condition"); + + // Get the "temperature" value from the condition object + int temperature = condition.getInt("temperature"); + + // Print the temperature + println( temperature ); + } +} + +void draw() { +} diff --git a/distribution/json4processing-0.1.2/index.html b/distribution/json4processing-0.1.2/index.html new file mode 100644 index 000000000..d363342e8 --- /dev/null +++ b/distribution/json4processing-0.1.2/index.html @@ -0,0 +1,132 @@ + + + +json4processing + + + + + + + + + + + + + + +

+ + \ No newline at end of file diff --git a/distribution/json4processing-0.1.2/reference/allclasses-frame.html b/distribution/json4processing-0.1.2/reference/allclasses-frame.html new file mode 100644 index 000000000..44cd46c5b --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/allclasses-frame.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Javadocs: json4processing) + + + + + + + + + + + +All Classes +
+ + + + + +
CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONException +
+JSONML +
+JSONObject +
+JSONString +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener +
+
+ + + diff --git a/distribution/json4processing-0.1.2/reference/allclasses-noframe.html b/distribution/json4processing-0.1.2/reference/allclasses-noframe.html new file mode 100644 index 000000000..37b8b995b --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/allclasses-noframe.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Javadocs: json4processing) + + + + + + + + + + + +All Classes +
+ + + + + +
CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONException +
+JSONML +
+JSONObject +
+JSONString +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener +
+
+ + + diff --git a/distribution/json4processing-0.1.2/reference/constant-values.html b/distribution/json4processing-0.1.2/reference/constant-values.html new file mode 100644 index 000000000..f49bfe9e5 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/constant-values.html @@ -0,0 +1,170 @@ + + + + + + +Constant Field Values (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.json.*
+ +

+ + + + + + + + + + + + +
org.json.HTTP
+public static final java.lang.StringCRLF"\r\n"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/deprecated-list.html b/distribution/json4processing-0.1.2/reference/deprecated-list.html new file mode 100644 index 000000000..343302729 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/deprecated-list.html @@ -0,0 +1,142 @@ + + + + + + +Deprecated List (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/help-doc.html b/distribution/json4processing-0.1.2/reference/help-doc.html new file mode 100644 index 000000000..c98f65d2e --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/help-doc.html @@ -0,0 +1,209 @@ + + + + + + +API Help (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/index-all.html b/distribution/json4processing-0.1.2/reference/index-all.html new file mode 100644 index 000000000..be9c5b61a --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/index-all.html @@ -0,0 +1,893 @@ + + + + + + +Index (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A B C D E G H I J K L M N O P Q R S T U V W X
+

+A

+
+
accumulate(String, Object) - +Method in class org.json.JSONObject +
Accumulate values under a key. +
AMP - +Static variable in class org.json.XML +
The Character '&'. +
APOS - +Static variable in class org.json.XML +
The Character '''. +
append(String, Object) - +Method in class org.json.JSONObject +
Append values to the array under a key. +
array() - +Method in class org.json.JSONWriter +
Begin appending a new array. +
+
+

+B

+
+
back() - +Method in class org.json.JSONTokener +
Back up one character. +
BANG - +Static variable in class org.json.XML +
The Character '!'. +
+
+

+C

+
+
CDL - Class in org.json
This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CDL() - +Constructor for class org.json.CDL +
  +
Cookie - Class in org.json
Convert a web browser cookie specification to a JSONObject and back.
Cookie() - +Constructor for class org.json.Cookie +
  +
CookieList - Class in org.json
Convert a web browser cookie list string to a JSONObject and back.
CookieList() - +Constructor for class org.json.CookieList +
  +
CRLF - +Static variable in class org.json.HTTP +
Carriage return/line feed. +
+
+

+D

+
+
dehexchar(char) - +Static method in class org.json.JSONTokener +
Get the hex value of a character (base16). +
doubleToString(double) - +Static method in class org.json.JSONObject +
Produce a string from a double. +
+
+

+E

+
+
end() - +Method in class org.json.JSONTokener +
  +
endArray() - +Method in class org.json.JSONWriter +
End an array. +
endObject() - +Method in class org.json.JSONWriter +
End an object. +
entity - +Static variable in class org.json.XMLTokener +
The table of entity values. +
EQ - +Static variable in class org.json.XML +
The Character '='. +
escape(String) - +Static method in class org.json.Cookie +
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". +
escape(String) - +Static method in class org.json.XML +
Replace special characters with XML escapes: +
+
+

+G

+
+
get(int) - +Method in class org.json.JSONArray +
Get the object value associated with an index. +
get(String) - +Method in class org.json.JSONObject +
Get the value object associated with a key. +
getBoolean(int) - +Method in class org.json.JSONArray +
Get the boolean value associated with an index. +
getBoolean(String) - +Method in class org.json.JSONObject +
Get the boolean value associated with a key. +
getCause() - +Method in exception org.json.JSONException +
  +
getDouble(int) - +Method in class org.json.JSONArray +
Get the double value associated with an index. +
getDouble(String) - +Method in class org.json.JSONObject +
Get the double value associated with a key. +
getInt(int) - +Method in class org.json.JSONArray +
Get the int value associated with an index. +
getInt(String) - +Method in class org.json.JSONObject +
Get the int value associated with a key. +
getJSONArray(int) - +Method in class org.json.JSONArray +
Get the JSONArray associated with an index. +
getJSONArray(String) - +Method in class org.json.JSONObject +
Get the JSONArray value associated with a key. +
getJSONObject(int) - +Method in class org.json.JSONArray +
Get the JSONObject associated with an index. +
getJSONObject(String) - +Method in class org.json.JSONObject +
Get the JSONObject value associated with a key. +
getLong(int) - +Method in class org.json.JSONArray +
Get the long value associated with an index. +
getLong(String) - +Method in class org.json.JSONObject +
Get the long value associated with a key. +
getNames(JSONObject) - +Static method in class org.json.JSONObject +
Get an array of field names from a JSONObject. +
getNames(Object) - +Static method in class org.json.JSONObject +
Get an array of field names from an Object. +
getString(int) - +Method in class org.json.JSONArray +
Get the string associated with an index. +
getString(String) - +Method in class org.json.JSONObject +
Get the string associated with a key. +
GT - +Static variable in class org.json.XML +
The Character '>'. +
+
+

+H

+
+
has(String) - +Method in class org.json.JSONObject +
Determine if the JSONObject contains a specific key. +
HTTP - Class in org.json
Convert an HTTP header to a JSONObject and back.
HTTP() - +Constructor for class org.json.HTTP +
  +
HTTPTokener - Class in org.json
The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
HTTPTokener(String) - +Constructor for class org.json.HTTPTokener +
Construct an HTTPTokener from a string. +
+
+

+I

+
+
increment(String) - +Method in class org.json.JSONObject +
Increment a property of a JSONObject. +
isNull(int) - +Method in class org.json.JSONArray +
Determine if the value is null. +
isNull(String) - +Method in class org.json.JSONObject +
Determine if the value associated with the key is null or if there is no + value. +
+
+

+J

+
+
join(String) - +Method in class org.json.JSONArray +
Make a string from the contents of this JSONArray. +
JSONArray - Class in org.json
A JSONArray is an ordered sequence of values.
JSONArray() - +Constructor for class org.json.JSONArray +
Construct an empty JSONArray. +
JSONArray(JSONTokener) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a JSONTokener. +
JSONArray(String) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a source JSON text. +
JSONArray(Collection) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a Collection. +
JSONArray(Object) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from an array +
JSONException - Exception in org.json
The JSONException is thrown by the JSON.org classes when things are amiss.
JSONException(String) - +Constructor for exception org.json.JSONException +
Constructs a JSONException with an explanatory message. +
JSONException(Throwable) - +Constructor for exception org.json.JSONException +
  +
JSONML - Class in org.json
This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONML() - +Constructor for class org.json.JSONML +
  +
JSONObject - Class in org.json
A JSONObject is an unordered collection of name/value pairs.
JSONObject() - +Constructor for class org.json.JSONObject +
Construct an empty JSONObject. +
JSONObject(JSONObject, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a subset of another JSONObject. +
JSONObject(JSONTokener) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a JSONTokener. +
JSONObject(Map) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a Map. +
JSONObject(Object) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object using bean getters. +
JSONObject(Object, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object, using reflection to find the + public members. +
JSONObject(String) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a source JSON text string. +
JSONObject(String, Locale) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a ResourceBundle. +
JSONString - Interface in org.json
The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
JSONStringer - Class in org.json
JSONStringer provides a quick and convenient way of producing JSON text.
JSONStringer() - +Constructor for class org.json.JSONStringer +
Make a fresh JSONStringer. +
JSONTokener - Class in org.json
A JSONTokener takes a source string and extracts characters and tokens from + it.
JSONTokener(Reader) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a Reader. +
JSONTokener(InputStream) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from an InputStream. +
JSONTokener(String) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a string. +
JSONWriter - Class in org.json
JSONWriter provides a quick and convenient way of producing JSON text.
JSONWriter(Writer) - +Constructor for class org.json.JSONWriter +
Make a fresh JSONWriter. +
+
+

+K

+
+
key(String) - +Method in class org.json.JSONWriter +
Append a key. +
keys() - +Method in class org.json.JSONObject +
Get an enumeration of the keys of the JSONObject. +
+
+

+L

+
+
length() - +Method in class org.json.JSONArray +
Get the number of elements in the JSONArray, included nulls. +
length() - +Method in class org.json.JSONObject +
Get the number of keys stored in the JSONObject. +
LT - +Static variable in class org.json.XML +
The Character '<'. +
+
+

+M

+
+
more() - +Method in class org.json.JSONTokener +
Determine if the source string still contains characters that next() + can consume. +
+
+

+N

+
+
names() - +Method in class org.json.JSONObject +
Produce a JSONArray containing the names of the elements of this + JSONObject. +
next() - +Method in class org.json.JSONTokener +
Get the next character in the source string. +
next(char) - +Method in class org.json.JSONTokener +
Consume the next character, and check that it matches a specified + character. +
next(int) - +Method in class org.json.JSONTokener +
Get the next n characters. +
nextCDATA() - +Method in class org.json.XMLTokener +
Get the text in the CDATA block. +
nextClean() - +Method in class org.json.JSONTokener +
Get the next char in the string, skipping whitespace. +
nextContent() - +Method in class org.json.XMLTokener +
Get the next XML outer token, trimming whitespace. +
nextEntity(char) - +Method in class org.json.XMLTokener +
Return the next entity. +
nextMeta() - +Method in class org.json.XMLTokener +
Returns the next XML meta token. +
nextString(char) - +Method in class org.json.JSONTokener +
Return the characters up to the next close quote character. +
nextTo(char) - +Method in class org.json.JSONTokener +
Get the text up but not including the specified character or the + end of line, whichever comes first. +
nextTo(String) - +Method in class org.json.JSONTokener +
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +
nextToken() - +Method in class org.json.HTTPTokener +
Get the next token or string. +
nextToken() - +Method in class org.json.XMLTokener +
Get the next XML Token. +
nextValue() - +Method in class org.json.JSONTokener +
Get the next value. +
noSpace(String) - +Static method in class org.json.XML +
Throw an exception if the string contains whitespace. +
NULL - +Static variable in class org.json.JSONObject +
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. +
numberToString(Number) - +Static method in class org.json.JSONObject +
Produce a string from a Number. +
+
+

+O

+
+
object() - +Method in class org.json.JSONWriter +
Begin appending a new object. +
opt(int) - +Method in class org.json.JSONArray +
Get the optional object value associated with an index. +
opt(String) - +Method in class org.json.JSONObject +
Get an optional value associated with a key. +
optBoolean(int) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(int, boolean) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(String) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optBoolean(String, boolean) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optDouble(int) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(int, double) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(String) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number. +
optDouble(String, double) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number. +
optInt(int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(int, int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(String) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number. +
optInt(String, int) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number. +
optJSONArray(int) - +Method in class org.json.JSONArray +
Get the optional JSONArray associated with an index. +
optJSONArray(String) - +Method in class org.json.JSONObject +
Get an optional JSONArray associated with a key. +
optJSONObject(int) - +Method in class org.json.JSONArray +
Get the optional JSONObject associated with an index. +
optJSONObject(String) - +Method in class org.json.JSONObject +
Get an optional JSONObject associated with a key. +
optLong(int) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(int, long) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(String) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number. +
optLong(String, long) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number. +
optString(int) - +Method in class org.json.JSONArray +
Get the optional string value associated with an index. +
optString(int, String) - +Method in class org.json.JSONArray +
Get the optional string associated with an index. +
optString(String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
optString(String, String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
org.json - package org.json
 
+
+

+P

+
+
put(boolean) - +Method in class org.json.JSONArray +
Append a boolean value. +
put(Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(double) - +Method in class org.json.JSONArray +
Append a double value. +
put(int) - +Method in class org.json.JSONArray +
Append an int value. +
put(long) - +Method in class org.json.JSONArray +
Append an long value. +
put(Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +
put(Object) - +Method in class org.json.JSONArray +
Append an object value. +
put(int, boolean) - +Method in class org.json.JSONArray +
Put or replace a boolean value in the JSONArray. +
put(int, Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(int, double) - +Method in class org.json.JSONArray +
Put or replace a double value. +
put(int, int) - +Method in class org.json.JSONArray +
Put or replace an int value. +
put(int, long) - +Method in class org.json.JSONArray +
Put or replace a long value. +
put(int, Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +
put(int, Object) - +Method in class org.json.JSONArray +
Put or replace an object value in the JSONArray. +
put(String, boolean) - +Method in class org.json.JSONObject +
Put a key/boolean pair in the JSONObject. +
put(String, Collection) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +
put(String, double) - +Method in class org.json.JSONObject +
Put a key/double pair in the JSONObject. +
put(String, int) - +Method in class org.json.JSONObject +
Put a key/int pair in the JSONObject. +
put(String, long) - +Method in class org.json.JSONObject +
Put a key/long pair in the JSONObject. +
put(String, Map) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +
put(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject. +
putOnce(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name. +
putOpt(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null. +
+
+

+Q

+
+
QUEST - +Static variable in class org.json.XML +
The Character '?'. +
QUOT - +Static variable in class org.json.XML +
The Character '"'. +
quote(String) - +Static method in class org.json.JSONObject +
Produce a string in double quotes with backslash sequences in all the + right places. +
+
+

+R

+
+
remove(int) - +Method in class org.json.JSONArray +
Remove an index and close the hole. +
remove(String) - +Method in class org.json.JSONObject +
Remove a name and its value, if present. +
rowToJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of strings from a row of comma delimited values. +
rowToJSONObject(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +
rowToString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text row from a JSONArray. +
+
+

+S

+
+
skipPast(String) - +Method in class org.json.XMLTokener +
Skip characters until past the requested string. +
skipTo(char) - +Method in class org.json.JSONTokener +
Skip characters until the next character is the requested character. +
SLASH - +Static variable in class org.json.XML +
The Character '/'. +
stringToValue(String) - +Static method in class org.json.JSONObject +
Try to convert a string into a number, boolean, or null. +
stringToValue(String) - +Static method in class org.json.XML +
Try to convert a string into a number, boolean, or null. +
syntaxError(String) - +Method in class org.json.JSONTokener +
Make a JSONException to signal a syntax error. +
+
+

+T

+
+
testValidity(Object) - +Static method in class org.json.JSONObject +
Throw an exception if the object is a NaN or infinite number. +
toJSONArray(String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONArray, String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(JSONArray) - +Method in class org.json.JSONObject +
Produce a JSONArray containing the values of the members of this + JSONObject. +
toJSONObject(String) - +Static method in class org.json.Cookie +
Convert a cookie specification string into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.CookieList +
Convert a cookie list into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.HTTP +
Convert an HTTP header string into a JSONObject. +
toJSONObject(JSONArray) - +Method in class org.json.JSONArray +
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +
toJSONObject(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.XML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. +
toJSONString() - +Method in interface org.json.JSONString +
The toJSONString method allows a class to produce its own JSON + serialization. +
toString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects. +
toString(JSONArray, JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. +
toString(JSONObject) - +Static method in class org.json.Cookie +
Convert a JSONObject into a cookie specification string. +
toString(JSONObject) - +Static method in class org.json.CookieList +
Convert a JSONObject into a cookie list. +
toString(JSONObject) - +Static method in class org.json.HTTP +
Convert a JSONObject into an HTTP header. +
toString() - +Method in class org.json.JSONArray +
Make a JSON text of this JSONArray. +
toString(int) - +Method in class org.json.JSONArray +
Make a prettyprinted JSON text of this JSONArray. +
toString(JSONArray) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONArray. +
toString(JSONObject) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONObject. +
toString() - +Method in class org.json.JSONObject +
Make a JSON text of this JSONObject. +
toString(int) - +Method in class org.json.JSONObject +
Make a prettyprinted JSON text of this JSONObject. +
toString() - +Method in class org.json.JSONStringer +
Return the JSON text. +
toString() - +Method in class org.json.JSONTokener +
Make a printable string of this JSONTokener. +
toString(Object) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
toString(Object, String) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
+
+

+U

+
+
unescape(String) - +Static method in class org.json.Cookie +
Convert %hh sequences to single characters, and + convert plus to space. +
+
+

+V

+
+
value(boolean) - +Method in class org.json.JSONWriter +
Append either the value true or the value + false. +
value(double) - +Method in class org.json.JSONWriter +
Append a double value. +
value(long) - +Method in class org.json.JSONWriter +
Append a long value. +
value(Object) - +Method in class org.json.JSONWriter +
Append an object value. +
valueToString(Object) - +Static method in class org.json.JSONObject +
Make a JSON text of an Object value. +
+
+

+W

+
+
wrap(Object) - +Static method in class org.json.JSONObject +
Wrap an object, if necessary. +
write(Writer) - +Method in class org.json.JSONArray +
Write the contents of the JSONArray as JSON text to a writer. +
write(Writer) - +Method in class org.json.JSONObject +
Write the contents of the JSONObject as JSON text to a writer. +
+
+

+X

+
+
XML - Class in org.json
This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XML() - +Constructor for class org.json.XML +
  +
XMLTokener - Class in org.json
The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
XMLTokener(String) - +Constructor for class org.json.XMLTokener +
Construct an XMLTokener from a string. +
+
+A B C D E G H I J K L M N O P Q R S T U V W X + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/index.html b/distribution/json4processing-0.1.2/reference/index.html new file mode 100644 index 000000000..76bc1e184 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/index.html @@ -0,0 +1,36 @@ + + + + + + +Javadocs: json4processing + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="org/json/package-summary.html">Non-frame version.</A> + + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/CDL.html b/distribution/json4processing-0.1.2/reference/org/json/CDL.html new file mode 100644 index 000000000..a180ab3e3 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/CDL.html @@ -0,0 +1,500 @@ + + + + + + +CDL (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CDL

+
+java.lang.Object
+  extended by org.json.CDL
+
+
+
+
public class CDL
extends java.lang.Object
+ + +

+This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text. Comma + delimited text is a very popular format for data interchange. It is + understood by most database, spreadsheet, and organizer programs. +

+ Each row of text represents a row in a table or a data record. Each row + ends with a NEWLINE character. Each row contains one or more values. + Values are separated by commas. A value can contain any character except + for comma, unless is is wrapped in single quotes or double quotes. +

+ The first row usually contains the names of the columns. +

+ A comma delimited list can be converted into a JSONArray of JSONObjects. + The names for the elements in the JSONObjects can be taken from the names + in the first row. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CDL() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArrayrowToJSONArray(JSONTokener x) + +
+          Produce a JSONArray of strings from a row of comma delimited values.
+static JSONObjectrowToJSONObject(JSONArray names, + JSONTokener x) + +
+          Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
+static java.lang.StringrowToString(JSONArray ja) + +
+          Produce a comma delimited text row from a JSONArray.
+static JSONArraytoJSONArray(JSONArray names, + JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONArray names, + java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static java.lang.StringtoString(JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects.
+static java.lang.StringtoString(JSONArray names, + JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CDL

+
+public CDL()
+
+
+ + + + + + + + +
+Method Detail
+ +

+rowToJSONArray

+
+public static JSONArray rowToJSONArray(JSONTokener x)
+                                throws JSONException
+
+
Produce a JSONArray of strings from a row of comma delimited values. +

+

+
Parameters:
x - A JSONTokener of the source text. +
Returns:
A JSONArray of strings. +
Throws: +
JSONException
+
+
+
+ +

+rowToJSONObject

+
+public static JSONObject rowToJSONObject(JSONArray names,
+                                         JSONTokener x)
+                                  throws JSONException
+
+
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +

+

+
Parameters:
names - A JSONArray of names. This is commonly obtained from the + first row of a comma delimited text file using the rowToJSONArray + method.
x - A JSONTokener of the source text. +
Returns:
A JSONObject combining the names and values. +
Throws: +
JSONException
+
+
+
+ +

+rowToString

+
+public static java.lang.String rowToString(JSONArray ja)
+
+
Produce a comma delimited text row from a JSONArray. Values containing + the comma character will be quoted. Troublesome characters may be + removed. +

+

+
Parameters:
ja - A JSONArray of strings. +
Returns:
A string ending in NEWLINE.
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
x - The JSONTokener containing the comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
x - A JSONTokener of the source text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects. The + first row will be a list of names obtained by inspecting the first + JSONObject. +

+

+
Parameters:
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray names,
+                                        JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. The list of names is not included in the + output. +

+

+
Parameters:
names - A JSONArray of strings.
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/Cookie.html b/distribution/json4processing-0.1.2/reference/org/json/Cookie.html new file mode 100644 index 000000000..87d79d291 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/Cookie.html @@ -0,0 +1,357 @@ + + + + + + +Cookie (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class Cookie

+
+java.lang.Object
+  extended by org.json.Cookie
+
+
+
+
public class Cookie
extends java.lang.Object
+ + +

+Convert a web browser cookie specification to a JSONObject and back. + JSON and Cookies are both notations for name/value pairs. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
Cookie() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie specification string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie specification string.
+static java.lang.Stringunescape(java.lang.String string) + +
+          Convert %hh sequences to single characters, and + convert plus to space.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Cookie

+
+public Cookie()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". This is a gentle form + of URL encoding, attempting to cause as little distortion to the + string as possible. The characters '=' and ';' are meta characters in + cookies. By convention, they are escaped using the URL-encoding. This is + only a convention, not a standard. Often, cookies are expected to have + encoded values. We encode '=' and ';' because we must. We encode '%' and + '+' because they are meta characters in URL encoding. +

+

+
Parameters:
string - The source string. +
Returns:
The escaped result.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie specification string into a JSONObject. The string + will contain a name value pair separated by '='. The name and the value + will be unescaped, possibly converting '+' and '%' sequences. The + cookie properties may follow, separated by ';', also represented as + name=value (except the secure property, which does not have a value). + The name will be stored under the key "name", and the value will be + stored under the key "value". This method does not do checking or + validation of the parameters. It only converts the cookie string into + a JSONObject. +

+

+
Parameters:
string - The cookie specification string. +
Returns:
A JSONObject containing "name", "value", and possibly other + members. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie specification string. The JSONObject + must contain "name" and "value" members. + If the JSONObject contains "expires", "domain", "path", or "secure" + members, they will be appended to the cookie specification string. + All other members are ignored. +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie specification string +
Throws: +
JSONException
+
+
+
+ +

+unescape

+
+public static java.lang.String unescape(java.lang.String string)
+
+
Convert %hh sequences to single characters, and + convert plus to space. +

+

+
Parameters:
string - A string that may contain + + (plus) and + %hh sequences. +
Returns:
The unescaped string.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/CookieList.html b/distribution/json4processing-0.1.2/reference/org/json/CookieList.html new file mode 100644 index 000000000..7b0e7d5fb --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/CookieList.html @@ -0,0 +1,297 @@ + + + + + + +CookieList (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CookieList

+
+java.lang.Object
+  extended by org.json.CookieList
+
+
+
+
public class CookieList
extends java.lang.Object
+ + +

+Convert a web browser cookie list string to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CookieList() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie list into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie list.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CookieList

+
+public CookieList()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie list into a JSONObject. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The names and the values + will be unescaped, possibly converting '+' and '%' sequences. + + To add a cookie to a cooklist, + cookielistJSONObject.put(cookieJSONObject.getString("name"), + cookieJSONObject.getString("value")); +

+

+
Parameters:
string - A cookie list string +
Returns:
A JSONObject +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie list. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The characters '%', '+', '=', and ';' + in the names and values are replaced by "%hh". +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie list string +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/HTTP.html b/distribution/json4processing-0.1.2/reference/org/json/HTTP.html new file mode 100644 index 000000000..2e0539375 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/HTTP.html @@ -0,0 +1,365 @@ + + + + + + +HTTP (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTP

+
+java.lang.Object
+  extended by org.json.HTTP
+
+
+
+
public class HTTP
extends java.lang.Object
+ + +

+Convert an HTTP header to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.StringCRLF + +
+          Carriage return/line feed.
+  + + + + + + + + + + +
+Constructor Summary
HTTP() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert an HTTP header string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into an HTTP header.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+CRLF

+
+public static final java.lang.String CRLF
+
+
Carriage return/line feed. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+HTTP

+
+public HTTP()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert an HTTP header string into a JSONObject. It can be a request + header or a response header. A request header will contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header will contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ In addition, the other parameters in the header will be captured, using + the HTTP field names as JSON names, so that
+    Date: Sun, 26 May 2002 18:06:04 GMT
+    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
+    Cache-Control: no-cache
+ become +
{...
+    Date: "Sun, 26 May 2002 18:06:04 GMT",
+    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
+    "Cache-Control": "no-cache",
+ ...}
+ It does no further checking or conversion. It does not parse dates. + It does not do '%' transforms on URLs. +

+

+
Parameters:
string - An HTTP header string. +
Returns:
A JSONObject containing the elements and attributes + of the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into an HTTP header. A request header must contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header must contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ Any other members of the JSONObject will be output as HTTP fields. + The result will end with two CRLF pairs. +

+

+
Parameters:
jo - A JSONObject +
Returns:
An HTTP header string. +
Throws: +
JSONException - if the object does not contain enough + information.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html new file mode 100644 index 000000000..d87509746 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html @@ -0,0 +1,277 @@ + + + + + + +HTTPTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTPTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.HTTPTokener
+
+
+
+
public class HTTPTokener
extends JSONTokener
+ + +

+The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HTTPTokener(java.lang.String string) + +
+          Construct an HTTPTokener from a string.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextToken() + +
+          Get the next token or string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HTTPTokener

+
+public HTTPTokener(java.lang.String string)
+
+
Construct an HTTPTokener from a string. +

+

+
Parameters:
string - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextToken

+
+public java.lang.String nextToken()
+                           throws JSONException
+
+
Get the next token or string. This is used in parsing HTTP headers. +

+

+ +
Returns:
A String. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html new file mode 100644 index 000000000..e7a9107bd --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html @@ -0,0 +1,1463 @@ + + + + + + +JSONArray (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONArray

+
+java.lang.Object
+  extended by org.json.JSONArray
+
+
+
+
public class JSONArray
extends java.lang.Object
+ + +

+A JSONArray is an ordered sequence of values. Its external text form is a + string wrapped in square brackets with commas separating the values. The + internal form is an object having get and opt + methods for accessing the values by index, and put methods for + adding or replacing values. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the + JSONObject.NULL object. +

+ The constructor can convert a JSON text into a Java object. The + toString method converts to JSON text. +

+ A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

+ The generic get() and opt() methods return an + object which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. +

+ The texts produced by the toString methods strictly conform to + JSON syntax rules. The constructors are more forgiving in the texts they will + accept: +

    +
  • An extra , (comma) may appear just + before the closing bracket.
  • +
  • The null value will be inserted when there + is , (comma) elision.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
  • +
  • Values can be separated by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the + 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONArray() + +
+          Construct an empty JSONArray.
JSONArray(java.util.Collection collection) + +
+          Construct a JSONArray from a Collection.
JSONArray(JSONTokener x) + +
+          Construct a JSONArray from a JSONTokener.
JSONArray(java.lang.Object array) + +
+          Construct a JSONArray from an array
JSONArray(java.lang.String source) + +
+          Construct a JSONArray from a source JSON text.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.Objectget(int index) + +
+          Get the object value associated with an index.
+ booleangetBoolean(int index) + +
+          Get the boolean value associated with an index.
+ doublegetDouble(int index) + +
+          Get the double value associated with an index.
+ intgetInt(int index) + +
+          Get the int value associated with an index.
+ JSONArraygetJSONArray(int index) + +
+          Get the JSONArray associated with an index.
+ JSONObjectgetJSONObject(int index) + +
+          Get the JSONObject associated with an index.
+ longgetLong(int index) + +
+          Get the long value associated with an index.
+ java.lang.StringgetString(int index) + +
+          Get the string associated with an index.
+ booleanisNull(int index) + +
+          Determine if the value is null.
+ java.lang.Stringjoin(java.lang.String separator) + +
+          Make a string from the contents of this JSONArray.
+ intlength() + +
+          Get the number of elements in the JSONArray, included nulls.
+ java.lang.Objectopt(int index) + +
+          Get the optional object value associated with an index.
+ booleanoptBoolean(int index) + +
+          Get the optional boolean value associated with an index.
+ booleanoptBoolean(int index, + boolean defaultValue) + +
+          Get the optional boolean value associated with an index.
+ doubleoptDouble(int index) + +
+          Get the optional double value associated with an index.
+ doubleoptDouble(int index, + double defaultValue) + +
+          Get the optional double value associated with an index.
+ intoptInt(int index) + +
+          Get the optional int value associated with an index.
+ intoptInt(int index, + int defaultValue) + +
+          Get the optional int value associated with an index.
+ JSONArrayoptJSONArray(int index) + +
+          Get the optional JSONArray associated with an index.
+ JSONObjectoptJSONObject(int index) + +
+          Get the optional JSONObject associated with an index.
+ longoptLong(int index) + +
+          Get the optional long value associated with an index.
+ longoptLong(int index, + long defaultValue) + +
+          Get the optional long value associated with an index.
+ java.lang.StringoptString(int index) + +
+          Get the optional string value associated with an index.
+ java.lang.StringoptString(int index, + java.lang.String defaultValue) + +
+          Get the optional string associated with an index.
+ JSONArrayput(boolean value) + +
+          Append a boolean value.
+ JSONArrayput(java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(double value) + +
+          Append a double value.
+ JSONArrayput(int value) + +
+          Append an int value.
+ JSONArrayput(int index, + boolean value) + +
+          Put or replace a boolean value in the JSONArray.
+ JSONArrayput(int index, + java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(int index, + double value) + +
+          Put or replace a double value.
+ JSONArrayput(int index, + int value) + +
+          Put or replace an int value.
+ JSONArrayput(int index, + long value) + +
+          Put or replace a long value.
+ JSONArrayput(int index, + java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
+ JSONArrayput(int index, + java.lang.Object value) + +
+          Put or replace an object value in the JSONArray.
+ JSONArrayput(long value) + +
+          Append an long value.
+ JSONArrayput(java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
+ JSONArrayput(java.lang.Object value) + +
+          Append an object value.
+ java.lang.Objectremove(int index) + +
+          Remove an index and close the hole.
+ JSONObjecttoJSONObject(JSONArray names) + +
+          Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONArray.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONArray.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONArray as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONArray

+
+public JSONArray()
+
+
Construct an empty JSONArray. +

+

+
+ +

+JSONArray

+
+public JSONArray(JSONTokener x)
+          throws JSONException
+
+
Construct a JSONArray from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.String source)
+          throws JSONException
+
+
Construct a JSONArray from a source JSON text. +

+

+
Parameters:
source - A string that begins with + [ (left bracket) + and ends with ] (right bracket). +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.util.Collection collection)
+
+
Construct a JSONArray from a Collection. +

+

+
Parameters:
collection - A Collection.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.Object array)
+
+
Construct a JSONArray from an array +

+

+ +
Throws: +
JSONException - If not an array.
+
+ + + + + + + + +
+Method Detail
+ +

+get

+
+public java.lang.Object get(int index)
+                     throws JSONException
+
+
Get the object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value. +
Throws: +
JSONException - If there is no value for the index.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(int index)
+                   throws JSONException
+
+
Get the boolean value associated with an index. + The string values "true" and "false" are converted to boolean. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth. +
Throws: +
JSONException - If there is no value for the index or if the + value is not convertible to boolean.
+
+
+
+ +

+getDouble

+
+public double getDouble(int index)
+                 throws JSONException
+
+
Get the double value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(int index)
+           throws JSONException
+
+
Get the int value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value is not a number.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(int index)
+                       throws JSONException
+
+
Get the JSONArray associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONArray value. +
Throws: +
JSONException - If there is no value for the index. or if the + value is not a JSONArray
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(int index)
+                         throws JSONException
+
+
Get the JSONObject associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONObject value. +
Throws: +
JSONException - If there is no value for the index or if the + value is not a JSONObject
+
+
+
+ +

+getLong

+
+public long getLong(int index)
+             throws JSONException
+
+
Get the long value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getString

+
+public java.lang.String getString(int index)
+                           throws JSONException
+
+
Get the string associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A string value. +
Throws: +
JSONException - If there is no string value for the index.
+
+
+
+ +

+isNull

+
+public boolean isNull(int index)
+
+
Determine if the value is null. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
true if the value at the index is null, or if there is no value.
+
+
+
+ +

+join

+
+public java.lang.String join(java.lang.String separator)
+                      throws JSONException
+
+
Make a string from the contents of this JSONArray. The + separator string is inserted between each element. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
separator - A string that will be inserted between the elements. +
Returns:
a string. +
Throws: +
JSONException - If the array contains an invalid number.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of elements in the JSONArray, included nulls. +

+

+ +
Returns:
The length (or size).
+
+
+
+ +

+opt

+
+public java.lang.Object opt(int index)
+
+
Get the optional object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value, or null if there is no + object at that index.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index)
+
+
Get the optional boolean value associated with an index. + It returns false if there is no value at that index, + or if the value is not Boolean.TRUE or the String "true". +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index,
+                          boolean defaultValue)
+
+
Get the optional boolean value associated with an index. + It returns the defaultValue if there is no value at that index or if + it is not a Boolean or the String "true" or "false" (case insensitive). +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - A boolean default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index)
+
+
Get the optional double value associated with an index. + NaN is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index,
+                        double defaultValue)
+
+
Get the optional double value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - subscript
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index)
+
+
Get the optional int value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index,
+                  int defaultValue)
+
+
Get the optional int value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(int index)
+
+
Get the optional JSONArray associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONArray value, or null if the index has no value, + or if the value is not a JSONArray.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(int index)
+
+
Get the optional JSONObject associated with an index. + Null is returned if the key is not found, or null if the index has + no value, or if the value is not a JSONObject. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONObject value.
+
+
+
+ +

+optLong

+
+public long optLong(int index)
+
+
Get the optional long value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optLong

+
+public long optLong(int index,
+                    long defaultValue)
+
+
Get the optional long value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index)
+
+
Get the optional string value associated with an index. It returns an + empty string if there is no value at that index. If the value + is not a string and is not null, then it is coverted to a string. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A String value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index,
+                                  java.lang.String defaultValue)
+
+
Get the optional string associated with an index. + The defaultValue is returned if the key is not found. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
A String value.
+
+
+
+ +

+put

+
+public JSONArray put(boolean value)
+
+
Append a boolean value. This increases the array's length by one. +

+

+
Parameters:
value - A boolean value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Collection value)
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
value - A Collection value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(double value)
+
+
Append a double value. This increases the array's length by one. +

+

+
Parameters:
value - A double value. +
Returns:
this. +
Throws: +
JSONException - if the value is not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int value)
+
+
Append an int value. This increases the array's length by one. +

+

+
Parameters:
value - An int value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(long value)
+
+
Append an long value. This increases the array's length by one. +

+

+
Parameters:
value - A long value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Map value)
+
+
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
value - A Map value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.lang.Object value)
+
+
Append an object value. This increases the array's length by one. +

+

+
Parameters:
value - An object value. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     boolean value)
+
+
Put or replace a boolean value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - A boolean value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Collection value)
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
index - The subscript.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     double value)
+
+
Put or replace a double value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A double value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     int value)
+
+
Put or replace an int value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - An int value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     long value)
+
+
Put or replace a long value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A long value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Map value)
+
+
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +

+

+
Parameters:
index - The subscript.
value - The Map value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.lang.Object value)
+
+
Put or replace an object value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - The value to put into the array. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(int index)
+
+
Remove an index and close the hole. +

+

+
Parameters:
index - The index of the element to be removed. +
Returns:
The value that was associated with the index, + or null if there was no value.
+
+
+
+ +

+toJSONObject

+
+public JSONObject toJSONObject(JSONArray names)
+                        throws JSONException
+
+
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. These will be + paired with the values. +
Returns:
A JSONObject, or null if there are no names or if this JSONArray + has no values. +
Throws: +
JSONException - If any of the names are null.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONArray. For compactness, no + unnecessary whitespace is added. If it is not possible to produce a + syntactically correct JSON text then null will be returned instead. This + could occur if the array contains an invalid number. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, transmittable + representation of the array.
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+                          throws JSONException
+
+
Make a prettyprinted JSON text of this JSONArray. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of + indentation. +
Returns:
a printable, displayable, transmittable + representation of the object, beginning + with [ (left bracket) and ending + with ] (right bracket). +
Throws: +
JSONException
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+
+
Write the contents of the JSONArray as JSON text to a writer. + For compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONException.html b/distribution/json4processing-0.1.2/reference/org/json/JSONException.html new file mode 100644 index 000000000..694134ce5 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONException.html @@ -0,0 +1,291 @@ + + + + + + +JSONException (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONException

+
+java.lang.Object
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.json.JSONException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public class JSONException
extends java.lang.Exception
+ + +

+The JSONException is thrown by the JSON.org classes when things are amiss. +

+ +

+

+
Author:
+
JSON.org
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
JSONException(java.lang.String message) + +
+          Constructs a JSONException with an explanatory message.
JSONException(java.lang.Throwable cause) + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.ThrowablegetCause() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONException

+
+public JSONException(java.lang.String message)
+
+
Constructs a JSONException with an explanatory message. +

+

+
Parameters:
message - Detail about the reason for the exception.
+
+
+ +

+JSONException

+
+public JSONException(java.lang.Throwable cause)
+
+
+ + + + + + + + +
+Method Detail
+ +

+getCause

+
+public java.lang.Throwable getCause()
+
+
+
Overrides:
getCause in class java.lang.Throwable
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONML.html b/distribution/json4processing-0.1.2/reference/org/json/JSONML.html new file mode 100644 index 000000000..df34ddb55 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONML.html @@ -0,0 +1,422 @@ + + + + + + +JSONML (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONML

+
+java.lang.Object
+  extended by org.json.JSONML
+
+
+
+
public class JSONML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONArraytoJSONArray(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static JSONObjecttoJSONObject(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static java.lang.StringtoString(JSONArray ja) + +
+          Reverse the JSONML transformation, making an XML text from a JSONArray.
+static java.lang.StringtoString(JSONObject jo) + +
+          Reverse the JSONML transformation, making an XML text from a JSONObject.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONML

+
+public JSONML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(XMLTokener x)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child content and tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(XMLTokener x)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener of the XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONArray. +

+

+
Parameters:
ja - A JSONArray. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONObject. + The JSONObject must contain a "tagName" property. If it has children, + then it must have a "childNodes" property containing an array of objects. + The other properties are attributes with string values. +

+

+
Parameters:
jo - A JSONObject. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html new file mode 100644 index 000000000..7d0c90a7c --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html @@ -0,0 +1,1847 @@ + + + + + + +JSONObject (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONObject

+
+java.lang.Object
+  extended by org.json.JSONObject
+
+
+
+
public class JSONObject
extends java.lang.Object
+ + +

+A JSONObject is an unordered collection of name/value pairs. Its external + form is a string wrapped in curly braces with colons between the names and + values, and commas between the values and names. The internal form is an + object having get and opt methods for accessing the + values by name, and put methods for adding or replacing values + by name. The values can be any of these types: Boolean, + JSONArray, JSONObject, Number, + String, or the JSONObject.NULL object. A JSONObject + constructor can be used to convert an external form JSON text into an + internal form whose values can be retrieved with the get and + opt methods, or to convert values into a JSON text using the + put and toString methods. A get method + returns a value if one can be found, and throws an exception if one cannot be + found. An opt method returns a default value instead of throwing + an exception, and so is useful for obtaining optional values. +

+ The generic get() and opt() methods return an + object, which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. The opt methods differ from the get methods in that they do + not throw. Instead, they return a specified value, such as null. +

+ The put methods add or replace values in an object. For example, + +

+ myString = new JSONObject().put("JSON", "Hello, World!").toString();
+ 
+ + produces the string {"JSON": "Hello, World"}. +

+ The texts produced by the toString methods strictly conform to + the JSON syntax rules. The constructors are more forgiving in the texts they + will accept: +

    +
  • An extra , (comma) may appear just + before the closing brace.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, and + if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers and + if they are not the reserved words true, false, or + null.
  • +
  • Keys can be followed by = or => as well as by + :.
  • +
  • Values can be followed by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.ObjectNULL + +
+          It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONObject() + +
+          Construct an empty JSONObject.
JSONObject(JSONObject jo, + java.lang.String[] names) + +
+          Construct a JSONObject from a subset of another JSONObject.
JSONObject(JSONTokener x) + +
+          Construct a JSONObject from a JSONTokener.
JSONObject(java.util.Map map) + +
+          Construct a JSONObject from a Map.
JSONObject(java.lang.Object bean) + +
+          Construct a JSONObject from an Object using bean getters.
JSONObject(java.lang.Object object, + java.lang.String[] names) + +
+          Construct a JSONObject from an Object, using reflection to find the + public members.
JSONObject(java.lang.String source) + +
+          Construct a JSONObject from a source JSON text string.
JSONObject(java.lang.String baseName, + java.util.Locale locale) + +
+          Construct a JSONObject from a ResourceBundle.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONObjectaccumulate(java.lang.String key, + java.lang.Object value) + +
+          Accumulate values under a key.
+ JSONObjectappend(java.lang.String key, + java.lang.Object value) + +
+          Append values to the array under a key.
+static java.lang.StringdoubleToString(double d) + +
+          Produce a string from a double.
+ java.lang.Objectget(java.lang.String key) + +
+          Get the value object associated with a key.
+ booleangetBoolean(java.lang.String key) + +
+          Get the boolean value associated with a key.
+ doublegetDouble(java.lang.String key) + +
+          Get the double value associated with a key.
+ intgetInt(java.lang.String key) + +
+          Get the int value associated with a key.
+ JSONArraygetJSONArray(java.lang.String key) + +
+          Get the JSONArray value associated with a key.
+ JSONObjectgetJSONObject(java.lang.String key) + +
+          Get the JSONObject value associated with a key.
+ longgetLong(java.lang.String key) + +
+          Get the long value associated with a key.
+static java.lang.String[]getNames(JSONObject jo) + +
+          Get an array of field names from a JSONObject.
+static java.lang.String[]getNames(java.lang.Object object) + +
+          Get an array of field names from an Object.
+ java.lang.StringgetString(java.lang.String key) + +
+          Get the string associated with a key.
+ booleanhas(java.lang.String key) + +
+          Determine if the JSONObject contains a specific key.
+ JSONObjectincrement(java.lang.String key) + +
+          Increment a property of a JSONObject.
+ booleanisNull(java.lang.String key) + +
+          Determine if the value associated with the key is null or if there is no + value.
+ java.util.Iteratorkeys() + +
+          Get an enumeration of the keys of the JSONObject.
+ intlength() + +
+          Get the number of keys stored in the JSONObject.
+ JSONArraynames() + +
+          Produce a JSONArray containing the names of the elements of this + JSONObject.
+static java.lang.StringnumberToString(java.lang.Number number) + +
+          Produce a string from a Number.
+ java.lang.Objectopt(java.lang.String key) + +
+          Get an optional value associated with a key.
+ booleanoptBoolean(java.lang.String key) + +
+          Get an optional boolean associated with a key.
+ booleanoptBoolean(java.lang.String key, + boolean defaultValue) + +
+          Get an optional boolean associated with a key.
+ doubleoptDouble(java.lang.String key) + +
+          Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
+ doubleoptDouble(java.lang.String key, + double defaultValue) + +
+          Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
+ intoptInt(java.lang.String key) + +
+          Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
+ intoptInt(java.lang.String key, + int defaultValue) + +
+          Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
+ JSONArrayoptJSONArray(java.lang.String key) + +
+          Get an optional JSONArray associated with a key.
+ JSONObjectoptJSONObject(java.lang.String key) + +
+          Get an optional JSONObject associated with a key.
+ longoptLong(java.lang.String key) + +
+          Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
+ longoptLong(java.lang.String key, + long defaultValue) + +
+          Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
+ java.lang.StringoptString(java.lang.String key) + +
+          Get an optional string associated with a key.
+ java.lang.StringoptString(java.lang.String key, + java.lang.String defaultValue) + +
+          Get an optional string associated with a key.
+ JSONObjectput(java.lang.String key, + boolean value) + +
+          Put a key/boolean pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Collection value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
+ JSONObjectput(java.lang.String key, + double value) + +
+          Put a key/double pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + int value) + +
+          Put a key/int pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + long value) + +
+          Put a key/long pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Map value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
+ JSONObjectput(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject.
+ JSONObjectputOnce(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
+ JSONObjectputOpt(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
+static java.lang.Stringquote(java.lang.String string) + +
+          Produce a string in double quotes with backslash sequences in all the + right places.
+ java.lang.Objectremove(java.lang.String key) + +
+          Remove a name and its value, if present.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static voidtestValidity(java.lang.Object o) + +
+          Throw an exception if the object is a NaN or infinite number.
+ JSONArraytoJSONArray(JSONArray names) + +
+          Produce a JSONArray containing the values of the members of this + JSONObject.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONObject.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONObject.
+static java.lang.StringvalueToString(java.lang.Object value) + +
+          Make a JSON text of an Object value.
+static java.lang.Objectwrap(java.lang.Object object) + +
+          Wrap an object, if necessary.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONObject as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+NULL

+
+public static final java.lang.Object NULL
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null". +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+JSONObject

+
+public JSONObject()
+
+
Construct an empty JSONObject. +

+

+
+ +

+JSONObject

+
+public JSONObject(JSONObject jo,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from a subset of another JSONObject. An array of + strings is used to identify the keys that should be copied. Missing keys + are ignored. +

+

+
Parameters:
jo - A JSONObject.
names - An array of strings. +
Throws: +
JSONException +
JSONException - If a value is a non-finite number or if a name is + duplicated.
+
+
+ +

+JSONObject

+
+public JSONObject(JSONTokener x)
+
+
Construct a JSONObject from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener object containing the source string. +
Throws: +
JSONException - If there is a syntax error in the source string or a + duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.util.Map map)
+
+
Construct a JSONObject from a Map. +

+

+
Parameters:
map - A map object that can be used to initialize the contents of + the JSONObject. +
Throws: +
JSONException
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object bean)
+
+
Construct a JSONObject from an Object using bean getters. It reflects on + all of the public methods of the object. For each of the methods with no + parameters and a name starting with "get" or + "is" followed by an uppercase letter, the method is invoked, + and a key and the value returned from the getter method are put into the + new JSONObject. + + The key is formed by removing the "get" or "is" + prefix. If the second remaining character is not upper case, then the + first character is converted to lower case. + + For example, if an object has a method named "getName", and + if the result of calling object.getName() is + "Larry Fine", then the JSONObject will contain + "name": "Larry Fine". +

+

+
Parameters:
bean - An object that has getter methods that should be used to make + a JSONObject.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object object,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from an Object, using reflection to find the + public members. The resulting JSONObject's keys will be the strings from + the names array, and the values will be the field values associated with + those keys in the object. If a key is not found or not visible, then it + will not be copied into the new JSONObject. +

+

+
Parameters:
object - An object that has fields that should be used to make a + JSONObject.
names - An array of strings, the names of the fields to be obtained + from the object.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String source)
+
+
Construct a JSONObject from a source JSON text string. This is the most + commonly used JSONObject constructor. +

+

+
Parameters:
source - A string beginning with { (left + brace) and ending with } +  (right brace). +
Throws: +
JSONException - If there is a syntax error in the source string or a + duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String baseName,
+                  java.util.Locale locale)
+
+
Construct a JSONObject from a ResourceBundle. +

+

+
Parameters:
baseName - The ResourceBundle base name.
locale - The Locale to load the ResourceBundle for. +
Throws: +
JSONException - If any JSONExceptions are detected.
+
+ + + + + + + + +
+Method Detail
+ +

+accumulate

+
+public JSONObject accumulate(java.lang.String key,
+                             java.lang.Object value)
+
+
Accumulate values under a key. It is similar to the put method except + that if there is already an object stored under the key then a JSONArray + is stored under the key to hold all of the accumulated values. If there + is already a JSONArray, then the new value is appended to it. In + contrast, the put method replaces the previous value. + + If only one value is accumulated that is not a JSONArray, then the result + will be the same as using put. But if multiple values are accumulated, + then the result will be like append. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the value is an invalid number or if the key is null.
+
+
+
+ +

+append

+
+public JSONObject append(java.lang.String key,
+                         java.lang.Object value)
+
+
Append values to the array under a key. If the key does not exist in the + JSONObject, then the key is put in the JSONObject with its value being a + JSONArray containing the value parameter. If the key was already + associated with a JSONArray, then the value parameter is appended to it. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the current value associated with + the key is not a JSONArray.
+
+
+
+ +

+doubleToString

+
+public static java.lang.String doubleToString(double d)
+
+
Produce a string from a double. The string "null" will be returned if the + number is not finite. +

+

+
Parameters:
d - A double. +
Returns:
A String.
+
+
+
+ +

+get

+
+public java.lang.Object get(java.lang.String key)
+
+
Get the value object associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The object associated with the key. +
Throws: +
JSONException - if the key is not found.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(java.lang.String key)
+
+
Get the boolean value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The truth. (False if it failes to find the value) +
Throws: +
JSONException - if the value is not a Boolean or the String "true" or + "false".
+
+
+
+ +

+getDouble

+
+public double getDouble(java.lang.String key)
+
+
Get the double value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The numeric value. -1 if it failes to find the value +
Throws: +
JSONException - if the key is not found or if the value is not a Number + object and cannot be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(java.lang.String key)
+
+
Get the int value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The integer value. (-1 if it failes to get the integer) +
Throws: +
JSONException - if the key is not found or if the value cannot be converted + to an integer.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(java.lang.String key)
+
+
Get the JSONArray value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value. (null if failes to find the array) +
Throws: +
JSONException - if the key is not found or if the value is not a JSONArray.
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(java.lang.String key)
+
+
Get the JSONObject value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value. +
Throws: +
JSONException - if the key is not found or if the value is not a JSONObject.
+
+
+
+ +

+getLong

+
+public long getLong(java.lang.String key)
+
+
Get the long value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The long value. (-1 if it failes) +
Throws: +
JSONException - if the key is not found or if the value cannot be converted + to a long.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(JSONObject jo)
+
+
Get an array of field names from a JSONObject. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(java.lang.Object object)
+
+
Get an array of field names from an Object. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getString

+
+public java.lang.String getString(java.lang.String key)
+
+
Get the string associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value. (empty string if it fails) +
Throws: +
JSONException - if there is no string value for the key.
+
+
+
+ +

+has

+
+public boolean has(java.lang.String key)
+
+
Determine if the JSONObject contains a specific key. +

+

+
Parameters:
key - A key string. +
Returns:
true if the key exists in the JSONObject.
+
+
+
+ +

+increment

+
+public JSONObject increment(java.lang.String key)
+
+
Increment a property of a JSONObject. If there is no such property, + create one with a value of 1. If there is such a property, and if it is + an Integer, Long, Double, or Float, then add one to it. +

+

+
Parameters:
key - A key string. +
Returns:
this. +
Throws: +
JSONException - If there is already a property with this name that is not an + Integer, Long, Double, or Float.
+
+
+
+ +

+isNull

+
+public boolean isNull(java.lang.String key)
+
+
Determine if the value associated with the key is null or if there is no + value. +

+

+
Parameters:
key - A key string. +
Returns:
true if there is no value associated with the key or if the value + is the JSONObject.NULL object.
+
+
+
+ +

+keys

+
+public java.util.Iterator keys()
+
+
Get an enumeration of the keys of the JSONObject. +

+

+ +
Returns:
An iterator of the keys.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of keys stored in the JSONObject. +

+

+ +
Returns:
The number of keys in the JSONObject.
+
+
+
+ +

+names

+
+public JSONArray names()
+
+
Produce a JSONArray containing the names of the elements of this + JSONObject. +

+

+ +
Returns:
A JSONArray containing the key strings, or null if the JSONObject + is empty.
+
+
+
+ +

+numberToString

+
+public static java.lang.String numberToString(java.lang.Number number)
+
+
Produce a string from a Number. +

+

+
Parameters:
number - A Number +
Returns:
A String. +
Throws: +
JSONException - If n is a non-finite number.
+
+
+
+ +

+opt

+
+public java.lang.Object opt(java.lang.String key)
+
+
Get an optional value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value, or null if there is no value.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key)
+
+
Get an optional boolean associated with a key. It returns false if there + is no such key, or if the value is not Boolean.TRUE or the String "true". +

+

+
Parameters:
key - A key string. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key,
+                          boolean defaultValue)
+
+
Get an optional boolean associated with a key. It returns the + defaultValue if there is no such key, or if it is not a Boolean or the + String "true" or "false" (case insensitive). +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key)
+
+
Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number. If the value is a string, an attempt + will be made to evaluate it as a number. +

+

+
Parameters:
key - A string which is the key. +
Returns:
An object which is the value.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key,
+                        double defaultValue)
+
+
Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number. If the value is a + string, an attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key)
+
+
Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key,
+                  int defaultValue)
+
+
Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(java.lang.String key)
+
+
Get an optional JSONArray associated with a key. It returns null if there + is no such key, or if its value is not a JSONArray. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(java.lang.String key)
+
+
Get an optional JSONObject associated with a key. It returns null if + there is no such key, or if its value is not a JSONObject. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key)
+
+
Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key,
+                    long defaultValue)
+
+
Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key)
+
+
Get an optional string associated with a key. It returns an empty string + if there is no such key. If the value is not a string and is not null, + then it is converted to a string. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key,
+                                  java.lang.String defaultValue)
+
+
Get an optional string associated with a key. It returns the defaultValue + if there is no such key. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
A string which is the value.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      boolean value)
+
+
Put a key/boolean pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A boolean which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Collection value)
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
key - A key string.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      double value)
+
+
Put a key/double pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A double which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the number is invalid.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      int value)
+
+
Put a key/int pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - An int which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      long value)
+
+
Put a key/long pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A long which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Map value)
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
key - A key string.
value - A Map value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.lang.Object value)
+
+
Put a key/value pair in the JSONObject. If the value is null, then the + key will be removed from the JSONObject if it is present. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is non-finite number or if the key is null.
+
+
+
+ +

+putOnce

+
+public JSONObject putOnce(java.lang.String key,
+                          java.lang.Object value)
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name. +

+

+
Parameters:
key -
value - +
Returns:
his. +
Throws: +
JSONException - if the key is a duplicate
+
+
+
+ +

+putOpt

+
+public JSONObject putOpt(java.lang.String key,
+                         java.lang.Object value)
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is a non-finite number.
+
+
+
+ +

+quote

+
+public static java.lang.String quote(java.lang.String string)
+
+
Produce a string in double quotes with backslash sequences in all the + right places. A backslash will be inserted within +
+
Parameters:
string - A String +
Returns:
A String correctly formatted for insertion in a JSON text.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(java.lang.String key)
+
+
Remove a name and its value, if present. +

+

+
Parameters:
key - The name to be removed. +
Returns:
The value that was associated with the name, or null if there was + no value.
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+testValidity

+
+public static void testValidity(java.lang.Object o)
+                         throws JSONException
+
+
Throw an exception if the object is a NaN or infinite number. +

+

+
Parameters:
o - The object to test. +
Throws: +
JSONException - If o is a non-finite number.
+
+
+
+ +

+toJSONArray

+
+public JSONArray toJSONArray(JSONArray names)
+                      throws JSONException
+
+
Produce a JSONArray containing the values of the members of this + JSONObject. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. This determines + the sequence of the values in the result. +
Returns:
A JSONArray of values. +
Throws: +
JSONException - If any of the values are non-finite numbers.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONObject. For compactness, no whitespace is + added. If this would not result in a syntactically correct JSON text, + then null will be returned instead. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+
+
Make a prettyprinted JSON text of this JSONObject. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of indentation. +
Returns:
a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace). +
Throws: +
JSONException - If the object contains an invalid number.
+
+
+
+ +

+valueToString

+
+public static java.lang.String valueToString(java.lang.Object value)
+
+
Make a JSON text of an Object value. If the object has an + value.toJSONString() method, then that method will be used to produce the + JSON text. The method is required to produce a strictly conforming text. + If the object does not contain a toJSONString method (which is the most + common case), then a text will be produced by other means. If the value + is an array or Collection, then a JSONArray will be made from it and its + toJSONString method will be called. If the value is a MAP, then a + JSONObject will be made from it and its toJSONString method will be + called. Otherwise, the value's toString method will be called, and the + result will be quoted. + +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
value - The value to be serialized. +
Returns:
a printable, displayable, transmittable representation of the + object, beginning with { (left + brace) and ending with } (right + brace). +
Throws: +
JSONException - If the value is or contains an invalid number.
+
+
+
+ +

+wrap

+
+public static java.lang.Object wrap(java.lang.Object object)
+
+
Wrap an object, if necessary. If the object is null, return the NULL + object. If it is an array or collection, wrap it in a JSONArray. If it is + a map, wrap it in a JSONObject. If it is a standard property (Double, + String, et al) then it is already wrapped. Otherwise, if it comes from + one of the java packages, turn it into a string. And if it doesn't, try + to wrap it in a JSONObject. If the wrapping fails, then null is returned. +

+

+
Parameters:
object - The object to wrap +
Returns:
The wrapped value
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+
+
Write the contents of the JSONObject as JSON text to a writer. For + compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONString.html b/distribution/json4processing-0.1.2/reference/org/json/JSONString.html new file mode 100644 index 000000000..5d208848c --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONString.html @@ -0,0 +1,216 @@ + + + + + + +JSONString (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Interface JSONString

+
+
+
public interface JSONString
+ + +

+The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object). The + toJSONString method will be used instead of the default behavior + of using the Object's toString() method and quoting the result. +

+ +

+


+ +

+ + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoJSONString() + +
+          The toJSONString method allows a class to produce its own JSON + serialization.
+  +

+ + + + + + + + +
+Method Detail
+ +

+toJSONString

+
+java.lang.String toJSONString()
+
+
The toJSONString method allows a class to produce its own JSON + serialization. +

+

+ +
Returns:
A strictly syntactically correct JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html new file mode 100644 index 000000000..25118de0f --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html @@ -0,0 +1,303 @@ + + + + + + +JSONStringer (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONStringer

+
+java.lang.Object
+  extended by org.json.JSONWriter
+      extended by org.json.JSONStringer
+
+
+
+
public class JSONStringer
extends JSONWriter
+ + +

+JSONStringer provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONStringer can produce one JSON text. +

+ A JSONStringer instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting cascade style. For example,

+ myString = new JSONStringer()
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject()
+     .toString();
which produces the string
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONStringer adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONStringer() + +
+          Make a fresh JSONStringer.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoString() + +
+          Return the JSON text.
+ + + + + + + +
Methods inherited from class org.json.JSONWriter
array, endArray, endObject, key, object, value, value, value, value
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONStringer

+
+public JSONStringer()
+
+
Make a fresh JSONStringer. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+toString

+
+public java.lang.String toString()
+
+
Return the JSON text. This method is used to obtain the product of the + JSONStringer instance. It will return null if there was a + problem in the construction of the JSON text (such as the calls to + array were not properly balanced with calls to + endArray). +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
The JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html new file mode 100644 index 000000000..16607dd6c --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html @@ -0,0 +1,667 @@ + + + + + + +JSONTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+
+
+
Direct Known Subclasses:
HTTPTokener, XMLTokener
+
+
+
+
public class JSONTokener
extends java.lang.Object
+ + +

+A JSONTokener takes a source string and extracts characters and tokens from + it. It is used by the JSONObject and JSONArray constructors to parse + JSON source strings. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONTokener(java.io.InputStream inputStream) + +
+          Construct a JSONTokener from an InputStream.
JSONTokener(java.io.Reader reader) + +
+          Construct a JSONTokener from a Reader.
JSONTokener(java.lang.String s) + +
+          Construct a JSONTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidback() + +
+          Back up one character.
+static intdehexchar(char c) + +
+          Get the hex value of a character (base16).
+ booleanend() + +
+           
+ booleanmore() + +
+          Determine if the source string still contains characters that next() + can consume.
+ charnext() + +
+          Get the next character in the source string.
+ charnext(char c) + +
+          Consume the next character, and check that it matches a specified + character.
+ java.lang.Stringnext(int n) + +
+          Get the next n characters.
+ charnextClean() + +
+          Get the next char in the string, skipping whitespace.
+ java.lang.StringnextString(char quote) + +
+          Return the characters up to the next close quote character.
+ java.lang.StringnextTo(char delimiter) + +
+          Get the text up but not including the specified character or the + end of line, whichever comes first.
+ java.lang.StringnextTo(java.lang.String delimiters) + +
+          Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
+ java.lang.ObjectnextValue() + +
+          Get the next value.
+ charskipTo(char to) + +
+          Skip characters until the next character is the requested character.
+ JSONExceptionsyntaxError(java.lang.String message) + +
+          Make a JSONException to signal a syntax error.
+ java.lang.StringtoString() + +
+          Make a printable string of this JSONTokener.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONTokener

+
+public JSONTokener(java.io.Reader reader)
+
+
Construct a JSONTokener from a Reader. +

+

+
Parameters:
reader - A reader.
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.io.InputStream inputStream)
+            throws JSONException
+
+
Construct a JSONTokener from an InputStream. +

+

+ +
Throws: +
JSONException
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.lang.String s)
+
+
Construct a JSONTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+back

+
+public void back()
+          throws JSONException
+
+
Back up one character. This provides a sort of lookahead capability, + so that you can test for a digit or letter before attempting to parse + the next number or identifier. +

+

+ +
Throws: +
JSONException
+
+
+
+ +

+dehexchar

+
+public static int dehexchar(char c)
+
+
Get the hex value of a character (base16). +

+

+
Parameters:
c - A character between '0' and '9' or between 'A' and 'F' or + between 'a' and 'f'. +
Returns:
An int between 0 and 15, or -1 if c was not a hex digit.
+
+
+
+ +

+end

+
+public boolean end()
+
+
+
+
+
+
+ +

+more

+
+public boolean more()
+             throws JSONException
+
+
Determine if the source string still contains characters that next() + can consume. +

+

+ +
Returns:
true if not yet at the end of the source. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next()
+          throws JSONException
+
+
Get the next character in the source string. +

+

+ +
Returns:
The next character, or 0 if past the end of the source string. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next(char c)
+          throws JSONException
+
+
Consume the next character, and check that it matches a specified + character. +

+

+
Parameters:
c - The character to match. +
Returns:
The character. +
Throws: +
JSONException - if the character does not match.
+
+
+
+ +

+next

+
+public java.lang.String next(int n)
+                      throws JSONException
+
+
Get the next n characters. +

+

+
Parameters:
n - The number of characters to take. +
Returns:
A string of n characters. +
Throws: +
JSONException - Substring bounds error if there are not + n characters remaining in the source string.
+
+
+
+ +

+nextClean

+
+public char nextClean()
+               throws JSONException
+
+
Get the next char in the string, skipping whitespace. +

+

+ +
Returns:
A character, or 0 if there are no more characters. +
Throws: +
JSONException
+
+
+
+ +

+nextString

+
+public java.lang.String nextString(char quote)
+                            throws JSONException
+
+
Return the characters up to the next close quote character. + Backslash processing is done. The formal JSON format does not + allow strings in single quotes, but an implementation is allowed to + accept them. +

+

+
Parameters:
quote - The quoting character, either + " (double quote) or + ' (single quote). +
Returns:
A String. +
Throws: +
JSONException - Unterminated string.
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(char delimiter)
+                        throws JSONException
+
+
Get the text up but not including the specified character or the + end of line, whichever comes first. +

+

+
Parameters:
delimiter - A delimiter character. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(java.lang.String delimiters)
+                        throws JSONException
+
+
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +

+

+
Parameters:
delimiters - A set of delimiter characters. +
Returns:
A string, trimmed. +
Throws: +
JSONException
+
+
+
+ +

+nextValue

+
+public java.lang.Object nextValue()
+                           throws JSONException
+
+
Get the next value. The value can be a Boolean, Double, Integer, + JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. +

+

+ +
Returns:
An object. +
Throws: +
JSONException - If syntax error.
+
+
+
+ +

+skipTo

+
+public char skipTo(char to)
+            throws JSONException
+
+
Skip characters until the next character is the requested character. + If the requested character is not found, no characters are skipped. +

+

+
Parameters:
to - A character to skip to. +
Returns:
The requested character, or zero if the requested character + is not found. +
Throws: +
JSONException
+
+
+
+ +

+syntaxError

+
+public JSONException syntaxError(java.lang.String message)
+
+
Make a JSONException to signal a syntax error. +

+

+
Parameters:
message - The error message. +
Returns:
A JSONException object, suitable for throwing
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a printable string of this JSONTokener. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
" at {index} [character {character} line {line}]"
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html new file mode 100644 index 000000000..89518e18b --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html @@ -0,0 +1,506 @@ + + + + + + +JSONWriter (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONWriter

+
+java.lang.Object
+  extended by org.json.JSONWriter
+
+
+
Direct Known Subclasses:
JSONStringer
+
+
+
+
public class JSONWriter
extends java.lang.Object
+ + +

+JSONWriter provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONWriter can produce one JSON text. +

+ A JSONWriter instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting a cascade style. For example,

+ new JSONWriter(myWriter)
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject();
which writes
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONWriter adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONWriter(java.io.Writer w) + +
+          Make a fresh JSONWriter.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONWriterarray() + +
+          Begin appending a new array.
+ JSONWriterendArray() + +
+          End an array.
+ JSONWriterendObject() + +
+          End an object.
+ JSONWriterkey(java.lang.String string) + +
+          Append a key.
+ JSONWriterobject() + +
+          Begin appending a new object.
+ JSONWritervalue(boolean b) + +
+          Append either the value true or the value + false.
+ JSONWritervalue(double d) + +
+          Append a double value.
+ JSONWritervalue(long l) + +
+          Append a long value.
+ JSONWritervalue(java.lang.Object object) + +
+          Append an object value.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONWriter

+
+public JSONWriter(java.io.Writer w)
+
+
Make a fresh JSONWriter. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+array

+
+public JSONWriter array()
+                 throws JSONException
+
+
Begin appending a new array. All values until the balancing + endArray will be appended to this array. The + endArray method must be called to mark the array's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+endArray

+
+public JSONWriter endArray()
+                    throws JSONException
+
+
End an array. This method most be called to balance calls to + array. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+endObject

+
+public JSONWriter endObject()
+                     throws JSONException
+
+
End an object. This method most be called to balance calls to + object. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+key

+
+public JSONWriter key(java.lang.String string)
+               throws JSONException
+
+
Append a key. The key will be associated with the next value. In an + object, every value must be preceded by a key. +

+

+
Parameters:
string - A key string. +
Returns:
this +
Throws: +
JSONException - If the key is out of place. For example, keys + do not belong in arrays or if the key is null.
+
+
+
+ +

+object

+
+public JSONWriter object()
+                  throws JSONException
+
+
Begin appending a new object. All keys and values until the balancing + endObject will be appended to this object. The + endObject method must be called to mark the object's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+value

+
+public JSONWriter value(boolean b)
+                 throws JSONException
+
+
Append either the value true or the value + false. +

+

+
Parameters:
b - A boolean. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(double d)
+                 throws JSONException
+
+
Append a double value. +

+

+
Parameters:
d - A double. +
Returns:
this +
Throws: +
JSONException - If the number is not finite.
+
+
+
+ +

+value

+
+public JSONWriter value(long l)
+                 throws JSONException
+
+
Append a long value. +

+

+
Parameters:
l - A long. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(java.lang.Object object)
+                 throws JSONException
+
+
Append an object value. +

+

+
Parameters:
object - The object to append. It can be null, or a Boolean, Number, + String, JSONObject, or JSONArray, or an object that implements JSONString. +
Returns:
this +
Throws: +
JSONException - If the value is out of sequence.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/XML.html b/distribution/json4processing-0.1.2/reference/org/json/XML.html new file mode 100644 index 000000000..6925fd87c --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/XML.html @@ -0,0 +1,601 @@ + + + + + + +XML (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XML

+
+java.lang.Object
+  extended by org.json.XML
+
+
+
+
public class XML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static java.lang.CharacterAMP + +
+          The Character '&'.
+static java.lang.CharacterAPOS + +
+          The Character '''.
+static java.lang.CharacterBANG + +
+          The Character '!'.
+static java.lang.CharacterEQ + +
+          The Character '='.
+static java.lang.CharacterGT + +
+          The Character '>'.
+static java.lang.CharacterLT + +
+          The Character '<'.
+static java.lang.CharacterQUEST + +
+          The Character '?'.
+static java.lang.CharacterQUOT + +
+          The Character '"'.
+static java.lang.CharacterSLASH + +
+          The Character '/'.
+  + + + + + + + + + + +
+Constructor Summary
XML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Replace special characters with XML escapes:
+static voidnoSpace(java.lang.String string) + +
+          Throw an exception if the string contains whitespace.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
+static java.lang.StringtoString(java.lang.Object object) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+static java.lang.StringtoString(java.lang.Object object, + java.lang.String tagName) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+AMP

+
+public static final java.lang.Character AMP
+
+
The Character '&'. +

+

+
+
+
+ +

+APOS

+
+public static final java.lang.Character APOS
+
+
The Character '''. +

+

+
+
+
+ +

+BANG

+
+public static final java.lang.Character BANG
+
+
The Character '!'. +

+

+
+
+
+ +

+EQ

+
+public static final java.lang.Character EQ
+
+
The Character '='. +

+

+
+
+
+ +

+GT

+
+public static final java.lang.Character GT
+
+
The Character '>'. +

+

+
+
+
+ +

+LT

+
+public static final java.lang.Character LT
+
+
The Character '<'. +

+

+
+
+
+ +

+QUEST

+
+public static final java.lang.Character QUEST
+
+
The Character '?'. +

+

+
+
+
+ +

+QUOT

+
+public static final java.lang.Character QUOT
+
+
The Character '"'. +

+

+
+
+
+ +

+SLASH

+
+public static final java.lang.Character SLASH
+
+
The Character '/'. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XML

+
+public XML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Replace special characters with XML escapes: +
+ & (ampersand) is replaced by &amp;
+ < (less than) is replaced by &lt;
+ > (greater than) is replaced by &gt;
+ " (double quote) is replaced by &quot;
+ 
+

+

+
Parameters:
string - The string to be escaped. +
Returns:
The escaped string.
+
+
+
+ +

+noSpace

+
+public static void noSpace(java.lang.String string)
+                    throws JSONException
+
+
Throw an exception if the string contains whitespace. + Whitespace is not allowed in tagNames and attributes. +

+

+
Parameters:
string - +
Throws: +
JSONException
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. This is much less ambitious than + JSONObject.stringToValue, especially because it does not attempt to + convert plus forms, octal forms, hex forms, or E forms lacking decimal + points. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. Some information may be lost in this transformation + because JSON is a data format and XML is a document format. XML uses + elements, attributes, and content text, while JSON uses unordered + collections of name/value pairs and arrays of values. JSON does not + does not like to distinguish between elements and attributes. + Sequences of similar elements are represented as JSONArrays. Content + text may be placed in a "content" member. Comments, prologs, DTDs, and + <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object,
+                                        java.lang.String tagName)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject.
tagName - The optional name of the enclosing tag. +
Returns:
A string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html new file mode 100644 index 000000000..5a3f03d3f --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html @@ -0,0 +1,452 @@ + + + + + + +XMLTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XMLTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.XMLTokener
+
+
+
+
public class XMLTokener
extends JSONTokener
+ + +

+The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.util.HashMapentity + +
+          The table of entity values.
+  + + + + + + + + + + +
+Constructor Summary
XMLTokener(java.lang.String s) + +
+          Construct an XMLTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextCDATA() + +
+          Get the text in the CDATA block.
+ java.lang.ObjectnextContent() + +
+          Get the next XML outer token, trimming whitespace.
+ java.lang.ObjectnextEntity(char ampersand) + +
+          Return the next entity.
+ java.lang.ObjectnextMeta() + +
+          Returns the next XML meta token.
+ java.lang.ObjectnextToken() + +
+          Get the next XML Token.
+ booleanskipPast(java.lang.String to) + +
+          Skip characters until past the requested string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+entity

+
+public static final java.util.HashMap entity
+
+
The table of entity values. It initially contains Character values for + amp, apos, gt, lt, quot. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XMLTokener

+
+public XMLTokener(java.lang.String s)
+
+
Construct an XMLTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextCDATA

+
+public java.lang.String nextCDATA()
+                           throws JSONException
+
+
Get the text in the CDATA block. +

+

+ +
Returns:
The string up to the ]]>. +
Throws: +
JSONException - If the ]]> is not found.
+
+
+
+ +

+nextContent

+
+public java.lang.Object nextContent()
+                             throws JSONException
+
+
Get the next XML outer token, trimming whitespace. There are two kinds + of tokens: the '<' character which begins a markup tag, and the content + text between markup tags. +

+

+ +
Returns:
A string, or a '<' Character, or null if there is no more + source text. +
Throws: +
JSONException
+
+
+
+ +

+nextEntity

+
+public java.lang.Object nextEntity(char ampersand)
+                            throws JSONException
+
+
Return the next entity. These entities are translated to Characters: + & ' > < ". +

+

+
Parameters:
ampersand - An ampersand character. +
Returns:
A Character or an entity String if the entity is not recognized. +
Throws: +
JSONException - If missing ';' in XML entity.
+
+
+
+ +

+nextMeta

+
+public java.lang.Object nextMeta()
+                          throws JSONException
+
+
Returns the next XML meta token. This is used for skipping over + and structures. +

+

+ +
Returns:
Syntax characters (< > / = ! ?) are returned as + Character, and strings and names are returned as Boolean. We don't care + what the values actually are. +
Throws: +
JSONException - If a string is not properly closed or if the XML + is badly structured.
+
+
+
+ +

+nextToken

+
+public java.lang.Object nextToken()
+                           throws JSONException
+
+
Get the next XML Token. These tokens are found inside of angle + brackets. It may be one of these characters: / > = ! ? or it + may be a string wrapped in single quotes or double quotes, or it may be a + name. +

+

+ +
Returns:
a String or a Character. +
Throws: +
JSONException - If the XML is not well formed.
+
+
+
+ +

+skipPast

+
+public boolean skipPast(java.lang.String to)
+                 throws JSONException
+
+
Skip characters until past the requested string. + If it is not found, we are left at the end of the source with a result of false. +

+

+
Parameters:
to - A string to skip past. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-frame.html b/distribution/json4processing-0.1.2/reference/org/json/package-frame.html new file mode 100644 index 000000000..cec867691 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/package-frame.html @@ -0,0 +1,78 @@ + + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + + +org.json + + + + +
+Interfaces  + +
+JSONString
+ + + + + + +
+Classes  + +
+CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONML +
+JSONObject +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener
+ + + + + + +
+Exceptions  + +
+JSONException
+ + + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-summary.html b/distribution/json4processing-0.1.2/reference/org/json/package-summary.html new file mode 100644 index 000000000..ada91a3f3 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/package-summary.html @@ -0,0 +1,239 @@ + + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.json +

+ + + + + + + + + +
+Interface Summary
JSONStringThe JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
CDLThis provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CookieConvert a web browser cookie specification to a JSONObject and back.
CookieListConvert a web browser cookie list string to a JSONObject and back.
HTTPConvert an HTTP header to a JSONObject and back.
HTTPTokenerThe HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
JSONArrayA JSONArray is an ordered sequence of values.
JSONMLThis provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONObjectA JSONObject is an unordered collection of name/value pairs.
JSONStringerJSONStringer provides a quick and convenient way of producing JSON text.
JSONTokenerA JSONTokener takes a source string and extracts characters and tokens from + it.
JSONWriterJSONWriter provides a quick and convenient way of producing JSON text.
XMLThis provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XMLTokenerThe XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
+  + +

+ + + + + + + + + +
+Exception Summary
JSONExceptionThe JSONException is thrown by the JSON.org classes when things are amiss.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-tree.html b/distribution/json4processing-0.1.2/reference/org/json/package-tree.html new file mode 100644 index 000000000..0e7dcce0a --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/org/json/package-tree.html @@ -0,0 +1,160 @@ + + + + + + +org.json Class Hierarchy (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.json +

+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/overview-tree.html b/distribution/json4processing-0.1.2/reference/overview-tree.html new file mode 100644 index 000000000..2da03400a --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/overview-tree.html @@ -0,0 +1,162 @@ + + + + + + +Class Hierarchy (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.json
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/package-list b/distribution/json4processing-0.1.2/reference/package-list new file mode 100644 index 000000000..6374a8ef9 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/package-list @@ -0,0 +1 @@ +org.json diff --git a/distribution/json4processing-0.1.2/reference/resources/inherit.gif b/distribution/json4processing-0.1.2/reference/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.2/reference/serialized-form.html b/distribution/json4processing-0.1.2/reference/serialized-form.html new file mode 100644 index 000000000..79d4231e0 --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/serialized-form.html @@ -0,0 +1,178 @@ + + + + + + +Serialized Form (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Serialized Form

+
+
+ + + + + +
+Package org.json
+ +

+ + + + + +
+Class org.json.JSONException extends java.lang.Exception implements Serializable
+ +

+serialVersionUID: 0L + +

+ + + + + +
+Serialized Fields
+ +

+cause

+
+java.lang.Throwable cause
+
+
+
+
+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 + + diff --git a/distribution/json4processing-0.1.2/reference/stylesheet.css b/distribution/json4processing-0.1.2/reference/stylesheet.css new file mode 100644 index 000000000..54998c2bc --- /dev/null +++ b/distribution/json4processing-0.1.2/reference/stylesheet.css @@ -0,0 +1,310 @@ +/* Javadoc style sheet */ +/* Define colors, fonts and other style attributes here to override the defaults */ +/* processingLibs style by andreas schlegel, sojamo */ + + +body { + margin : 0; + padding : 0; + padding-left : 10px; + padding-right : 8px; + background-color : #FFFFFF; + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.7em; + font-weight : normal; + line-height : normal; + margin-bottom:30px; +} + + + + +/* Headings */ +h1, h2, h3, h4, h5, th { + font-family :Arial, Helvetica, sans-serif; + font-size:1.2em; +} + + +p { + font-size : 1em; + width:80%; +} + +pre, code { + font-family : "Courier New", Courier, monospace; + font-size : 12px; + line-height : normal; +} + + + +table { + border:0; + margin-bottom:10px; + margin-top:10px; +} + + +tr, td { + border-top: 0px solid; + border-left: 0px solid; + padding-top:8px; + padding-bottom:8px; +} + + + +hr { + border:0; + height:1px; + padding:0; + margin:0; + margin-bottom:4px; + +} + + + +dd, th, td, font { + font-size:1.0em; + line-height:1.0em; +} + + + +dt { + margin-bottom:0px; +} + + + +dd { + margin-top:2px; + margin-bottom:4px; +} + + + +a { + text-decoration: underline; + font-weight: normal; +} + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + +img { + border: 0px solid #000000; +} + + + +/* Navigation bar fonts */ +.NavBarCell1 { + border:0; +} + +.NavBarCell1Rev { + border:0; +} + +.NavBarFont1 { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + + +.NavBarFont1 b { + font-weight:normal; +} + + + +.NavBarFont1:after, .NavBarFont1Rev:after { + font-weight:normal; + content: " \\"; +} + + +.NavBarFont1Rev { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + +.NavBarFont1Rev b { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; + font-weight:normal; +} + +.NavBarCell2 { + font-family: Arial, Helvetica, sans-serif; +} + +.NavBarCell3 { + font-family: Arial, Helvetica, sans-serif; +} + + + +font.FrameItemFont { + font-family: Helvetica, Arial, sans-serif; + font-size:1.1em; + line-height:1.1em; +} + +font.FrameHeadingFont { + font-family: Helvetica, Arial, sans-serif; + line-height:32px; +} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { + font-family: Helvetica, Arial, sans-serif +} + + +.toggleList { + padding:0; + margin:0; + margin-top:12px; +} + +.toggleList dt { + font-weight:bold; + font-size:12px; + font-family:arial,sans-serif; + padding:0px; + margin:10px 0px 10px 0px; +} + +.toggleList dt span { + font-family: monospace; + padding:0; + margin:0; +} + + +.toggleList dd { + margin:0; + padding:0; +} + +html.isjs .toggleList dd { + display: none; +} + +.toggleList pre { + padding: 4px 4px 4px 4px; +} + + + + + +/* COLORS */ + +pre, code { + color: #000000; +} + + +body { + color : #333333; + background-color :#FFFFFF; +} + + +h1, h2, h3, h4, h5, h6 { + color:#555; +} + +a, +.toggleList dt { + color: #1a7eb0; +} + +a:hover, +a:active { + color: #1a7eb0; +} + +a:visited, +a:link:visited { + color: #1a7eb0; +} + +td,tr { + border-color: #999999; +} + +hr { + color:#999999; + background:#999999; +} + + +.TableHeadingColor { + background: #dcdcdc; + color: #555; +} + + +.TableSubHeadingColor { + background: #EEEEFF +} + +.TableRowColor { + background: #FFFFFF +} + + +.NavBarCell1 { + background-color:#dcdcdc; + color:#000; +} + +.NavBarCell1 a { + color:#333; +} + + +.NavBarCell1Rev { + background-color:transparent; +} + +.NavBarFont1 { + color:#333; +} + + +.NavBarFont1Rev { + color:#fff; +} + +.NavBarCell2 { + background-color:#999; +} + +.NavBarCell2 a { + color:#fff; +} + + + +.NavBarCell3 { + background-color:#dcdcdc; +} + diff --git a/distribution/json4processing-0.1.2/stylesheet.css b/distribution/json4processing-0.1.2/stylesheet.css new file mode 100644 index 000000000..4348b3814 --- /dev/null +++ b/distribution/json4processing-0.1.2/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} diff --git a/examples/Hello/Hello.pde b/examples/Hello/Hello.pde deleted file mode 100644 index c14456a35..000000000 --- a/examples/Hello/Hello.pde +++ /dev/null @@ -1,19 +0,0 @@ -import template.library.*; - -HelloLibrary hello; - -void setup() { - size(400,400); - smooth(); - - hello = new HelloLibrary(this); - - PFont font = createFont("",40); - textFont(font); -} - -void draw() { - background(0); - fill(255); - text(hello.sayHello(), 40, 200); -} \ No newline at end of file diff --git a/examples/README b/examples/README deleted file mode 100644 index f2c0a4fab..000000000 --- a/examples/README +++ /dev/null @@ -1 +0,0 @@ -add examples for your tool here. \ No newline at end of file diff --git a/examples/create_jsonarray/create_jsonarray.pde b/examples/create_jsonarray/create_jsonarray.pde new file mode 100644 index 000000000..93bd2c04f --- /dev/null +++ b/examples/create_jsonarray/create_jsonarray.pde @@ -0,0 +1,23 @@ +/* + * JSON 4 Processing + * Basic example 2: Creating a JSON Array + * + * Good for sending a large set of primitive values, like sensor readings. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonArray = new JSONArray(); + + // 2. Add some content to the array + myJsonArray.put( 4 ); + myJsonArray.put( 2 ); + + println( myJsonArray ); +} + +void draw(){ +} diff --git a/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde b/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde new file mode 100644 index 000000000..4d6567c5e --- /dev/null +++ b/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde @@ -0,0 +1,31 @@ +/* + * JSON 4 Processing + * Basic example 3: Creating a JSON Array of JSON Objects. + * + * Good for sending multiple complex values, such as database tables. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonUsers = new JSONArray(); + + // 2. Create the first object & add to array + JSONObject firstUser = new JSONObject(); + firstUser.put( "name", "Andreas" ); + firstUser.put( "age", 32 ); + myJsonUsers.put( firstUser ); + + // 3. Create the second object + JSONObject secondUser = new JSONObject(); + secondUser.put( "name", "Maria" ); + secondUser.put( "age", 28 ); + myJsonUsers.put( secondUser ); + + println( myJsonUsers ); +} + +void draw(){ +} diff --git a/examples/create_jsonobject/create_jsonobject.pde b/examples/create_jsonobject/create_jsonobject.pde new file mode 100644 index 000000000..464cbf759 --- /dev/null +++ b/examples/create_jsonobject/create_jsonobject.pde @@ -0,0 +1,22 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object + * + * Good for sending values that has a specific meaning (complex values) + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the object + JSONObject myJsonObject = new JSONObject(); + + // 2. Add some content to the object + myJsonObject.put( "myIntegerValue", 7 ); + + println( myJsonObject ); +} + +void draw(){ +} diff --git a/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/examples/reading_yahoo_weather/reading_yahoo_weather.pde new file mode 100644 index 000000000..a9f824821 --- /dev/null +++ b/examples/reading_yahoo_weather/reading_yahoo_weather.pde @@ -0,0 +1,37 @@ +/* + * JSON 4 Processing + * Basic example 4: Reading data from the web (Yahoo weather) + * + * This example reads the Weather feed from the Yahoo API's. It's using + * the WOEID for Malm�, you can change this by finding the ID you want + * at http://weather.yahoo.com/ + */ + +import org.json.*; + +void setup() { + // Accessing the weather service + String BASE_URL = "http://weather.yahooapis.com/forecastjson?w="; + String WOEDI = "898091"; + + // Get the JSON formatted response + String response = loadStrings( BASE_URL + WOEDI )[0]; + + // Make sure we got a response. + if ( response != null ) { + // Initialize the JSONObject for the response + JSONObject root = new JSONObject( response ); + + // Get the "condition" JSONObject + JSONObject condition = root.getJSONObject("condition"); + + // Get the "temperature" value from the condition object + int temperature = condition.getInt("temperature"); + + // Print the temperature + println( temperature ); + } +} + +void draw() { +} diff --git a/resources/build.properties b/resources/build.properties index c0a548c35..c7c39735a 100644 --- a/resources/build.properties +++ b/resources/build.properties @@ -17,8 +17,8 @@ # For windows the default path to your sketchbook would be # ${user.home}/My Documents/Processing (make adjustments below). -sketchbook.location=/media/Contents/sketchbook -#${user.home}/Documents/Processing +#sketchbook.location=/media/Contents/sketchbook +sketchbook.location=${user.home}/Documents/Processing @@ -30,8 +30,8 @@ sketchbook.location=/media/Contents/sketchbook # For Windows the default path would be ${user.home}/workspace/libs # (make adjustments below) -classpath.local.location=/media/Contents/workspace_projects/libs -#${user.home}/workspace/libs +#classpath.local.location=/media/Contents/workspace_projects/libs +classpath.local.location=E:/workspace_projects/libs @@ -97,7 +97,7 @@ project.compile=normal # set the current version of your project. -project.version=0.1.1 +project.version=0.1.2 project.copyright=(c) 2011 project.dependencies=? project.keywords=? diff --git a/src/org/json/JSONArray.java b/src/org/json/JSONArray.java index ec6eff589..0f82156ef 100644 --- a/src/org/json/JSONArray.java +++ b/src/org/json/JSONArray.java @@ -165,7 +165,7 @@ public JSONArray(Collection collection) { * Construct a JSONArray from an array * @throws JSONException If not an array. */ - public JSONArray(Object array) throws JSONException { + public JSONArray(Object array) /*throws JSONException*/ { this(); if (array.getClass().isArray()) { int length = Array.getLength(array); @@ -173,8 +173,9 @@ public JSONArray(Object array) throws JSONException { this.put(JSONObject.wrap(Array.get(array, i))); } } else { - throw new JSONException( -"JSONArray initial value should be a string or collection or array."); +// throw new JSONException( +//"JSONArray initial value should be a string or collection or array."); + System.out.println("JSONArray initial value should be a string or collection or array."); } } @@ -590,9 +591,13 @@ public JSONArray put(Collection value) { * @throws JSONException if the value is not finite. * @return this. */ - public JSONArray put(double value) throws JSONException { + public JSONArray put(double value) /*throws JSONException*/ { Double d = new Double(value); - JSONObject.testValidity(d); + try { + JSONObject.testValidity(d); + } catch (JSONException e) { + e.printStackTrace(); + } put(d); return this; } @@ -656,8 +661,8 @@ public JSONArray put(Object value) { * @return this. * @throws JSONException If the index is negative. */ - public JSONArray put(int index, boolean value) throws JSONException { - put(index, value ? Boolean.TRUE : Boolean.FALSE); + public JSONArray put(int index, boolean value) /*throws JSONException*/ { + put(index, value ? Boolean.TRUE : Boolean.FALSE); return this; } @@ -671,7 +676,7 @@ public JSONArray put(int index, boolean value) throws JSONException { * @throws JSONException If the index is negative or if the value is * not finite. */ - public JSONArray put(int index, Collection value) throws JSONException { + public JSONArray put(int index, Collection value) /*throws JSONException*/ { put(index, new JSONArray(value)); return this; } @@ -687,7 +692,7 @@ public JSONArray put(int index, Collection value) throws JSONException { * @throws JSONException If the index is negative or if the value is * not finite. */ - public JSONArray put(int index, double value) throws JSONException { + public JSONArray put(int index, double value) /*throws JSONException*/ { put(index, new Double(value)); return this; } @@ -702,7 +707,7 @@ public JSONArray put(int index, double value) throws JSONException { * @return this. * @throws JSONException If the index is negative. */ - public JSONArray put(int index, int value) throws JSONException { + public JSONArray put(int index, int value) /*throws JSONException*/ { put(index, new Integer(value)); return this; } @@ -717,7 +722,7 @@ public JSONArray put(int index, int value) throws JSONException { * @return this. * @throws JSONException If the index is negative. */ - public JSONArray put(int index, long value) throws JSONException { + public JSONArray put(int index, long value) /*throws JSONException*/ { put(index, new Long(value)); return this; } @@ -732,7 +737,7 @@ public JSONArray put(int index, long value) throws JSONException { * @throws JSONException If the index is negative or if the the value is * an invalid number. */ - public JSONArray put(int index, Map value) throws JSONException { + public JSONArray put(int index, Map value) /*throws JSONException*/ { put(index, new JSONObject(value)); return this; } @@ -750,11 +755,17 @@ public JSONArray put(int index, Map value) throws JSONException { * @throws JSONException If the index is negative or if the the value is * an invalid number. */ - public JSONArray put(int index, Object value) throws JSONException { - JSONObject.testValidity(value); - if (index < 0) { - throw new JSONException("JSONArray[" + index + "] not found."); - } + public JSONArray put(int index, Object value) /*throws JSONException*/ { + try { + JSONObject.testValidity(value); + } catch (JSONException e) { + e.printStackTrace(); + } + + // No exceptionhandling in the sketch! + // if (index < 0) { + // throw new JSONException("JSONArray[" + index + "] not found."); + // } if (index < length()) { this.myArrayList.set(index, value); } else { @@ -847,7 +858,7 @@ public String toString(int indentFactor) throws JSONException { * representation of the array. * @throws JSONException */ - String toString(int indentFactor, int indent) throws JSONException { + String toString(int indentFactor, int indent) /*throws JSONException*/ { int len = length(); if (len == 0) { return "[]"; @@ -889,7 +900,7 @@ String toString(int indentFactor, int indent) throws JSONException { * @return The writer. * @throws JSONException */ - public Writer write(Writer writer) throws JSONException { + public Writer write(Writer writer) /*throws JSONException*/ { try { boolean b = false; int len = length(); @@ -913,7 +924,9 @@ public Writer write(Writer writer) throws JSONException { writer.write(']'); return writer; } catch (IOException e) { - throw new JSONException(e); +// throw new JSONException(e); + e.printStackTrace(); } + return writer; } } \ No newline at end of file diff --git a/src/org/json/JSONObject.java b/src/org/json/JSONObject.java index 5f3ceecf5..677b0e793 100644 --- a/src/org/json/JSONObject.java +++ b/src/org/json/JSONObject.java @@ -1,28 +1,28 @@ package org.json; /* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ + Copyright (c) 2002 JSON.org + + 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 shall be used for Good, not Evil. + + 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. + */ import java.io.IOException; import java.io.Writer; @@ -38,1599 +38,1741 @@ of this software and associated documentation files (the "Software"), to deal import java.util.ResourceBundle; /** - * A JSONObject is an unordered collection of name/value pairs. Its - * external form is a string wrapped in curly braces with colons between the - * names and values, and commas between the values and names. The internal form - * is an object having get and opt methods for - * accessing the values by name, and put methods for adding or - * replacing values by name. The values can be any of these types: - * Boolean, JSONArray, JSONObject, - * Number, String, or the JSONObject.NULL - * object. A JSONObject constructor can be used to convert an external form - * JSON text into an internal form whose values can be retrieved with the - * get and opt methods, or to convert values into a - * JSON text using the put and toString methods. - * A get method returns a value if one can be found, and throws an - * exception if one cannot be found. An opt method returns a - * default value instead of throwing an exception, and so is useful for - * obtaining optional values. + * A JSONObject is an unordered collection of name/value pairs. Its external + * form is a string wrapped in curly braces with colons between the names and + * values, and commas between the values and names. The internal form is an + * object having get and opt methods for accessing the + * values by name, and put methods for adding or replacing values + * by name. The values can be any of these types: Boolean, + * JSONArray, JSONObject, Number, + * String, or the JSONObject.NULL object. A JSONObject + * constructor can be used to convert an external form JSON text into an + * internal form whose values can be retrieved with the get and + * opt methods, or to convert values into a JSON text using the + * put and toString methods. A get method + * returns a value if one can be found, and throws an exception if one cannot be + * found. An opt method returns a default value instead of throwing + * an exception, and so is useful for obtaining optional values. *

* The generic get() and opt() methods return an * object, which you can cast or query for type. There are also typed * get and opt methods that do type checking and type - * coercion for you. The opt methods differ from the get methods in that they - * do not throw. Instead, they return a specified value, such as null. + * coercion for you. The opt methods differ from the get methods in that they do + * not throw. Instead, they return a specified value, such as null. *

* The put methods add or replace values in an object. For example, - *

myString = new JSONObject().put("JSON", "Hello, World!").toString();
+ * + *
+ * myString = new JSONObject().put("JSON", "Hello, World!").toString();
+ * 
+ * * produces the string {"JSON": "Hello, World"}. *

* The texts produced by the toString methods strictly conform to - * the JSON syntax rules. - * The constructors are more forgiving in the texts they will accept: + * the JSON syntax rules. The constructors are more forgiving in the texts they + * will accept: *

    *
  • An extra , (comma) may appear just - * before the closing brace.
  • + * before the closing brace. *
  • Strings may be quoted with ' (single - * quote).
  • + * quote). *
  • Strings do not need to be quoted at all if they do not begin with a quote - * or single quote, and if they do not contain leading or trailing spaces, - * and if they do not contain any of these characters: - * { } [ ] / \ : , = ; # and if they do not look like numbers - * and if they are not the reserved words true, - * false, or null.
  • - *
  • Keys can be followed by = or => as well as - * by :.
  • + * or single quote, and if they do not contain leading or trailing spaces, and + * if they do not contain any of these characters: + * { } [ ] / \ : , = ; # and if they do not look like numbers and + * if they are not the reserved words true, false, or + * null. + *
  • Keys can be followed by = or => as well as by + * :.
  • *
  • Values can be followed by ; (semicolon) as - * well as by , (comma).
  • + * well as by , (comma). *
  • Numbers may have the 0x- (hex) prefix.
  • *
+ * * @author JSON.org * @version 2011-10-16 */ public class JSONObject { - /** - * JSONObject.NULL is equivalent to the value that JavaScript calls null, - * whilst Java's null is equivalent to the value that JavaScript calls - * undefined. - */ - private static final class Null { - - /** - * There is only intended to be a single instance of the NULL object, - * so the clone method returns itself. - * @return NULL. - */ - protected final Object clone() { - return this; - } - - /** - * A Null object is equal to the null value and to itself. - * @param object An object to test for nullness. - * @return true if the object parameter is the JSONObject.NULL object - * or null. - */ - public boolean equals(Object object) { - return object == null || object == this; - } - - /** - * Get the "null" string value. - * @return The string "null". - */ - public String toString() { - return "null"; - } - } - - - /** - * The map where the JSONObject's properties are kept. - */ - private Map map; - - - /** - * It is sometimes more convenient and less ambiguous to have a - * NULL object than to use Java's null value. - * JSONObject.NULL.equals(null) returns true. - * JSONObject.NULL.toString() returns "null". - */ - public static final Object NULL = new Null(); - - - /** - * Construct an empty JSONObject. - */ - public JSONObject() { - this.map = new HashMap(); - } - - - /** - * Construct a JSONObject from a subset of another JSONObject. - * An array of strings is used to identify the keys that should be copied. - * Missing keys are ignored. - * @param jo A JSONObject. - * @param names An array of strings. - * @throws JSONException - * @exception JSONException If a value is a non-finite number or if a name is duplicated. - */ - public JSONObject(JSONObject jo, String[] names) { - this(); - for (int i = 0; i < names.length; i += 1) { - try { - putOnce(names[i], jo.opt(names[i])); - } catch (Exception ignore) { - } - } - } - - - /** - * Construct a JSONObject from a JSONTokener. - * @param x A JSONTokener object containing the source string. - * @throws JSONException If there is a syntax error in the source string - * or a duplicated key. - */ - public JSONObject(JSONTokener x) throws JSONException { - this(); - char c; - String key; - - if (x.nextClean() != '{') { - throw x.syntaxError("A JSONObject text must begin with '{'"); - } - for (;;) { - c = x.nextClean(); - switch (c) { - case 0: - throw x.syntaxError("A JSONObject text must end with '}'"); - case '}': - return; - default: - x.back(); - key = x.nextValue().toString(); - } - -// The key is followed by ':'. We will also tolerate '=' or '=>'. - - c = x.nextClean(); - if (c == '=') { - if (x.next() != '>') { - x.back(); - } - } else if (c != ':') { - throw x.syntaxError("Expected a ':' after a key"); - } - putOnce(key, x.nextValue()); - -// Pairs are separated by ','. We will also tolerate ';'. - - switch (x.nextClean()) { - case ';': - case ',': - if (x.nextClean() == '}') { - return; - } - x.back(); - break; - case '}': - return; - default: - throw x.syntaxError("Expected a ',' or '}'"); - } - } - } - - - /** - * Construct a JSONObject from a Map. - * - * @param map A map object that can be used to initialize the contents of - * the JSONObject. - * @throws JSONException - */ - public JSONObject(Map map) { - this.map = new HashMap(); - if (map != null) { - Iterator i = map.entrySet().iterator(); - while (i.hasNext()) { - Map.Entry e = (Map.Entry)i.next(); - Object value = e.getValue(); - if (value != null) { - this.map.put(e.getKey(), wrap(value)); - } - } - } - } - - - /** - * Construct a JSONObject from an Object using bean getters. - * It reflects on all of the public methods of the object. - * For each of the methods with no parameters and a name starting - * with "get" or "is" followed by an uppercase letter, - * the method is invoked, and a key and the value returned from the getter method - * are put into the new JSONObject. - * - * The key is formed by removing the "get" or "is" prefix. - * If the second remaining character is not upper case, then the first - * character is converted to lower case. - * - * For example, if an object has a method named "getName", and - * if the result of calling object.getName() is "Larry Fine", - * then the JSONObject will contain "name": "Larry Fine". - * - * @param bean An object that has getter methods that should be used - * to make a JSONObject. - */ - public JSONObject(Object bean) { - this(); - populateMap(bean); - } - - - /** - * Construct a JSONObject from an Object, using reflection to find the - * public members. The resulting JSONObject's keys will be the strings - * from the names array, and the values will be the field values associated - * with those keys in the object. If a key is not found or not visible, - * then it will not be copied into the new JSONObject. - * @param object An object that has fields that should be used to make a - * JSONObject. - * @param names An array of strings, the names of the fields to be obtained - * from the object. - */ - public JSONObject(Object object, String names[]) { - this(); - Class c = object.getClass(); - for (int i = 0; i < names.length; i += 1) { - String name = names[i]; - try { - putOpt(name, c.getField(name).get(object)); - } catch (Exception ignore) { - } - } - } - - - /** - * Construct a JSONObject from a source JSON text string. - * This is the most commonly used JSONObject constructor. - * @param source A string beginning - * with { (left brace) and ending - * with } (right brace). - * @exception JSONException If there is a syntax error in the source - * string or a duplicated key. - */ - public JSONObject(String source) throws JSONException { - this(new JSONTokener(source)); - } - - - /** - * Construct a JSONObject from a ResourceBundle. - * @param baseName The ResourceBundle base name. - * @param locale The Locale to load the ResourceBundle for. - * @throws JSONException If any JSONExceptions are detected. - */ - public JSONObject(String baseName, Locale locale) throws JSONException { - this(); - ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, - Thread.currentThread().getContextClassLoader()); - -// Iterate through the keys in the bundle. - - Enumeration keys = bundle.getKeys(); - while (keys.hasMoreElements()) { - Object key = keys.nextElement(); - if (key instanceof String) { - -// Go through the path, ensuring that there is a nested JSONObject for each -// segment except the last. Add the value using the last segment's name into -// the deepest nested JSONObject. - - String[] path = ((String)key).split("\\."); - int last = path.length - 1; - JSONObject target = this; - for (int i = 0; i < last; i += 1) { - String segment = path[i]; - JSONObject nextTarget = target.optJSONObject(segment); - if (nextTarget == null) { - nextTarget = new JSONObject(); - target.put(segment, nextTarget); - } - target = nextTarget; - } - target.put(path[last], bundle.getString((String)key)); - } - } - } - - - /** - * Accumulate values under a key. It is similar to the put method except - * that if there is already an object stored under the key then a - * JSONArray is stored under the key to hold all of the accumulated values. - * If there is already a JSONArray, then the new value is appended to it. - * In contrast, the put method replaces the previous value. - * - * If only one value is accumulated that is not a JSONArray, then the - * result will be the same as using put. But if multiple values are - * accumulated, then the result will be like append. - * @param key A key string. - * @param value An object to be accumulated under the key. - * @return this. - * @throws JSONException If the value is an invalid number - * or if the key is null. - */ - public JSONObject accumulate( - String key, - Object value - ) throws JSONException { - testValidity(value); - Object object = opt(key); - if (object == null) { - put(key, value instanceof JSONArray ? - new JSONArray().put(value) : value); - } else if (object instanceof JSONArray) { - ((JSONArray)object).put(value); - } else { - put(key, new JSONArray().put(object).put(value)); - } - return this; - } - - - /** - * Append values to the array under a key. If the key does not exist in the - * JSONObject, then the key is put in the JSONObject with its value being a - * JSONArray containing the value parameter. If the key was already - * associated with a JSONArray, then the value parameter is appended to it. - * @param key A key string. - * @param value An object to be accumulated under the key. - * @return this. - * @throws JSONException If the key is null or if the current value - * associated with the key is not a JSONArray. - */ - public JSONObject append(String key, Object value) throws JSONException { - testValidity(value); - Object object = opt(key); - if (object == null) { - put(key, new JSONArray().put(value)); - } else if (object instanceof JSONArray) { - put(key, ((JSONArray)object).put(value)); - } else { - throw new JSONException("JSONObject[" + key + - "] is not a JSONArray."); - } - return this; - } - - - /** - * Produce a string from a double. The string "null" will be returned if - * the number is not finite. - * @param d A double. - * @return A String. - */ - public static String doubleToString(double d) { - if (Double.isInfinite(d) || Double.isNaN(d)) { - return "null"; - } - -// Shave off trailing zeros and decimal point, if possible. - - String string = Double.toString(d); - if (string.indexOf('.') > 0 && string.indexOf('e') < 0 && - string.indexOf('E') < 0) { - while (string.endsWith("0")) { - string = string.substring(0, string.length() - 1); - } - if (string.endsWith(".")) { - string = string.substring(0, string.length() - 1); - } - } - return string; - } - - - /** - * Get the value object associated with a key. - * - * @param key A key string. - * @return The object associated with the key. - * @throws JSONException if the key is not found. - */ - public Object get(String key) throws JSONException { - if (key == null) { - throw new JSONException("Null key."); - } - Object object = opt(key); - if (object == null) { - throw new JSONException("JSONObject[" + quote(key) + - "] not found."); - } - return object; - } - - - /** - * Get the boolean value associated with a key. - * - * @param key A key string. - * @return The truth. - * @throws JSONException - * if the value is not a Boolean or the String "true" or "false". - */ - public boolean getBoolean(String key) throws JSONException { - Object object = get(key); - if (object.equals(Boolean.FALSE) || - (object instanceof String && - ((String)object).equalsIgnoreCase("false"))) { - return false; - } else if (object.equals(Boolean.TRUE) || - (object instanceof String && - ((String)object).equalsIgnoreCase("true"))) { - return true; - } - throw new JSONException("JSONObject[" + quote(key) + - "] is not a Boolean."); - } - - - /** - * Get the double value associated with a key. - * @param key A key string. - * @return The numeric value. - * @throws JSONException if the key is not found or - * if the value is not a Number object and cannot be converted to a number. - */ - public double getDouble(String key) throws JSONException { - Object object = get(key); - try { - return object instanceof Number ? - ((Number)object).doubleValue() : - Double.parseDouble((String)object); - } catch (Exception e) { - throw new JSONException("JSONObject[" + quote(key) + - "] is not a number."); - } - } - - - /** - * Get the int value associated with a key. - * - * @param key A key string. - * @return The integer value. - * @throws JSONException if the key is not found or if the value cannot - * be converted to an integer. - */ - public int getInt(String key) throws JSONException { - Object object = get(key); - try { - return object instanceof Number ? - ((Number)object).intValue() : - Integer.parseInt((String)object); - } catch (Exception e) { - throw new JSONException("JSONObject[" + quote(key) + - "] is not an int."); - } - } - - - /** - * Get the JSONArray value associated with a key. - * - * @param key A key string. - * @return A JSONArray which is the value. - * @throws JSONException if the key is not found or - * if the value is not a JSONArray. - */ - public JSONArray getJSONArray(String key) throws JSONException { - Object object = get(key); - if (object instanceof JSONArray) { - return (JSONArray)object; - } - throw new JSONException("JSONObject[" + quote(key) + - "] is not a JSONArray."); - } - - - /** - * Get the JSONObject value associated with a key. - * - * @param key A key string. - * @return A JSONObject which is the value. - * @throws JSONException if the key is not found or - * if the value is not a JSONObject. - */ - public JSONObject getJSONObject(String key) throws JSONException { - Object object = get(key); - if (object instanceof JSONObject) { - return (JSONObject)object; - } - throw new JSONException("JSONObject[" + quote(key) + - "] is not a JSONObject."); - } - - - /** - * Get the long value associated with a key. - * - * @param key A key string. - * @return The long value. - * @throws JSONException if the key is not found or if the value cannot - * be converted to a long. - */ - public long getLong(String key) throws JSONException { - Object object = get(key); - try { - return object instanceof Number ? - ((Number)object).longValue() : - Long.parseLong((String)object); - } catch (Exception e) { - throw new JSONException("JSONObject[" + quote(key) + - "] is not a long."); - } - } - - - /** - * Get an array of field names from a JSONObject. - * - * @return An array of field names, or null if there are no names. - */ - public static String[] getNames(JSONObject jo) { - int length = jo.length(); - if (length == 0) { - return null; - } - Iterator iterator = jo.keys(); - String[] names = new String[length]; - int i = 0; - while (iterator.hasNext()) { - names[i] = (String)iterator.next(); - i += 1; - } - return names; - } - - - /** - * Get an array of field names from an Object. - * - * @return An array of field names, or null if there are no names. - */ - public static String[] getNames(Object object) { - if (object == null) { - return null; - } - Class klass = object.getClass(); - Field[] fields = klass.getFields(); - int length = fields.length; - if (length == 0) { - return null; - } - String[] names = new String[length]; - for (int i = 0; i < length; i += 1) { - names[i] = fields[i].getName(); - } - return names; - } - - - /** - * Get the string associated with a key. - * - * @param key A key string. - * @return A string which is the value. - * @throws JSONException if there is no string value for the key. - */ - public String getString(String key) throws JSONException { - Object object = get(key); - if (object instanceof String) { - return (String)object; - } - throw new JSONException("JSONObject[" + quote(key) + - "] not a string."); - } - - - /** - * Determine if the JSONObject contains a specific key. - * @param key A key string. - * @return true if the key exists in the JSONObject. - */ - public boolean has(String key) { - return this.map.containsKey(key); - } - - - /** - * Increment a property of a JSONObject. If there is no such property, - * create one with a value of 1. If there is such a property, and if - * it is an Integer, Long, Double, or Float, then add one to it. - * @param key A key string. - * @return this. - * @throws JSONException If there is already a property with this name - * that is not an Integer, Long, Double, or Float. - */ - public JSONObject increment(String key) throws JSONException { - Object value = opt(key); - if (value == null) { - put(key, 1); - } else if (value instanceof Integer) { - put(key, ((Integer)value).intValue() + 1); - } else if (value instanceof Long) { - put(key, ((Long)value).longValue() + 1); - } else if (value instanceof Double) { - put(key, ((Double)value).doubleValue() + 1); - } else if (value instanceof Float) { - put(key, ((Float)value).floatValue() + 1); - } else { - throw new JSONException("Unable to increment [" + quote(key) + "]."); - } - return this; - } - - - /** - * Determine if the value associated with the key is null or if there is - * no value. - * @param key A key string. - * @return true if there is no value associated with the key or if - * the value is the JSONObject.NULL object. - */ - public boolean isNull(String key) { - return JSONObject.NULL.equals(opt(key)); - } - - - /** - * Get an enumeration of the keys of the JSONObject. - * - * @return An iterator of the keys. - */ - public Iterator keys() { - return this.map.keySet().iterator(); - } - - - /** - * Get the number of keys stored in the JSONObject. - * - * @return The number of keys in the JSONObject. - */ - public int length() { - return this.map.size(); - } - - - /** - * Produce a JSONArray containing the names of the elements of this - * JSONObject. - * @return A JSONArray containing the key strings, or null if the JSONObject - * is empty. - */ - public JSONArray names() { - JSONArray ja = new JSONArray(); - Iterator keys = this.keys(); - while (keys.hasNext()) { - ja.put(keys.next()); - } - return ja.length() == 0 ? null : ja; - } - - /** - * Produce a string from a Number. - * @param number A Number - * @return A String. - * @throws JSONException If n is a non-finite number. - */ - public static String numberToString(Number number) - throws JSONException { - if (number == null) { - throw new JSONException("Null pointer"); - } - testValidity(number); - -// Shave off trailing zeros and decimal point, if possible. - - String string = number.toString(); - if (string.indexOf('.') > 0 && string.indexOf('e') < 0 && - string.indexOf('E') < 0) { - while (string.endsWith("0")) { - string = string.substring(0, string.length() - 1); - } - if (string.endsWith(".")) { - string = string.substring(0, string.length() - 1); - } - } - return string; - } - - - /** - * Get an optional value associated with a key. - * @param key A key string. - * @return An object which is the value, or null if there is no value. - */ - public Object opt(String key) { - return key == null ? null : this.map.get(key); - } - - - /** - * Get an optional boolean associated with a key. - * It returns false if there is no such key, or if the value is not - * Boolean.TRUE or the String "true". - * - * @param key A key string. - * @return The truth. - */ - public boolean optBoolean(String key) { - return optBoolean(key, false); - } - - - /** - * Get an optional boolean associated with a key. - * It returns the defaultValue if there is no such key, or if it is not - * a Boolean or the String "true" or "false" (case insensitive). - * - * @param key A key string. - * @param defaultValue The default. - * @return The truth. - */ - public boolean optBoolean(String key, boolean defaultValue) { - try { - return getBoolean(key); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get an optional double associated with a key, - * or NaN if there is no such key or if its value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A string which is the key. - * @return An object which is the value. - */ - public double optDouble(String key) { - return optDouble(key, Double.NaN); - } - - - /** - * Get an optional double associated with a key, or the - * defaultValue if there is no such key or if its value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A key string. - * @param defaultValue The default. - * @return An object which is the value. - */ - public double optDouble(String key, double defaultValue) { - try { - return getDouble(key); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get an optional int value associated with a key, - * or zero if there is no such key or if the value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A key string. - * @return An object which is the value. - */ - public int optInt(String key) { - return optInt(key, 0); - } - - - /** - * Get an optional int value associated with a key, - * or the default if there is no such key or if the value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A key string. - * @param defaultValue The default. - * @return An object which is the value. - */ - public int optInt(String key, int defaultValue) { - try { - return getInt(key); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get an optional JSONArray associated with a key. - * It returns null if there is no such key, or if its value is not a - * JSONArray. - * - * @param key A key string. - * @return A JSONArray which is the value. - */ - public JSONArray optJSONArray(String key) { - Object o = opt(key); - return o instanceof JSONArray ? (JSONArray)o : null; - } - - - /** - * Get an optional JSONObject associated with a key. - * It returns null if there is no such key, or if its value is not a - * JSONObject. - * - * @param key A key string. - * @return A JSONObject which is the value. - */ - public JSONObject optJSONObject(String key) { - Object object = opt(key); - return object instanceof JSONObject ? (JSONObject)object : null; - } - - - /** - * Get an optional long value associated with a key, - * or zero if there is no such key or if the value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A key string. - * @return An object which is the value. - */ - public long optLong(String key) { - return optLong(key, 0); - } - - - /** - * Get an optional long value associated with a key, - * or the default if there is no such key or if the value is not a number. - * If the value is a string, an attempt will be made to evaluate it as - * a number. - * - * @param key A key string. - * @param defaultValue The default. - * @return An object which is the value. - */ - public long optLong(String key, long defaultValue) { - try { - return getLong(key); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get an optional string associated with a key. - * It returns an empty string if there is no such key. If the value is not - * a string and is not null, then it is converted to a string. - * - * @param key A key string. - * @return A string which is the value. - */ - public String optString(String key) { - return optString(key, ""); - } - - - /** - * Get an optional string associated with a key. - * It returns the defaultValue if there is no such key. - * - * @param key A key string. - * @param defaultValue The default. - * @return A string which is the value. - */ - public String optString(String key, String defaultValue) { - Object object = opt(key); - return NULL.equals(object) ? defaultValue : object.toString(); - } - - - private void populateMap(Object bean) { - Class klass = bean.getClass(); - -// If klass is a System class then set includeSuperClass to false. - - boolean includeSuperClass = klass.getClassLoader() != null; - - Method[] methods = (includeSuperClass) ? - klass.getMethods() : klass.getDeclaredMethods(); - for (int i = 0; i < methods.length; i += 1) { - try { - Method method = methods[i]; - if (Modifier.isPublic(method.getModifiers())) { - String name = method.getName(); - String key = ""; - if (name.startsWith("get")) { - if (name.equals("getClass") || - name.equals("getDeclaringClass")) { - key = ""; - } else { - key = name.substring(3); - } - } else if (name.startsWith("is")) { - key = name.substring(2); - } - if (key.length() > 0 && - Character.isUpperCase(key.charAt(0)) && - method.getParameterTypes().length == 0) { - if (key.length() == 1) { - key = key.toLowerCase(); - } else if (!Character.isUpperCase(key.charAt(1))) { - key = key.substring(0, 1).toLowerCase() + - key.substring(1); - } - - Object result = method.invoke(bean, (Object[])null); - if (result != null) { - map.put(key, wrap(result)); - } - } - } - } catch (Exception ignore) { - } - } - } - - - /** - * Put a key/boolean pair in the JSONObject. - * - * @param key A key string. - * @param value A boolean which is the value. - * @return this. - * @throws JSONException If the key is null. - */ - public JSONObject put(String key, boolean value) throws JSONException { - put(key, value ? Boolean.TRUE : Boolean.FALSE); - return this; - } - - - /** - * Put a key/value pair in the JSONObject, where the value will be a - * JSONArray which is produced from a Collection. - * @param key A key string. - * @param value A Collection value. - * @return this. - * @throws JSONException - */ - public JSONObject put(String key, Collection value) throws JSONException { - put(key, new JSONArray(value)); - return this; - } - - - /** - * Put a key/double pair in the JSONObject. - * - * @param key A key string. - * @param value A double which is the value. - * @return this. - * @throws JSONException If the key is null or if the number is invalid. - */ - public JSONObject put(String key, double value) throws JSONException { - put(key, new Double(value)); - return this; - } - - - /** - * Put a key/int pair in the JSONObject. - * - * @param key A key string. - * @param value An int which is the value. - * @return this. - * @throws JSONException If the key is null. - */ - public JSONObject put(String key, int value) throws JSONException { - put(key, new Integer(value)); - return this; - } - - - /** - * Put a key/long pair in the JSONObject. - * - * @param key A key string. - * @param value A long which is the value. - * @return this. - * @throws JSONException If the key is null. - */ - public JSONObject put(String key, long value) throws JSONException { - put(key, new Long(value)); - return this; - } - - - /** - * Put a key/value pair in the JSONObject, where the value will be a - * JSONObject which is produced from a Map. - * @param key A key string. - * @param value A Map value. - * @return this. - * @throws JSONException - */ - public JSONObject put(String key, Map value) throws JSONException { - put(key, new JSONObject(value)); - return this; - } - - - /** - * Put a key/value pair in the JSONObject. If the value is null, - * then the key will be removed from the JSONObject if it is present. - * @param key A key string. - * @param value An object which is the value. It should be of one of these - * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, - * or the JSONObject.NULL object. - * @return this. - * @throws JSONException If the value is non-finite number - * or if the key is null. - */ - public JSONObject put(String key, Object value) throws JSONException { - if (key == null) { - throw new JSONException("Null key."); - } - if (value != null) { - testValidity(value); - this.map.put(key, value); - } else { - remove(key); - } - return this; - } - - - /** - * Put a key/value pair in the JSONObject, but only if the key and the - * value are both non-null, and only if there is not already a member - * with that name. - * @param key - * @param value - * @return his. - * @throws JSONException if the key is a duplicate - */ - public JSONObject putOnce(String key, Object value) throws JSONException { - if (key != null && value != null) { - if (opt(key) != null) { - throw new JSONException("Duplicate key \"" + key + "\""); - } - put(key, value); - } - return this; - } - - - /** - * Put a key/value pair in the JSONObject, but only if the - * key and the value are both non-null. - * @param key A key string. - * @param value An object which is the value. It should be of one of these - * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, - * or the JSONObject.NULL object. - * @return this. - * @throws JSONException If the value is a non-finite number. - */ - public JSONObject putOpt(String key, Object value) throws JSONException { - if (key != null && value != null) { - put(key, value); - } - return this; - } - - - /** - * Produce a string in double quotes with backslash sequences in all the - * right places. A backslash will be inserted within = '\u0080' && c < '\u00a0') || - (c >= '\u2000' && c < '\u2100')) { - hhhh = "000" + Integer.toHexString(c); - sb.append("\\u" + hhhh.substring(hhhh.length() - 4)); - } else { - sb.append(c); - } - } - } - sb.append('"'); - return sb.toString(); - } - - /** - * Remove a name and its value, if present. - * @param key The name to be removed. - * @return The value that was associated with the name, - * or null if there was no value. - */ - public Object remove(String key) { - return this.map.remove(key); - } - - /** - * Try to convert a string into a number, boolean, or null. If the string - * can't be converted, return the string. - * @param string A String. - * @return A simple JSON value. - */ - public static Object stringToValue(String string) { - Double d; - if (string.equals("")) { - return string; - } - if (string.equalsIgnoreCase("true")) { - return Boolean.TRUE; - } - if (string.equalsIgnoreCase("false")) { - return Boolean.FALSE; - } - if (string.equalsIgnoreCase("null")) { - return JSONObject.NULL; - } - - /* - * If it might be a number, try converting it. - * We support the non-standard 0x- convention. - * If a number cannot be produced, then the value will just - * be a string. Note that the 0x-, plus, and implied string - * conventions are non-standard. A JSON parser may accept - * non-JSON forms as long as it accepts all correct JSON forms. - */ - - char b = string.charAt(0); - if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+') { - if (b == '0' && string.length() > 2 && - (string.charAt(1) == 'x' || string.charAt(1) == 'X')) { - try { - return new Integer(Integer.parseInt(string.substring(2), 16)); - } catch (Exception ignore) { - } - } - try { - if (string.indexOf('.') > -1 || - string.indexOf('e') > -1 || string.indexOf('E') > -1) { - d = Double.valueOf(string); - if (!d.isInfinite() && !d.isNaN()) { - return d; - } - } else { - Long myLong = new Long(string); - if (myLong.longValue() == myLong.intValue()) { - return new Integer(myLong.intValue()); - } else { - return myLong; - } - } - } catch (Exception ignore) { - } - } - return string; - } - - - /** - * Throw an exception if the object is a NaN or infinite number. - * @param o The object to test. - * @throws JSONException If o is a non-finite number. - */ - public static void testValidity(Object o) throws JSONException { - if (o != null) { - if (o instanceof Double) { - if (((Double)o).isInfinite() || ((Double)o).isNaN()) { - throw new JSONException( - "JSON does not allow non-finite numbers."); - } - } else if (o instanceof Float) { - if (((Float)o).isInfinite() || ((Float)o).isNaN()) { - throw new JSONException( - "JSON does not allow non-finite numbers."); - } - } - } - } - - - /** - * Produce a JSONArray containing the values of the members of this - * JSONObject. - * @param names A JSONArray containing a list of key strings. This - * determines the sequence of the values in the result. - * @return A JSONArray of values. - * @throws JSONException If any of the values are non-finite numbers. - */ - public JSONArray toJSONArray(JSONArray names) throws JSONException { - if (names == null || names.length() == 0) { - return null; - } - JSONArray ja = new JSONArray(); - for (int i = 0; i < names.length(); i += 1) { - ja.put(this.opt(names.getString(i))); - } - return ja; - } - - /** - * Make a JSON text of this JSONObject. For compactness, no whitespace - * is added. If this would not result in a syntactically correct JSON text, - * then null will be returned instead. - *

- * Warning: This method assumes that the data structure is acyclical. - * - * @return a printable, displayable, portable, transmittable - * representation of the object, beginning - * with { (left brace) and ending - * with } (right brace). - */ - public String toString() { - try { - Iterator keys = this.keys(); - StringBuffer sb = new StringBuffer("{"); - - while (keys.hasNext()) { - if (sb.length() > 1) { - sb.append(','); - } - Object o = keys.next(); - sb.append(quote(o.toString())); - sb.append(':'); - sb.append(valueToString(this.map.get(o))); - } - sb.append('}'); - return sb.toString(); - } catch (Exception e) { - return null; - } - } - - - /** - * Make a prettyprinted JSON text of this JSONObject. - *

- * Warning: This method assumes that the data structure is acyclical. - * @param indentFactor The number of spaces to add to each level of - * indentation. - * @return a printable, displayable, portable, transmittable - * representation of the object, beginning - * with { (left brace) and ending - * with } (right brace). - * @throws JSONException If the object contains an invalid number. - */ - public String toString(int indentFactor) throws JSONException { - return toString(indentFactor, 0); - } - - - /** - * Make a prettyprinted JSON text of this JSONObject. - *

- * Warning: This method assumes that the data structure is acyclical. - * @param indentFactor The number of spaces to add to each level of - * indentation. - * @param indent The indentation of the top level. - * @return a printable, displayable, transmittable - * representation of the object, beginning - * with { (left brace) and ending - * with } (right brace). - * @throws JSONException If the object contains an invalid number. - */ - String toString(int indentFactor, int indent) throws JSONException { - int i; - int length = this.length(); - if (length == 0) { - return "{}"; - } - Iterator keys = this.keys(); - int newindent = indent + indentFactor; - Object object; - StringBuffer sb = new StringBuffer("{"); - if (length == 1) { - object = keys.next(); - sb.append(quote(object.toString())); - sb.append(": "); - sb.append(valueToString(this.map.get(object), indentFactor, - indent)); - } else { - while (keys.hasNext()) { - object = keys.next(); - if (sb.length() > 1) { - sb.append(",\n"); - } else { - sb.append('\n'); - } - for (i = 0; i < newindent; i += 1) { - sb.append(' '); - } - sb.append(quote(object.toString())); - sb.append(": "); - sb.append(valueToString(this.map.get(object), indentFactor, - newindent)); - } - if (sb.length() > 1) { - sb.append('\n'); - for (i = 0; i < indent; i += 1) { - sb.append(' '); - } - } - } - sb.append('}'); - return sb.toString(); - } - - - /** - * Make a JSON text of an Object value. If the object has an - * value.toJSONString() method, then that method will be used to produce - * the JSON text. The method is required to produce a strictly - * conforming text. If the object does not contain a toJSONString - * method (which is the most common case), then a text will be - * produced by other means. If the value is an array or Collection, - * then a JSONArray will be made from it and its toJSONString method - * will be called. If the value is a MAP, then a JSONObject will be made - * from it and its toJSONString method will be called. Otherwise, the - * value's toString method will be called, and the result will be quoted. - * - *

- * Warning: This method assumes that the data structure is acyclical. - * @param value The value to be serialized. - * @return a printable, displayable, transmittable - * representation of the object, beginning - * with { (left brace) and ending - * with } (right brace). - * @throws JSONException If the value is or contains an invalid number. - */ - public static String valueToString(Object value) throws JSONException { - if (value == null || value.equals(null)) { - return "null"; - } - if (value instanceof JSONString) { - Object object; - try { - object = ((JSONString)value).toJSONString(); - } catch (Exception e) { - throw new JSONException(e); - } - if (object instanceof String) { - return (String)object; - } - throw new JSONException("Bad value from toJSONString: " + object); - } - if (value instanceof Number) { - return numberToString((Number) value); - } - if (value instanceof Boolean || value instanceof JSONObject || - value instanceof JSONArray) { - return value.toString(); - } - if (value instanceof Map) { - return new JSONObject((Map)value).toString(); - } - if (value instanceof Collection) { - return new JSONArray((Collection)value).toString(); - } - if (value.getClass().isArray()) { - return new JSONArray(value).toString(); - } - return quote(value.toString()); - } - - - /** - * Make a prettyprinted JSON text of an object value. - *

- * Warning: This method assumes that the data structure is acyclical. - * @param value The value to be serialized. - * @param indentFactor The number of spaces to add to each level of - * indentation. - * @param indent The indentation of the top level. - * @return a printable, displayable, transmittable - * representation of the object, beginning - * with { (left brace) and ending - * with } (right brace). - * @throws JSONException If the object contains an invalid number. - */ - static String valueToString( - Object value, - int indentFactor, - int indent - ) throws JSONException { - if (value == null || value.equals(null)) { - return "null"; - } - try { - if (value instanceof JSONString) { - Object o = ((JSONString)value).toJSONString(); - if (o instanceof String) { - return (String)o; - } - } - } catch (Exception ignore) { - } - if (value instanceof Number) { - return numberToString((Number) value); - } - if (value instanceof Boolean) { - return value.toString(); - } - if (value instanceof JSONObject) { - return ((JSONObject)value).toString(indentFactor, indent); - } - if (value instanceof JSONArray) { - return ((JSONArray)value).toString(indentFactor, indent); - } - if (value instanceof Map) { - return new JSONObject((Map)value).toString(indentFactor, indent); - } - if (value instanceof Collection) { - return new JSONArray((Collection)value).toString(indentFactor, indent); - } - if (value.getClass().isArray()) { - return new JSONArray(value).toString(indentFactor, indent); - } - return quote(value.toString()); - } - - - /** - * Wrap an object, if necessary. If the object is null, return the NULL - * object. If it is an array or collection, wrap it in a JSONArray. If - * it is a map, wrap it in a JSONObject. If it is a standard property - * (Double, String, et al) then it is already wrapped. Otherwise, if it - * comes from one of the java packages, turn it into a string. And if - * it doesn't, try to wrap it in a JSONObject. If the wrapping fails, - * then null is returned. - * - * @param object The object to wrap - * @return The wrapped value - */ - public static Object wrap(Object object) { - try { - if (object == null) { - return NULL; - } - if (object instanceof JSONObject || object instanceof JSONArray || - NULL.equals(object) || object instanceof JSONString || - object instanceof Byte || object instanceof Character || - object instanceof Short || object instanceof Integer || - object instanceof Long || object instanceof Boolean || - object instanceof Float || object instanceof Double || - object instanceof String) { - return object; - } - - if (object instanceof Collection) { - return new JSONArray((Collection)object); - } - if (object.getClass().isArray()) { - return new JSONArray(object); - } - if (object instanceof Map) { - return new JSONObject((Map)object); - } - Package objectPackage = object.getClass().getPackage(); - String objectPackageName = objectPackage != null ? - objectPackage.getName() : ""; - if ( - objectPackageName.startsWith("java.") || - objectPackageName.startsWith("javax.") || - object.getClass().getClassLoader() == null - ) { - return object.toString(); - } - return new JSONObject(object); - } catch(Exception exception) { - return null; - } - } - - - /** - * Write the contents of the JSONObject as JSON text to a writer. - * For compactness, no whitespace is added. - *

- * Warning: This method assumes that the data structure is acyclical. - * - * @return The writer. - * @throws JSONException - */ - public Writer write(Writer writer) throws JSONException { - try { - boolean commanate = false; - Iterator keys = this.keys(); - writer.write('{'); - - while (keys.hasNext()) { - if (commanate) { - writer.write(','); - } - Object key = keys.next(); - writer.write(quote(key.toString())); - writer.write(':'); - Object value = this.map.get(key); - if (value instanceof JSONObject) { - ((JSONObject)value).write(writer); - } else if (value instanceof JSONArray) { - ((JSONArray)value).write(writer); - } else { - writer.write(valueToString(value)); - } - commanate = true; - } - writer.write('}'); - return writer; - } catch (IOException exception) { - throw new JSONException(exception); - } - } + /** + * JSONObject.NULL is equivalent to the value that JavaScript calls null, + * whilst Java's null is equivalent to the value that JavaScript calls + * undefined. + */ + private static final class Null { + + /** + * There is only intended to be a single instance of the NULL object, so + * the clone method returns itself. + * + * @return NULL. + */ + protected final Object clone() { + return this; + } + + /** + * A Null object is equal to the null value and to itself. + * + * @param object + * An object to test for nullness. + * @return true if the object parameter is the JSONObject.NULL object or + * null. + */ + public boolean equals(Object object) { + return object == null || object == this; + } + + /** + * Get the "null" string value. + * + * @return The string "null". + */ + public String toString() { + return "null"; + } + } + + /** + * The map where the JSONObject's properties are kept. + */ + private Map map; + + /** + * It is sometimes more convenient and less ambiguous to have a + * NULL object than to use Java's null value. + * JSONObject.NULL.equals(null) returns true. + * JSONObject.NULL.toString() returns "null". + */ + public static final Object NULL = new Null(); + + /** + * Construct an empty JSONObject. + */ + public JSONObject() { + this.map = new HashMap(); + } + + /** + * Construct a JSONObject from a subset of another JSONObject. An array of + * strings is used to identify the keys that should be copied. Missing keys + * are ignored. + * + * @param jo + * A JSONObject. + * @param names + * An array of strings. + * @throws JSONException + * @exception JSONException + * If a value is a non-finite number or if a name is + * duplicated. + */ + public JSONObject(JSONObject jo, String[] names) { + this(); + for (int i = 0; i < names.length; i += 1) { + try { + putOnce(names[i], jo.opt(names[i])); + } catch (Exception ignore) { + } + } + } + + /** + * Construct a JSONObject from a JSONTokener. + * + * @param x + * A JSONTokener object containing the source string. + * @throws JSONException + * If there is a syntax error in the source string or a + * duplicated key. + */ + public JSONObject(JSONTokener x) /* throws JSONException */{ + this(); + char c = 0; + String key = null; + + try { + if (x.nextClean() != '{') { + System.out.println("A JSONObject text must begin with '{'"); + // throw x.syntaxError("A JSONObject text must begin with '{'"); + } + } catch (JSONException e2) { + e2.printStackTrace(); + } + for (;;) { + try { + c = x.nextClean(); + } catch (JSONException e1) { + e1.printStackTrace(); + } + switch (c) { + case 0: + System.out.println("A JSONObject text must end with '}'"); + // throw x.syntaxError("A JSONObject text must end with '}'"); + case '}': + return; + default: + try { + x.back(); + key = x.nextValue().toString(); + } catch (JSONException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + + // The key is followed by ':'. We will also tolerate '=' or '=>'. + + try { + c = x.nextClean(); + } catch (JSONException e) { + e.printStackTrace(); + } + if (c == '=') { + try { + if (x.next() != '>') { + x.back(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else if (c != ':') { + System.out.println("JSON Error: Expected a ':' after a key"); + // throw x.syntaxError("Expected a ':' after a key"); + } + try { + putOnce(key, x.nextValue()); + } catch (JSONException e) { + e.printStackTrace(); + } + + // Pairs are separated by ','. We will also tolerate ';'. + + try { + switch (x.nextClean()) { + case ';': + case ',': + if (x.nextClean() == '}') { + return; + } + x.back(); + break; + case '}': + return; + default: + throw x.syntaxError("Expected a ',' or '}'"); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + + /** + * Construct a JSONObject from a Map. + * + * @param map + * A map object that can be used to initialize the contents of + * the JSONObject. + * @throws JSONException + */ + public JSONObject(Map map) { + this.map = new HashMap(); + if (map != null) { + Iterator i = map.entrySet().iterator(); + while (i.hasNext()) { + Map.Entry e = (Map.Entry) i.next(); + Object value = e.getValue(); + if (value != null) { + this.map.put(e.getKey(), wrap(value)); + } + } + } + } + + /** + * Construct a JSONObject from an Object using bean getters. It reflects on + * all of the public methods of the object. For each of the methods with no + * parameters and a name starting with "get" or + * "is" followed by an uppercase letter, the method is invoked, + * and a key and the value returned from the getter method are put into the + * new JSONObject. + * + * The key is formed by removing the "get" or "is" + * prefix. If the second remaining character is not upper case, then the + * first character is converted to lower case. + * + * For example, if an object has a method named "getName", and + * if the result of calling object.getName() is + * "Larry Fine", then the JSONObject will contain + * "name": "Larry Fine". + * + * @param bean + * An object that has getter methods that should be used to make + * a JSONObject. + */ + public JSONObject(Object bean) { + this(); + populateMap(bean); + } + + /** + * Construct a JSONObject from an Object, using reflection to find the + * public members. The resulting JSONObject's keys will be the strings from + * the names array, and the values will be the field values associated with + * those keys in the object. If a key is not found or not visible, then it + * will not be copied into the new JSONObject. + * + * @param object + * An object that has fields that should be used to make a + * JSONObject. + * @param names + * An array of strings, the names of the fields to be obtained + * from the object. + */ + public JSONObject(Object object, String names[]) { + this(); + Class c = object.getClass(); + for (int i = 0; i < names.length; i += 1) { + String name = names[i]; + try { + putOpt(name, c.getField(name).get(object)); + } catch (Exception ignore) { + } + } + } + + /** + * Construct a JSONObject from a source JSON text string. This is the most + * commonly used JSONObject constructor. + * + * @param source + * A string beginning with { (left + * brace) and ending with } + *  (right brace). + * @exception JSONException + * If there is a syntax error in the source string or a + * duplicated key. + */ + public JSONObject(String source) /* throws JSONException */{ + this(new JSONTokener(source)); + } + + /** + * Construct a JSONObject from a ResourceBundle. + * + * @param baseName + * The ResourceBundle base name. + * @param locale + * The Locale to load the ResourceBundle for. + * @throws JSONException + * If any JSONExceptions are detected. + */ + public JSONObject(String baseName, Locale locale) /*throws JSONException*/ { + this(); + ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, + Thread.currentThread().getContextClassLoader()); + + // Iterate through the keys in the bundle. + + Enumeration keys = bundle.getKeys(); + while (keys.hasMoreElements()) { + Object key = keys.nextElement(); + if (key instanceof String) { + + // Go through the path, ensuring that there is a nested + // JSONObject for each + // segment except the last. Add the value using the last + // segment's name into + // the deepest nested JSONObject. + + String[] path = ((String) key).split("\\."); + int last = path.length - 1; + JSONObject target = this; + for (int i = 0; i < last; i += 1) { + String segment = path[i]; + JSONObject nextTarget = target.optJSONObject(segment); + if (nextTarget == null) { + nextTarget = new JSONObject(); + target.put(segment, nextTarget); + } + target = nextTarget; + } + target.put(path[last], bundle.getString((String) key)); + } + } + } + + /** + * Accumulate values under a key. It is similar to the put method except + * that if there is already an object stored under the key then a JSONArray + * is stored under the key to hold all of the accumulated values. If there + * is already a JSONArray, then the new value is appended to it. In + * contrast, the put method replaces the previous value. + * + * If only one value is accumulated that is not a JSONArray, then the result + * will be the same as using put. But if multiple values are accumulated, + * then the result will be like append. + * + * @param key + * A key string. + * @param value + * An object to be accumulated under the key. + * @return this. + * @throws JSONException + * If the value is an invalid number or if the key is null. + */ + public JSONObject accumulate(String key, Object value) /*throws JSONException*/ { + try { + testValidity(value); + } catch (JSONException e) { + e.printStackTrace(); + } + Object object = opt(key); + if (object == null) { + put(key, value instanceof JSONArray ? new JSONArray().put(value) + : value); + } else if (object instanceof JSONArray) { + ((JSONArray) object).put(value); + } else { + put(key, new JSONArray().put(object).put(value)); + } + return this; + } + + /** + * Append values to the array under a key. If the key does not exist in the + * JSONObject, then the key is put in the JSONObject with its value being a + * JSONArray containing the value parameter. If the key was already + * associated with a JSONArray, then the value parameter is appended to it. + * + * @param key + * A key string. + * @param value + * An object to be accumulated under the key. + * @return this. + * @throws JSONException + * If the key is null or if the current value associated with + * the key is not a JSONArray. + */ + public JSONObject append(String key, Object value) /*throws JSONException*/ { + try { + testValidity(value); + } catch (JSONException e) { + e.printStackTrace(); + System.out.println("JSONObject[" + key + + "] is not a JSONArray."); + } + Object object = opt(key); + if (object == null) { + put(key, new JSONArray().put(value)); + } else if (object instanceof JSONArray) { + put(key, ((JSONArray) object).put(value)); + } else { +// throw new JSONException("JSONObject[" + key +// + "] is not a JSONArray."); + System.out.println("JSONObject[" + key + + "] is not a JSONArray."); + } + return this; + } + + /** + * Produce a string from a double. The string "null" will be returned if the + * number is not finite. + * + * @param d + * A double. + * @return A String. + */ + public static String doubleToString(double d) { + if (Double.isInfinite(d) || Double.isNaN(d)) { + return "null"; + } + + // Shave off trailing zeros and decimal point, if possible. + + String string = Double.toString(d); + if (string.indexOf('.') > 0 && string.indexOf('e') < 0 + && string.indexOf('E') < 0) { + while (string.endsWith("0")) { + string = string.substring(0, string.length() - 1); + } + if (string.endsWith(".")) { + string = string.substring(0, string.length() - 1); + } + } + return string; + } + + /** + * Get the value object associated with a key. + * + * @param key + * A key string. + * @return The object associated with the key. + * @throws JSONException + * if the key is not found. + */ + public Object get(String key) /* throws JSONException */{ + if (key == null) { + System.out.println("JSON Error: Null key."); + // throw new JSONException("Null key."); + } + Object object = opt(key); + if (object == null) { + System.out.println("JSONObject[" + quote(key) + "] not found."); + //throw new JSONException("JSONObject[" + quote(key) + "] not found."); + } + return object; + } + + /** + * Get the boolean value associated with a key. + * + * @param key + * A key string. + * @return The truth. (False if it failes to find the value) + * @throws JSONException + * if the value is not a Boolean or the String "true" or + * "false". + */ + public boolean getBoolean(String key) /*throws JSONException*/ { + Object object = get(key); + if (object.equals(Boolean.FALSE) + || (object instanceof String && ((String) object) + .equalsIgnoreCase("false"))) { + return false; + } else if (object.equals(Boolean.TRUE) + || (object instanceof String && ((String) object) + .equalsIgnoreCase("true"))) { + return true; + } +// throw new JSONException("JSONObject[" + quote(key) +// + "] is not a Boolean."); + System.out.println("JSONObject[" + quote(key) + + "] is not a Boolean."); + + return false; + } + + /** + * Get the double value associated with a key. + * + * @param key + * A key string. + * @return The numeric value. -1 if it failes to find the value + * @throws JSONException + * if the key is not found or if the value is not a Number + * object and cannot be converted to a number. + */ + public double getDouble(String key) /*throws JSONException*/ { + Object object = get(key); + try { + return object instanceof Number ? ((Number) object).doubleValue() + : Double.parseDouble((String) object); + } catch (Exception e) { +// throw new JSONException("JSONObject[" + quote(key) +// + "] is not a number."); + System.out.println("JSONObject[" + quote(key) + + "] is not a number."); + } + return -1; + } + + /** + * Get the int value associated with a key. + * + * @param key + * A key string. + * @return The integer value. (-1 if it failes to get the integer) + * @throws JSONException + * if the key is not found or if the value cannot be converted + * to an integer. + */ + public int getInt(String key) /*throws JSONException*/ { + Object object = get(key); + try { + return object instanceof Number ? ((Number) object).intValue() + : Integer.parseInt((String) object); + } catch (Exception e) { +// throw new JSONException("JSONObject[" + quote(key) +// + "] is not an int."); + System.out.println("JSONObject[" + quote(key) + "] is not an int."); + } + // Return some default value... + return -1; + } + + /** + * Get the JSONArray value associated with a key. + * + * @param key + * A key string. + * @return A JSONArray which is the value. (null if failes to find the array) + * @throws JSONException + * if the key is not found or if the value is not a JSONArray. + */ + public JSONArray getJSONArray(String key) /*throws JSONException*/ { + Object object = get(key); + if (object instanceof JSONArray) { + return (JSONArray) object; + } +// throw new JSONException("JSONObject[" + quote(key) +// + "] is not a JSONArray."); + System.out.println("JSONObject[" + quote(key) + + "] is not a JSONArray."); + return null; + } + + /** + * Get the JSONObject value associated with a key. + * + * @param key + * A key string. + * @return A JSONObject which is the value. + * @throws JSONException + * if the key is not found or if the value is not a JSONObject. + */ + public JSONObject getJSONObject(String key) { + Object object = get(key); + if (object instanceof JSONObject) { + return (JSONObject) object; + } +// throw new JSONException("JSONObject[" + quote(key) +// + "] is not a JSONObject."); + return null; + } + + /** + * Get the long value associated with a key. + * + * @param key + * A key string. + * @return The long value. (-1 if it failes) + * @throws JSONException + * if the key is not found or if the value cannot be converted + * to a long. + */ + public long getLong(String key) /*throws JSONException*/ { + Object object = get(key); + try { + return object instanceof Number ? ((Number) object).longValue() + : Long.parseLong((String) object); + } catch (Exception e) { +// throw new JSONException("JSONObject[" + quote(key) +// + "] is not a long."); + System.out.println("JSONObject[" + quote(key) + + "] is not a long."); + } + return -1; + } + + /** + * Get an array of field names from a JSONObject. + * + * @return An array of field names, or null if there are no names. + */ + public static String[] getNames(JSONObject jo) { + int length = jo.length(); + if (length == 0) { + return null; + } + Iterator iterator = jo.keys(); + String[] names = new String[length]; + int i = 0; + while (iterator.hasNext()) { + names[i] = (String) iterator.next(); + i += 1; + } + return names; + } + + /** + * Get an array of field names from an Object. + * + * @return An array of field names, or null if there are no names. + */ + public static String[] getNames(Object object) { + if (object == null) { + return null; + } + Class klass = object.getClass(); + Field[] fields = klass.getFields(); + int length = fields.length; + if (length == 0) { + return null; + } + String[] names = new String[length]; + for (int i = 0; i < length; i += 1) { + names[i] = fields[i].getName(); + } + return names; + } + + /** + * Get the string associated with a key. + * + * @param key + * A key string. + * @return A string which is the value. (empty string if it fails) + * @throws JSONException + * if there is no string value for the key. + */ + public String getString(String key) /*throws JSONException*/ { + Object object = get(key); + if (object instanceof String) { + return (String) object; + } +// throw new JSONException("JSONObject[" + quote(key) + "] not a string."); + System.out.println("JSONObject[" + quote(key) + "] not a string."); + return ""; + } + + /** + * Determine if the JSONObject contains a specific key. + * + * @param key + * A key string. + * @return true if the key exists in the JSONObject. + */ + public boolean has(String key) { + return this.map.containsKey(key); + } + + /** + * Increment a property of a JSONObject. If there is no such property, + * create one with a value of 1. If there is such a property, and if it is + * an Integer, Long, Double, or Float, then add one to it. + * + * @param key + * A key string. + * @return this. + * @throws JSONException + * If there is already a property with this name that is not an + * Integer, Long, Double, or Float. + */ + public JSONObject increment(String key) /*throws JSONException*/ { + Object value = opt(key); + if (value == null) { + put(key, 1); + } else if (value instanceof Integer) { + put(key, ((Integer) value).intValue() + 1); + } else if (value instanceof Long) { + put(key, ((Long) value).longValue() + 1); + } else if (value instanceof Double) { + put(key, ((Double) value).doubleValue() + 1); + } else if (value instanceof Float) { + put(key, ((Float) value).floatValue() + 1); + } else { +// throw new JSONException("Unable to increment [" + quote(key) + "]."); + System.out.println("Unable to increment [" + quote(key) + "]."); + } + return this; + } + + /** + * Determine if the value associated with the key is null or if there is no + * value. + * + * @param key + * A key string. + * @return true if there is no value associated with the key or if the value + * is the JSONObject.NULL object. + */ + public boolean isNull(String key) { + return JSONObject.NULL.equals(opt(key)); + } + + /** + * Get an enumeration of the keys of the JSONObject. + * + * @return An iterator of the keys. + */ + public Iterator keys() { + return this.map.keySet().iterator(); + } + + /** + * Get the number of keys stored in the JSONObject. + * + * @return The number of keys in the JSONObject. + */ + public int length() { + return this.map.size(); + } + + /** + * Produce a JSONArray containing the names of the elements of this + * JSONObject. + * + * @return A JSONArray containing the key strings, or null if the JSONObject + * is empty. + */ + public JSONArray names() { + JSONArray ja = new JSONArray(); + Iterator keys = this.keys(); + while (keys.hasNext()) { + ja.put(keys.next()); + } + return ja.length() == 0 ? null : ja; + } + + /** + * Produce a string from a Number. + * + * @param number + * A Number + * @return A String. + * @throws JSONException + * If n is a non-finite number. + */ + public static String numberToString(Number number) /*throws JSONException*/ { + if (number == null) { +// throw new JSONException("Null pointer"); + System.out.println("Null pointer"); + } + try { + testValidity(number); + } catch (JSONException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + // Shave off trailing zeros and decimal point, if possible. + + String string = number.toString(); + if (string.indexOf('.') > 0 && string.indexOf('e') < 0 + && string.indexOf('E') < 0) { + while (string.endsWith("0")) { + string = string.substring(0, string.length() - 1); + } + if (string.endsWith(".")) { + string = string.substring(0, string.length() - 1); + } + } + return string; + } + + /** + * Get an optional value associated with a key. + * + * @param key + * A key string. + * @return An object which is the value, or null if there is no value. + */ + public Object opt(String key) { + return key == null ? null : this.map.get(key); + } + + /** + * Get an optional boolean associated with a key. It returns false if there + * is no such key, or if the value is not Boolean.TRUE or the String "true". + * + * @param key + * A key string. + * @return The truth. + */ + public boolean optBoolean(String key) { + return optBoolean(key, false); + } + + /** + * Get an optional boolean associated with a key. It returns the + * defaultValue if there is no such key, or if it is not a Boolean or the + * String "true" or "false" (case insensitive). + * + * @param key + * A key string. + * @param defaultValue + * The default. + * @return The truth. + */ + public boolean optBoolean(String key, boolean defaultValue) { + try { + return getBoolean(key); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * Get an optional double associated with a key, or NaN if there is no such + * key or if its value is not a number. If the value is a string, an attempt + * will be made to evaluate it as a number. + * + * @param key + * A string which is the key. + * @return An object which is the value. + */ + public double optDouble(String key) { + return optDouble(key, Double.NaN); + } + + /** + * Get an optional double associated with a key, or the defaultValue if + * there is no such key or if its value is not a number. If the value is a + * string, an attempt will be made to evaluate it as a number. + * + * @param key + * A key string. + * @param defaultValue + * The default. + * @return An object which is the value. + */ + public double optDouble(String key, double defaultValue) { + try { + return getDouble(key); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * Get an optional int value associated with a key, or zero if there is no + * such key or if the value is not a number. If the value is a string, an + * attempt will be made to evaluate it as a number. + * + * @param key + * A key string. + * @return An object which is the value. + */ + public int optInt(String key) { + return optInt(key, 0); + } + + /** + * Get an optional int value associated with a key, or the default if there + * is no such key or if the value is not a number. If the value is a string, + * an attempt will be made to evaluate it as a number. + * + * @param key + * A key string. + * @param defaultValue + * The default. + * @return An object which is the value. + */ + public int optInt(String key, int defaultValue) { + try { + return getInt(key); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * Get an optional JSONArray associated with a key. It returns null if there + * is no such key, or if its value is not a JSONArray. + * + * @param key + * A key string. + * @return A JSONArray which is the value. + */ + public JSONArray optJSONArray(String key) { + Object o = opt(key); + return o instanceof JSONArray ? (JSONArray) o : null; + } + + /** + * Get an optional JSONObject associated with a key. It returns null if + * there is no such key, or if its value is not a JSONObject. + * + * @param key + * A key string. + * @return A JSONObject which is the value. + */ + public JSONObject optJSONObject(String key) { + Object object = opt(key); + return object instanceof JSONObject ? (JSONObject) object : null; + } + + /** + * Get an optional long value associated with a key, or zero if there is no + * such key or if the value is not a number. If the value is a string, an + * attempt will be made to evaluate it as a number. + * + * @param key + * A key string. + * @return An object which is the value. + */ + public long optLong(String key) { + return optLong(key, 0); + } + + /** + * Get an optional long value associated with a key, or the default if there + * is no such key or if the value is not a number. If the value is a string, + * an attempt will be made to evaluate it as a number. + * + * @param key + * A key string. + * @param defaultValue + * The default. + * @return An object which is the value. + */ + public long optLong(String key, long defaultValue) { + try { + return getLong(key); + } catch (Exception e) { + return defaultValue; + } + } + + /** + * Get an optional string associated with a key. It returns an empty string + * if there is no such key. If the value is not a string and is not null, + * then it is converted to a string. + * + * @param key + * A key string. + * @return A string which is the value. + */ + public String optString(String key) { + return optString(key, ""); + } + + /** + * Get an optional string associated with a key. It returns the defaultValue + * if there is no such key. + * + * @param key + * A key string. + * @param defaultValue + * The default. + * @return A string which is the value. + */ + public String optString(String key, String defaultValue) { + Object object = opt(key); + return NULL.equals(object) ? defaultValue : object.toString(); + } + + private void populateMap(Object bean) { + Class klass = bean.getClass(); + + // If klass is a System class then set includeSuperClass to false. + + boolean includeSuperClass = klass.getClassLoader() != null; + + Method[] methods = (includeSuperClass) ? klass.getMethods() : klass + .getDeclaredMethods(); + for (int i = 0; i < methods.length; i += 1) { + try { + Method method = methods[i]; + if (Modifier.isPublic(method.getModifiers())) { + String name = method.getName(); + String key = ""; + if (name.startsWith("get")) { + if (name.equals("getClass") + || name.equals("getDeclaringClass")) { + key = ""; + } else { + key = name.substring(3); + } + } else if (name.startsWith("is")) { + key = name.substring(2); + } + if (key.length() > 0 + && Character.isUpperCase(key.charAt(0)) + && method.getParameterTypes().length == 0) { + if (key.length() == 1) { + key = key.toLowerCase(); + } else if (!Character.isUpperCase(key.charAt(1))) { + key = key.substring(0, 1).toLowerCase() + + key.substring(1); + } + + Object result = method.invoke(bean, (Object[]) null); + if (result != null) { + map.put(key, wrap(result)); + } + } + } + } catch (Exception ignore) { + } + } + } + + /** + * Put a key/boolean pair in the JSONObject. + * + * @param key + * A key string. + * @param value + * A boolean which is the value. + * @return this. + * @throws JSONException + * If the key is null. + */ + public JSONObject put(String key, boolean value) /* throws JSONException */{ + put(key, value ? Boolean.TRUE : Boolean.FALSE); + return this; + } + + /** + * Put a key/value pair in the JSONObject, where the value will be a + * JSONArray which is produced from a Collection. + * + * @param key + * A key string. + * @param value + * A Collection value. + * @return this. + * @throws JSONException + */ + public JSONObject put(String key, Collection value) /* throws JSONException */{ + put(key, new JSONArray(value)); + return this; + } + + /** + * Put a key/double pair in the JSONObject. + * + * @param key + * A key string. + * @param value + * A double which is the value. + * @return this. + * @throws JSONException + * If the key is null or if the number is invalid. + */ + public JSONObject put(String key, double value) /* throws JSONException */{ + put(key, new Double(value)); + return this; + } + + /** + * Put a key/int pair in the JSONObject. + * + * @param key + * A key string. + * @param value + * An int which is the value. + * @return this. + * @throws JSONException + * If the key is null. + */ + public JSONObject put(String key, int value) /* throws JSONException */{ + put(key, new Integer(value)); + return this; + } + + /** + * Put a key/long pair in the JSONObject. + * + * @param key + * A key string. + * @param value + * A long which is the value. + * @return this. + * @throws JSONException + * If the key is null. + */ + public JSONObject put(String key, long value) /* throws JSONException */{ + put(key, new Long(value)); + return this; + } + + /** + * Put a key/value pair in the JSONObject, where the value will be a + * JSONObject which is produced from a Map. + * + * @param key + * A key string. + * @param value + * A Map value. + * @return this. + * @throws JSONException + */ + public JSONObject put(String key, Map value) /* throws JSONException */{ + put(key, new JSONObject(value)); + return this; + } + + /** + * Put a key/value pair in the JSONObject. If the value is null, then the + * key will be removed from the JSONObject if it is present. + * + * @param key + * A key string. + * @param value + * An object which is the value. It should be of one of these + * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + * String, or the JSONObject.NULL object. + * @return this. + * @throws JSONException + * If the value is non-finite number or if the key is null. + */ + public JSONObject put(String key, Object value) { + // In processing, we want to avoid forcing the user to Exception + // handling! + // if (key == null) { + // throw new JSONException("Null key."); + // } + + if (key == null) { + System.out + .println("Looks like your \"key\" was empty. (nullpointer)"); + } else { + if (value != null) { + try { + testValidity(value); + } catch (JSONException e) { + e.printStackTrace(); + } + this.map.put(key, value); + } else { + remove(key); + } + } + return this; + } + + /** + * Put a key/value pair in the JSONObject, but only if the key and the value + * are both non-null, and only if there is not already a member with that + * name. + * + * @param key + * @param value + * @return his. + * @throws JSONException + * if the key is a duplicate + */ + public JSONObject putOnce(String key, Object value) /*throws JSONException*/ { + if (key != null && value != null) { + if (opt(key) != null) { +// throw new JSONException("Duplicate key \"" + key + "\""); + System.out.println("Duplicate key \"" + key + "\""); + } + put(key, value); + } + return this; + } + + /** + * Put a key/value pair in the JSONObject, but only if the key and the value + * are both non-null. + * + * @param key + * A key string. + * @param value + * An object which is the value. It should be of one of these + * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + * String, or the JSONObject.NULL object. + * @return this. + * @throws JSONException + * If the value is a non-finite number. + */ + public JSONObject putOpt(String key, Object value) /*throws JSONException*/ { + if (key != null && value != null) { + put(key, value); + } + return this; + } + + /** + * Produce a string in double quotes with backslash sequences in all the + * right places. A backslash will be inserted within = '\u0080' && c < '\u00a0') + || (c >= '\u2000' && c < '\u2100')) { + hhhh = "000" + Integer.toHexString(c); + sb.append("\\u" + hhhh.substring(hhhh.length() - 4)); + } else { + sb.append(c); + } + } + } + sb.append('"'); + return sb.toString(); + } + + /** + * Remove a name and its value, if present. + * + * @param key + * The name to be removed. + * @return The value that was associated with the name, or null if there was + * no value. + */ + public Object remove(String key) { + return this.map.remove(key); + } + + /** + * Try to convert a string into a number, boolean, or null. If the string + * can't be converted, return the string. + * + * @param string + * A String. + * @return A simple JSON value. + */ + public static Object stringToValue(String string) { + Double d; + if (string.equals("")) { + return string; + } + if (string.equalsIgnoreCase("true")) { + return Boolean.TRUE; + } + if (string.equalsIgnoreCase("false")) { + return Boolean.FALSE; + } + if (string.equalsIgnoreCase("null")) { + return JSONObject.NULL; + } + + /* + * If it might be a number, try converting it. We support the + * non-standard 0x- convention. If a number cannot be produced, then the + * value will just be a string. Note that the 0x-, plus, and implied + * string conventions are non-standard. A JSON parser may accept + * non-JSON forms as long as it accepts all correct JSON forms. + */ + + char b = string.charAt(0); + if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+') { + if (b == '0' && string.length() > 2 + && (string.charAt(1) == 'x' || string.charAt(1) == 'X')) { + try { + return new Integer( + Integer.parseInt(string.substring(2), 16)); + } catch (Exception ignore) { + } + } + try { + if (string.indexOf('.') > -1 || string.indexOf('e') > -1 + || string.indexOf('E') > -1) { + d = Double.valueOf(string); + if (!d.isInfinite() && !d.isNaN()) { + return d; + } + } else { + Long myLong = new Long(string); + if (myLong.longValue() == myLong.intValue()) { + return new Integer(myLong.intValue()); + } else { + return myLong; + } + } + } catch (Exception ignore) { + } + } + return string; + } + + /** + * Throw an exception if the object is a NaN or infinite number. + * + * @param o + * The object to test. + * @throws JSONException + * If o is a non-finite number. + */ + public static void testValidity(Object o) throws JSONException { + if (o != null) { + if (o instanceof Double) { + if (((Double) o).isInfinite() || ((Double) o).isNaN()) { + throw new JSONException( + "JSON does not allow non-finite numbers."); + } + } else if (o instanceof Float) { + if (((Float) o).isInfinite() || ((Float) o).isNaN()) { + throw new JSONException( + "JSON does not allow non-finite numbers."); + } + } + } + } + + /** + * Produce a JSONArray containing the values of the members of this + * JSONObject. + * + * @param names + * A JSONArray containing a list of key strings. This determines + * the sequence of the values in the result. + * @return A JSONArray of values. + * @throws JSONException + * If any of the values are non-finite numbers. + */ + public JSONArray toJSONArray(JSONArray names) throws JSONException { + if (names == null || names.length() == 0) { + return null; + } + JSONArray ja = new JSONArray(); + for (int i = 0; i < names.length(); i += 1) { + ja.put(this.opt(names.getString(i))); + } + return ja; + } + + /** + * Make a JSON text of this JSONObject. For compactness, no whitespace is + * added. If this would not result in a syntactically correct JSON text, + * then null will be returned instead. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return a printable, displayable, portable, transmittable representation + * of the object, beginning with { (left + * brace) and ending with } (right + * brace). + */ + public String toString() { + try { + Iterator keys = this.keys(); + StringBuffer sb = new StringBuffer("{"); + + while (keys.hasNext()) { + if (sb.length() > 1) { + sb.append(','); + } + Object o = keys.next(); + sb.append(quote(o.toString())); + sb.append(':'); + sb.append(valueToString(this.map.get(o))); + } + sb.append('}'); + return sb.toString(); + } catch (Exception e) { + return null; + } + } + + /** + * Make a prettyprinted JSON text of this JSONObject. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @param indentFactor + * The number of spaces to add to each level of indentation. + * @return a printable, displayable, portable, transmittable representation + * of the object, beginning with { (left + * brace) and ending with } (right + * brace). + * @throws JSONException + * If the object contains an invalid number. + */ + public String toString(int indentFactor) /*throws JSONException*/ { + return toString(indentFactor, 0); + } + + /** + * Make a prettyprinted JSON text of this JSONObject. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @param indentFactor + * The number of spaces to add to each level of indentation. + * @param indent + * The indentation of the top level. + * @return a printable, displayable, transmittable representation of the + * object, beginning with { (left + * brace) and ending with } (right + * brace). + * @throws JSONException + * If the object contains an invalid number. + */ + String toString(int indentFactor, int indent) /*throws JSONException*/ { + int i; + int length = this.length(); + if (length == 0) { + return "{}"; + } + Iterator keys = this.keys(); + int newindent = indent + indentFactor; + Object object; + StringBuffer sb = new StringBuffer("{"); + if (length == 1) { + object = keys.next(); + sb.append(quote(object.toString())); + sb.append(": "); + sb.append(valueToString(this.map.get(object), indentFactor, indent)); + } else { + while (keys.hasNext()) { + object = keys.next(); + if (sb.length() > 1) { + sb.append(",\n"); + } else { + sb.append('\n'); + } + for (i = 0; i < newindent; i += 1) { + sb.append(' '); + } + sb.append(quote(object.toString())); + sb.append(": "); + sb.append(valueToString(this.map.get(object), indentFactor, + newindent)); + } + if (sb.length() > 1) { + sb.append('\n'); + for (i = 0; i < indent; i += 1) { + sb.append(' '); + } + } + } + sb.append('}'); + return sb.toString(); + } + + /** + * Make a JSON text of an Object value. If the object has an + * value.toJSONString() method, then that method will be used to produce the + * JSON text. The method is required to produce a strictly conforming text. + * If the object does not contain a toJSONString method (which is the most + * common case), then a text will be produced by other means. If the value + * is an array or Collection, then a JSONArray will be made from it and its + * toJSONString method will be called. If the value is a MAP, then a + * JSONObject will be made from it and its toJSONString method will be + * called. Otherwise, the value's toString method will be called, and the + * result will be quoted. + * + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @param value + * The value to be serialized. + * @return a printable, displayable, transmittable representation of the + * object, beginning with { (left + * brace) and ending with } (right + * brace). + * @throws JSONException + * If the value is or contains an invalid number. + */ + public static String valueToString(Object value) /*throws JSONException*/ { + if (value == null || value.equals(null)) { + return "null"; + } + if (value instanceof JSONString) { + Object object = null; + try { + object = ((JSONString) value).toJSONString(); + } catch (Exception e) { +// throw new JSONException(e); + e.printStackTrace(); + } + if (object instanceof String) { + return (String) object; + } +// throw new JSONException("Bad value from toJSONString: " + object); + System.out.println("Bad value from toJSONString: " + object); + } + if (value instanceof Number) { + return numberToString((Number) value); + } + if (value instanceof Boolean || value instanceof JSONObject + || value instanceof JSONArray) { + return value.toString(); + } + if (value instanceof Map) { + return new JSONObject((Map) value).toString(); + } + if (value instanceof Collection) { + return new JSONArray((Collection) value).toString(); + } + if (value.getClass().isArray()) { + return new JSONArray(value).toString(); + } + return quote(value.toString()); + } + + /** + * Make a prettyprinted JSON text of an object value. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @param value + * The value to be serialized. + * @param indentFactor + * The number of spaces to add to each level of indentation. + * @param indent + * The indentation of the top level. + * @return a printable, displayable, transmittable representation of the + * object, beginning with { (left + * brace) and ending with } (right + * brace). + * @throws JSONException + * If the object contains an invalid number. + */ + static String valueToString(Object value, int indentFactor, int indent) + /*throws JSONException*/ { + if (value == null || value.equals(null)) { + return "null"; + } + try { + if (value instanceof JSONString) { + Object o = ((JSONString) value).toJSONString(); + if (o instanceof String) { + return (String) o; + } + } + } catch (Exception ignore) { + } + if (value instanceof Number) { + return numberToString((Number) value); + } + if (value instanceof Boolean) { + return value.toString(); + } + if (value instanceof JSONObject) { + return ((JSONObject) value).toString(indentFactor, indent); + } + if (value instanceof JSONArray) { + return ((JSONArray) value).toString(indentFactor, indent); + } + if (value instanceof Map) { + return new JSONObject((Map) value).toString(indentFactor, indent); + } + if (value instanceof Collection) { + return new JSONArray((Collection) value).toString(indentFactor, + indent); + } + if (value.getClass().isArray()) { + return new JSONArray(value).toString(indentFactor, indent); + } + return quote(value.toString()); + } + + /** + * Wrap an object, if necessary. If the object is null, return the NULL + * object. If it is an array or collection, wrap it in a JSONArray. If it is + * a map, wrap it in a JSONObject. If it is a standard property (Double, + * String, et al) then it is already wrapped. Otherwise, if it comes from + * one of the java packages, turn it into a string. And if it doesn't, try + * to wrap it in a JSONObject. If the wrapping fails, then null is returned. + * + * @param object + * The object to wrap + * @return The wrapped value + */ + public static Object wrap(Object object) { + try { + if (object == null) { + return NULL; + } + if (object instanceof JSONObject || object instanceof JSONArray + || NULL.equals(object) || object instanceof JSONString + || object instanceof Byte || object instanceof Character + || object instanceof Short || object instanceof Integer + || object instanceof Long || object instanceof Boolean + || object instanceof Float || object instanceof Double + || object instanceof String) { + return object; + } + + if (object instanceof Collection) { + return new JSONArray((Collection) object); + } + if (object.getClass().isArray()) { + return new JSONArray(object); + } + if (object instanceof Map) { + return new JSONObject((Map) object); + } + Package objectPackage = object.getClass().getPackage(); + String objectPackageName = objectPackage != null ? objectPackage + .getName() : ""; + if (objectPackageName.startsWith("java.") + || objectPackageName.startsWith("javax.") + || object.getClass().getClassLoader() == null) { + return object.toString(); + } + return new JSONObject(object); + } catch (Exception exception) { + return null; + } + } + + /** + * Write the contents of the JSONObject as JSON text to a writer. For + * compactness, no whitespace is added. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return The writer. + * @throws JSONException + */ + public Writer write(Writer writer) /*throws JSONException*/ { + try { + boolean commanate = false; + Iterator keys = this.keys(); + writer.write('{'); + + while (keys.hasNext()) { + if (commanate) { + writer.write(','); + } + Object key = keys.next(); + writer.write(quote(key.toString())); + writer.write(':'); + Object value = this.map.get(key); + if (value instanceof JSONObject) { + ((JSONObject) value).write(writer); + } else if (value instanceof JSONArray) { + ((JSONArray) value).write(writer); + } else { + writer.write(valueToString(value)); + } + commanate = true; + } + writer.write('}'); + return writer; + } catch (IOException exception) { +// throw new JSONException(exception); + exception.printStackTrace(); + } + + return writer; + } } \ No newline at end of file From afe4a811679f8712988c2ee1506e92b2b747e49f Mon Sep 17 00:00:00 2001 From: agoransson Date: Tue, 21 Feb 2012 11:08:05 +0100 Subject: [PATCH 08/38] Updated readme. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8365e96a2..61354e64f 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ This library is simply a fork of the original JSON for [Java library written by # Installation in Processing -1. Download the [zip-file](https://github.com/downloads/agoransson/JSON-processing/json4processing-0.1.1.zip) -2. Extract the [zip-file](https://github.com/downloads/agoransson/JSON-processing/json4processing-0.1.1.zip) into your /sketchbook/libraries/ folder. +1. Download the latest version [here](https://github.com/agoransson/JSON-processing/downloads) +2. Extract the zip-file into your /sketchbook/libraries/ folder. 3. Restart Processing IDE # Getting started with JSON in Processing. From 6d3221b5322c578b7880f015930f850ff8fce37f Mon Sep 17 00:00:00 2001 From: agoransson Date: Tue, 21 Feb 2012 11:30:16 +0100 Subject: [PATCH 09/38] Bastard crashed on me... and I despise windows line endings... I really do! --- .../download/json4processing-0.1.2.zip | Bin 165756 -> 165524 bytes .../create_jsonobject/create_jsonobject.pde | 2 +- .../reading_yahoo_weather.pde | Bin 998 -> 1035 bytes .../reference/allclasses-frame.html | 2 +- .../reference/allclasses-noframe.html | 2 +- .../reference/constant-values.html | 2 +- .../reference/deprecated-list.html | 2 +- .../reference/help-doc.html | 2 +- .../reference/index-all.html | 2 +- .../reference/index.html | 2 +- .../reference/org/json/CDL.html | 2 +- .../reference/org/json/Cookie.html | 2 +- .../reference/org/json/CookieList.html | 2 +- .../reference/org/json/HTTP.html | 2 +- .../reference/org/json/HTTPTokener.html | 2 +- .../reference/org/json/JSONArray.html | 2 +- .../reference/org/json/JSONException.html | 2 +- .../reference/org/json/JSONML.html | 2 +- .../reference/org/json/JSONObject.html | 2 +- .../reference/org/json/JSONString.html | 2 +- .../reference/org/json/JSONStringer.html | 2 +- .../reference/org/json/JSONTokener.html | 2 +- .../reference/org/json/JSONWriter.html | 2 +- .../reference/org/json/XML.html | 2 +- .../reference/org/json/XMLTokener.html | 2 +- .../reference/org/json/package-frame.html | 2 +- .../reference/org/json/package-summary.html | 2 +- .../reference/org/json/package-tree.html | 2 +- .../reference/overview-tree.html | 2 +- .../reference/serialized-form.html | 2 +- .../create_jsonobject/create_jsonobject.pde | 8 +- .../reading_yahoo_weather.pde | Bin 998 -> 1033 bytes src/org/json/CDL.java | 558 ++++++------- src/org/json/Cookie.java | 338 ++++---- src/org/json/CookieList.java | 180 ++--- src/org/json/HTTP.java | 326 ++++---- src/org/json/HTTPTokener.java | 154 ++-- src/org/json/JSONException.java | 56 +- src/org/json/JSONString.java | 36 +- src/org/json/JSONStringer.java | 156 ++-- src/org/json/JSONWriter.java | 646 ++++++++-------- src/org/json/XMLTokener.java | 730 +++++++++--------- 42 files changed, 1619 insertions(+), 1625 deletions(-) diff --git a/distribution/json4processing-0.1.2/download/json4processing-0.1.2.zip b/distribution/json4processing-0.1.2/download/json4processing-0.1.2.zip index 69daf84e9f152370d63d528321c699129ac9e150..d20aa8a780abc149bd99c73ce8a878a96dd04eb1 100644 GIT binary patch delta 123885 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 RZ?yhHfc9du6SQc+{tw86GN1qe delta 124107 zcmYhhV{qWl6Sx`Mwrz7`+qUg&oP1*2wrwXH+sOtSZftX-``-P3cXjjXc`-HB^;GxN z)O4rD!F|NTAt=j%L%@Oj-|Jd434s>!{{SD`|G-7;f6%4)e;@?`RQ!LW0V@4J0tF|- zu(vUFHF5Q3{{J7CvJT4rzbz0S}MRH&}vBTkXWGR(Q9scC*Yp3;B6rr(4At`gS>l#dmVE!uQuKe8g#T|#8Nx1L_!*Hu z!7u@h1SL6eR+P~j&|kwP726UXRWQM$AwG%E#*l-)Gm0IwIr7rYpCykyIqMp_6BhS7 zAIE*=XqAm#M*aI(PWhN&g$@})1?CHItr=rap=Sd50+X5I6U#&QZeny)b{@Z2I<%Xl zNH#5(HJ`yDN7`bwrxVkI$;-5&Y^49#(_#Qt&jF9=QOhtzac0DW{WaV{4hFNK>&=en zyh!ylzaSG0myLDJ9DlAfuNkE>p?bwW;@_qsA2&*8x_AYaZD;AGwg6iSapPQhCSuC= zmrbrKmR};V?R*K!$U*z-N_NIHdGLebRbuz5J&L9s&eJ`hUp;n-U0$mGSQ<7%t$Dyy&>hf)Rd0|3rw?rK6|JR%&2h zL$zXq4rkh`D*{6rs+h98O5Q}iX+vwB5bi}`7-U9Gkw2xNLHPas@-67XhKpnj=9K>6 z=?n#5$Hpc(5m#VXf{MG~$xsu#cZqfl>n0dVz&NB^gLav2tVECFKUAmsf$d#9K6j0J z(*X>*L(F;{FcRYv)<)eEt*}_eJdTVc{y_)-xi;E!+;N6jn-FpMH1Jcbr3mI_%Ke5 zrB>tKrcDYV)zd0r{V->xfSqafu)1Q)&H-?j_>+>B8R|SL)>@9P){tME{=yZ1V-CpT z7zHy+(y5%S6vE~_=>|( zqnXL6!hM1)=wLmVuQ2)-$p0Z}Yp*Y(A;@aNGd$|@pNNo~Mip%S1>WG_zr8Bu2PBxc9kH8K1xVc;Iwp-9ut$V08 zIc&a}Znoz|(|gdZVsBQjw>xYquHnCU{CepT=$^;9_{BS>V|CScl6!GkMgsm!2n7KF z2XQE>pn-A-{8%8_6#+4&6LnX0-A5=WAt8bL4i^o|{SK2QBC@#n4Ac2UZ2ffy6oQcQ z(z>u(VEP2U5*h=3@|xlC0Z@kF@jkA8)rL_n`4;a3Hu?~wNt&u2s;Zb2`}nxq{;5)S zmZfObvB}MHSZxbuBLZ8F9KCX6`W$$6g)@ZN$a1EK4ipNdvB_=}d^ZL|;5Ak?QWxKo z&=94vM+H?O--zg9*ka+|;k~rq==Yya>-<^Y0LsF*q&C32xykzR(($d81*N)NLG;}( zPK*QraRdyBi(8z^*W-4=5mnz$- zGbI0n4x59DkeyIxlC?bdrMx05~b918<*~G zXYStgj~s7oD5h^XTc{moFJT$9MeduDJG|?qpb=*}>uQkhrOz}FRR{Vk(UOvz5z|-e zRx6+;kOIrvVnI|1&nT&H8SmZ(VReHknpZ(RCDuhTLr_6PnG}^|{2^qjM6hfRi%&*SpE`H^}jWp4D{^efsz2%!j$A`n)qQ2a#8rmr*6=8mSOE&oMyY z*4BgHvb_GdvdAOFng-6Kg>Ap#x`Cx1+G2Sv(%{->3hHX{cLJ1B+%M_ES^hKggwf71 ze|b$5sab~&tIZ~bZpEgBjo2VpCo$QCFyzsu7;zQiZM29)-T|~UUMv~+1+!99viXNM zMpse;d3yU)d_;voa{7Ew_qDMG)*he+$2go6{;~-dORl;|fw1PHH`()dqF&-zh7%SA z+@ritA)P)StxXUIy-F-u2cjRtv~7ayRBX(P(|qDbSc}u2iB{M&blyg?8+y}+WjU?s@{;tu_lLQjx_c zIJ+uNYRKG#pTu0VpCBoLIB8m~5t)}=LV4Lic6drNs@Dfh?Jeb;vEw)3gNOZtG?pWd76@7rmZ{SWZb!M3*O2FlYYp4Q-ETKg$juCN_8 zGOob6H$%=?DZ3G7Uv9e80J8Px{Ls;V!Gx@yM;x^7HN?VWIp9@fV{b@WL$k|lKa1#9 z9;pnjGD_BxAgW;c$LzsA%gcp_LNUGLXUwR@8EMQLB3OhIh4Txyp?!hR!bU>yv}a}e zNSE~TN@eWPnO@mEt@XH(j2TLORH@YV26x_dD6a=jT$izvTNQ3`_xfo#GTUjN2dJsm z39eoD2Y&AIZN3uXG^JK_!2_KA+8;DSQda%xD|LTnL~VEBB{GEeTc0#-nlkouIZF4{ z(Nd9l|MoCtj#BmPC5{5u!>OrBpO zzYYxdXsY*f$RtvA?In@!vpk23$Oy_+3zmb^*}gS!kA1M2=7S7yyi=hZV<>Bpl`Rv`{SjjCr{!0uNObR?*RtX_E zRU=7?f1v^K1IE%Oe=7d50in@>U7P^}zEe z)w0)}T=jgjZ|aqupCK3M9|d$p zdy71`|Fo=7zUg5938@e5?EG1JG!jKEZaF*R>Lc0&pWD_e)$UKi-=bR5EE3Q8~_-yl#tzHJWohR^dK9Ow2!U6}7 zFd*n4rQ$?Na~m})_Rcd+5>9EOu%S0ZrgBMJ1ElgqPVK383gqHtL)1O;MH2JK(Vw|* zM$50<$ASQk+x26rcdF)+*z)H1Zl93arj_KXyI8YLEe^cBQC@*eY<&SCd8Se{{F#ZF z6b9S3PMtV*onA7rl!jXasX-f8CIL<;+mGX{-1GMl#&O;>oymovA`&cH)DqanuG|@@ z@vgns({n8(zj|}%>|VBNhPa_3$0`jHq`XoOh|gW{Tn0WS&f|24+JKbCG->Im zvX?C6BCEY9H9r6DR9f0B$7tcKMhXU|r)!lb8~GM)&4U@KgM;nazi4%>tX^#VANMlU zDt2m_6sRDwsU;Iy_d5$&TDQ2TSzo<5ERK**Gd>IcRl7UU(4OYWudHtJLjLGMBm5D(Sl1LSW5t++f3YN6i?dpVPJtA)+4L3}W@m$5|ZoXBDIK&vLn&F7zbG{257} zTp|{; z=pxlMoF+%mbHewCFptSxt+N#QpCX#q0~Cv8;*ga^RrC%Bpyv|a9jLQU=7&zVd_?Ji?m_cBrbkOhV}ZWY7F(%v7VX!#T@6Y8Anru61wPs*u3h+V3WlbrH|bEnF90lKtbc}Dn}M1 z*D<93@T_eftJ9872t!C){p=@+@nn;PC0}Gd{(~j&oL`Ul$YO_J^SS(BgH-~AhmJPW zx(~xikVk=*4Z~mTuoG+PB0;)B;b6OVbTX8Ob#@|zy&$);J_<_qI!T$;`h6rLPyy+^ zCj-6+{j9`|v~}djg&z;sz~&;IYs#Mu^5Y! zI1K6ELpf!ddU3{0z2cFLq~gq9x5W&#EPb1~cBlpF56c-VKWn&qfN-_QuY{%|6Jsi< zW_h0F%b_K!dT8zR1?=8wPgY^5A$kc76BY%ll**wteVy7Z8~e`lAzCyM$5n-5{vxI; z!eJ?sj&GsKWX*aFH%ttOk%xx5v9Di~s;f&IM@FHzb*|;%#gWgr;MgrW=OS7eDm;~Z zK5uFnsYv})iI2g)fL3y78#Bv1$7-ZWkK7e_j^o+m=0*5~K=gV}h-re^k=qse_vYL7 zXxcn}?m))w8aFtG?+?XO+e!kK%_nX@ic*J`fmr>-~u6dOv-0zb+64%bXY? zIxNhCnV=ljHXG5sBZ}9DkB~Ea#_9V48c+G?mPa^($Tmf%fzY59ZYU3D87tfpa~dE% zp29%_6466>-cbGs=Wl<|j;VoCP_b;uEZe#M;Z%FZit3(Tk;$nAXi`^-nVo*{KgO9c z=70THD`_UO&Picop+>1>Cf;&L7Mr%o8~*O57o%3F04$d*?lt%U3_Mw1e00OQD4!rT z=NleGlKqx4&`9MIg_-zu3!&!+s;MU zRTKW|$Hqi<5Mi7v1Z+UHpSO%j7dGPl)KdhVaF*zO3xR-+4&|Yb$F9c_tkFprX4?Lt z3WMqgE-#h5_%cn2LeXTfm{exIv($?f9QbceZ$?yCwXA0g3@a6fuxsI(cH825}W^sk7R@-7z5_oyG zcQ?H<-`s`j`TY1T&2^d^j$zsSY5I#`VBz5;0x+282R~CMy#o6>5N6345FYsai7b*x zLQ?ttAS_*7N%QeeQ>j>a@a4evw`f@s#|md~(RM=}PG*?_pR5()1R6U{+|?iM#H_0a z2T3hX8D1jl%Aw)u|3%Z^UGLajaR*K zz8a?QS1F+ohnCZ|l2+94!;z+ipwFaq4Ff;ha`h4`%6_|{SrU8RVrd9v{G&3^O$+hK z(<{%6E2*PApH>}Tk+@Z=+AkneNF}@!o>?cd%qvMZQP+NXYW>$N) zw53=tGW#7{<)P$y;#r=evP)oDIC9kwP~`3cmepO&1(z%^T-pBQIgT@q^5CFs}U!YKL34ODNIH>rhl? zi8Odph+u0z)n<;m%e+IU1e1+yQSyO}6!wuxx|)ll5Ud|P?2nSKp`~u6pDG9LvOQ=k zsl%!^uiz|UCFdWYr>A(pQ8kr0;G$Z*UfPUZw@NcyX|r;Zs{NS?TRMek)n`7KJgOCC zi`zM5AdJ;KTt?;g$AYci|>t*ND2O z<&y1+Fd_z*6)qIoumM7*A(IwSy{X^hg6Zc-y zVlX0%`_#&oZ6TX3(qbON$qfFo%n96^1q^pO%;$tz*^uggvk)R=ui^?sC{+(AcK=lcbxW$n#VXiL`O+B1)o3UTEf5H5*Igo>O1a|NU&j zMY~Jwa~Su*&+Ut4y^DQSx~HK*rQLjo0&~67QgQi8`JoP6)+t=c=Y5Tmwnu|_t4nb7 zpI6qRkC}ySC6kn0kaXy4N;zPQp^|s{Rk^CXR7puhUcjb^O{=}-p9Xk2XpPd`w^K)@ z^T%Tyc)ULnD?i6Sr_@OW^! zQ@85OFc$$L)q({v)iz`6^PmlUZX!})8ZqtC2&ihK@bDOL%6v8Qe;z^%^HKJ@sxjDA z&tlF8kn{lbagZxE2_jGA$W6&8lyv8WV1^iKOBH@=85u3ELLFL0$i{gaE_KkUK3~1+ zVe7~S&9be$%ZDo%s!zC}W)XT~Ji4RKeOvit4Wht6G4J>Y?|#-}$?@O;d79vblbms| zhOMYu`81nD^1m6ABLdzPBzMq?L~|!FO1amgfEh-^%CpVk%$JA`bcq{th`5p7-9NF~8Ef$O~Cw=1Vg9M0RSr36nTM%=90DRZwIK}Nl8M7IsJZ8tc z#sO0B5>!KBO`cQM=DX}s1VTaSueXr}m>$pohbHh@V}cUx)WN{ZGwJ3Yska%`B8rF z?DImW4;|LPX!++L<%bF?`w12BaF~#FFOCQZO4F%inUm=sPD-DB zlX!0-2d~R@kMF;yPneeL&Wd=EyLH%hMA?6e0eCbSu5jGPL&Px{lWTAxR!xZoNkJZG zASX91LJWHsujYYI_|qdQYT`04T6nO@gN}%%uf04_MavFNo&wSajh(sQq!)|*;-Jg7;bLyE~I>8!BuS?rCaoF(3ts;FGwzEEYI=2zy7F1faT>1immM+D! zDAS_jKC$J}fC#%p2gl&so31algdPN6ij4UY^mXba=A{_KBMYFL=4cL?lF=Gt4xgs! z(PMX(SeDs;41!_WbK700O7#|-xQz8E2jX}2$9gQy?@UcbEX?$-y&!h%F9OFb!fDP% z2Xf@$R36oeOfs{AsVuHwy;TL1=3D+2y4a=8BjnzeJEZBByM%d`lbJ#!ry{@4zv1&t zOi%F2Jco^~7&XA+0=1c7_@{`OFmKip#|0Q~H`K;{2-M>Kgjop#<21_M?)byLS*@mA znTTx#Bk3c2JOae>_>9iuX!T&2eqC4(+EBD!3>;JJ37ZFM6e;%=8xDl3oX)fv5!lma zhE5kwISp-_+q{r-Fow0WcBiexWauocr0~-tlLErn0dR{BXYwO-ll4M6TdW{1Ampk< zvKNu@$Fd}dN)()RFywE?;va(UI-R6#+n^c5E@-&!v$=JpUCSy~PRp+HYx1i;9HQF9 zl;pC}g@IYbW(BawHV9J-G0j-Do&@#wiul!k5*7;`Z+}xzp&`ou)jRR9Z_?4}Zo!#| z(g7OV$`o`aIK%zDVoi!F&G{E7?hftP`59Ws7`fTPK;XK|&sriV_NHZ3l5C3U5BfQy zba7_zDb@qDYHoSjVqq2bB$7&`(7wa-PJ*9fGa;DH?#}DZ_5NWd zpPW*#;eGpt>ue%5Eh86(&d{7!eVBTECaQ)k&-+dL7MTogjuh>9scTW@#9iew1V9B_ zr@%-hfHS-MVbfB5Zgt=a^PGuEe%>V}+Dj}8T;FjI9RTyJbX%IiQlvz3L@RO{w!mguC0;Uk)3IA>FKTY;yqga8PY7Uyn>br)6yCah2_ zI+I8_N*PQZ!SvQ5;9}}I%+{97 z66#6t325x8r)!%`w!C!HHnXw$Nyw`eqmalOvW^z7s}$WlX5PO+ot~AFcuZuu)>LZ= z<9jeBAd(I9xV$iLLj(#<6eM4!M^n3}|U&BEpr zB&&Pr7glgpz>nYRc)&W7uMlXq)MY;rt`n(Y*(T&b+`F}NKS5}tae99*^Q(I|goGEr z@gr^6-2T(D$3I>63fxS#mFnKWPL3GcmfE^HG}ZQ_AR!UV+5S3w!lJEx z%!|o|HM;-~`p5(Q<5ibdic2Y^KL<42JpQuee4+`B<(bbn+1L^Mnsv9W%$+CL)>$8e zqb~Le19dnB{@iTYEu#qI-(}3P{vt_Dwx2d-aqMHkFZ#BkKl<$u2#wYGNuS3Yo}@7o zJOwdF6VrSf0s7{Peq-Nt7&Ts~fd8^a_IAE>Z&7 zWlbWkVQRuZ6|{IBn_ng8WH|y;n33+kb9>~g%cddS9uV6+S_dg|?MS@~Lg#}!SrID< zmVRq;^i96pXDVR2(A7;4K(gF>v@1Ol`U&s?Kzp$|Z|zuThnm=J`+kES;}fc3z8uOng{O-}=lj1d&bqO!cGljmkxb_|z$|A?MT(V$tUO>8U4r3o6Gw zs>V7^A*}i&`Vas_cRa!^NJ6nxr)=0J%dnPU&H}6{{?U)05}%LdcZ@@j-I5~#%7?2b zS^Q1)?2vRi%2qPXT^{@)(Hnl->4s$7qcbkW)sa`yciFBt|2QouJRqA|Y!-(;i@hvx z>*TG4rCoag7NH5=?qf~XitYnP8~24%qvKp~qjr$d(J{7p%Fg3_DKoBxc?WG$aW;R* z5PdmzQm#FFD)VL&UFmPAK;c=SKth2~{6-(xa}-w8d3b$<6u)GK^b7iI5t&h<*e>~o z0&9NazWr(u!FXWd`sv)%+VQ>%Ae$fhLM924(hNEzzEt%(k|348+d!H0?dS8l@mK4~ zPEx7rlNnv;IPDA6lNJQ2h&-J49RlY%*HnJz9ekgg{J$8HJ4M8_lV*W=WwZ#)uy2j? zUO%;7qvfbJn34K;rr@p#0f_x2j3M(4WvP~62j!6BgSgUK*3q7QMsK*hoq$)g*`660 zx5yu*V?D19)IJjKouDzk+tHKQDWktM>Q%p(!r_jyJ*Kq|_*dLO7F*#tDr6!%7f^s(kTrt2;ndgmid zHb8cB>_e-JSGhzbixF3qz0i4=#_zd-xXWQ@#HPz;T=G(uIe;x(q{)jvm z8IOCmxH9WlNa8LNuq_~|b!$iqlM--b5e01_4v@12%Ar3Sqgso$9{Jo z=z}24Pe9q^B!-Gf&}{fz0-g}2Z?D9j6h{I#8IxwT{IBs;Hw`_c+p9oV!oOamUx?B7g6CaxVyc(}?Z-I;+% zvPRu{J~T&~qF+Dm)yb;s#!b_IzRtTE;zRt?bZR+~n^7t>Q4TGrWyga5d7_;bjZffB zmI-KCiXnnIyM8JBrp7uAYSg%dAWp9TheTHBD(0GxZL$f<@IlVy{GyMaq^6eE0#Agp zI0sUnRX$F>3A!jm>THpL2{Ny47N6%-jNkr@YItMMk7!YT61^bP(#b?tTveCQ*5 z4tJ+n67C(LsL!ifV(R z?$QLS{t_QwY zyPVCZCMGZCRp@6DUP}9jq}h&cyM#u2m>fG*HrImB+e-U~TPBF9zgX*QU9n^R41_O8$Rw zU8xP!wEb5F$%p?<2~ArF@HYo)v4tfuwfV}VeE$85*Q1kNfp-XxG!b1IqYun+dto6> zxf{?^U_axN zM^FEN84JF5)P?U6_p9q-OWj?qBGfSjDrXs^%mk++9MO~Q1ZFj%y8oX3*I|nfW7l(w5K$65cf~`1* zQ%MByd zR$>83ZU}5J)P1#>Lxh4-)KR;xC-@?OZQhvCT!r$&ZBzOQsofh&WPt>XDszm`wIOnKw&UGG!3bg2Oh6)UJa%TnHb%b|{ zW4#o%l-$|(l)rpU;mRA%j@xAB<|lbPgVlH@X|e~)J#7^*Rcx6FxO*?S9Zd2`kM@|D zJ_L~w;+>XaMXd*f*;RJLK48M6V^v$FnbeRruIzwWFdixoy15&?9Q^W+k1KI6zQ#!| z{w>zLA4e9~@n}p{;{GRMhXkib1&LK-=3r31ubgeS@9Z$|+aJ`&?Leo5wybgbFzPem zhjpI`!G^ARHr><~gs5Oe6{))wJj1+|w270XNHB(opYe&`hW`flyy}x{pw#An&zS(V zUn&6VzEla46S{uH(IGZ__gy-!t4@e>Q^W*l!s3h&3+xdIhc@keI3$G`U z?Q`1W?#DXwotW@{gO3Y6B9&btB#~mTjBUV;RsT(VN00q1wRm4im&inv*i7$9kDvNw z|HD5`{8xBCO!b+YlERosG2uut6#2G}d30in=bP&}{3tO9^~bfS0Q2XLp4Tr^tO%A; z1!$@FsC)sF`JaY#r|(pP|j=>)Jf zdvH>!AD~923r*h$@}iBzKnRzIwnqMwH_npIXc7j7eARXl^f~rdAo^RzR!(m~UvJr& zF{m%BA@09-g!;IvCy&b;2dDU*8m`lBp>HYmI*zqP=ZYMOtF@Sc-!P{886_B~_%=iY z{|bzv_2$E$f#=<;EssC`$(7s#cI`mvGFT>(j}Z+dLZC^G#0 zo|2+Fp_q|FHWvu$n>rrny7+M%NL`E5hV$MpR;|(x8tijh!=JaA{s>PTtja5P66aS( z*mnxGDTRnyHTERZ{cTPx%uQz=sh@1r$7D_{f5DyjY|tjjS~`b~EF@0|sF(o3cFdN1 zYehCgtW~#E7FuO<>vIlk#e(Xnp%I_9@^Y0-lw7`1gd3BDMmpLc-^%G@MUllHiQ{0Q zI8z*}6I@e#!Y!1w+v9t=y1gM^Zjck=7__zDTw)MEzFG4gcj<2%_Nm>5@hF%W2h3V&RC4CmxUPwaZG zHP9CM z^Yb5iO1LlsaQ6(=7lsOmjy)0192*+fNV$&a)d*iZj`Pu#W8B<^GCv)!KvS)PmecJ# zpK$XBe~RJSegzwl-MwVPd=4v_!x76*v|7Vz6jTPz8DjbW#+Q2Z!3os_=L2hzhs7+| z$$4)fHd;H0&g25es1`&GWvvr3J)ABm@yjT9PltU$=2R(8M-duo2|v%%P5!l*lj?*N$r zMStG%+WnR&xxo++n%4iKHb3Rx(b;@^;&ew)TJPvLAN)7|kNH(ET{3gp;g<$TvG4#c#{DJ!3S$~ZH?W0$YA~${-R=nY?Mn54xb6Mp$J<2IE8j<` z)Hm3*rLrfMuy&Zmy!P zXPnOY|BR;fWwpRgr=8L#Z&-N~*=j{IF|Wje%+& z6FNA;!AU#Gqt27TRKJK|uTS zSUp34BLp>(e~+e^OE%&u<|jsu(>9gak^~kSyd)TEb2`~9Gh=Vk;TUuxLxax^FBG-@ z2s*?Xqb4wRFmC2qYV#Uthn!?AoX9*V0Gq>wH;BeW;lXK=8A42 z9JN-tU;-=VaMtv%hvDBhl6(SFh>;_YU0=M)=>-78tYg}{S)R+TI@}*a3qIUs1c(Lm zZ{0WYs%u5NI}lL!SiTP^lPC?hm+I`?+BA@mV@bjC1>=8$%)>yuU~4$Df`pHzT>`Wv z3nm1qdYO}ZqNfB`@-S{xD!XMHg=wXBDkqQ@Le8ltkiZV!Y0=XGhm_-NK7U%gQWETd z0zeKY9xM-wD+LU9cSED7{sBp`A}olLlnjno{SUag4n#rbJM-n#NtYdU`%kG>?qZmv zPagsgH#sh6g6Y+Z7gQy}p|2o8H8OUAU;X>Zm41m}VSXqQV|5&EMVYEH$<6CcOX6$k zO+1|-nbpLKNfr{sq#A-weN7W5RoD;3#K6W({uq}x6%|u*+K@Ew&gr2n@$Z$_^q+qZ zBggV4sIyV4IMZ1o`ww8uDdEkbQcV@u^``u&+ZadD;>;WtaSV~%fZ+{+yf&nv? zX<02j$c14TAltx!sf%I?2Px?=mDcLlQ_q4 zI;X%$1MJ(c8j}@Q&r#ub)dH5gD8Ry^wOHRMWV~XVGh#JdlItyi*{!?QC+d@}5iOxY z$vL6cL;N&gw{>nu9gCn08|lX5e#0F%cZIsHg4jPhV;MkT4u0Y6(g=0L(y1cAI_& zr(T=ZoV4F+4wPf^$~{KUps<770#on;UyQLQAkB#ZQ!dA1;W>U{ZV*zxNEa>4xgVJE~_9rsio{F_Gj@H9N#* zCogCkK7H0q)wh4`b*ut}0gkC54pWyK5G%B0EGsq&)DyK95pQZC{oj>InE{d}H+z8| zj6*PleH$cjJw%VKmvkUFVo+&GM7AO zWx0}sv7dq#zKV&VnT*aAY7+s~*OU>GQepeA&p*~|nFjNo8WY{hW-(mv9P%FnO^=>! zL*^n9)DXS@o;_2u%q!OE(BD7)1&Y=+JM--q-%bhJN;v&oy2PP3<&6X7HYW)zQ+N73 z6+WQxv7F7u#GRAF2oTA@IXew-ih6|2d4>-)jc7}UQM>)j48|)IVL-FN6(XOyg^K|_ zrn#c=S(>Vfnp$Rt=DA6u#l6h_tqqav;cmT&86m;|#?q)(DcU0w}$Ei>9yrLnc1XukmWQfV;&4Ch82Rz{$cl>HFC7(P>!&j59 zOB1Uj*Q!Wikj<(q2bhe1aa$wSHK<^iMCv#jTXn3!+=Ue2?aMkPEz`mY;Rh-Ka}KbT zH54bv9)mu0qyWOWg`2nnugLuVr}+7j4d%&)gd*%5N4uj8UwkGnSC0r(E&4-7*m(H3 z?oD->Jrj5|KuG~|arhw$QR*QT0ppSJ9uaj?EmOs#8%5qu9o(zn&NHoZ0^)q{r2sPH ztq!_A18MXJ$`6FQM|5EaHr~*g^eoZ_dN&U05G+_hIxtn{OTg9?w%s?UBgW1_;+Uy# za{%IoUYFs4&t`hk@wAt!g`M|Vi&dxi-)G&_M!TrAW2bO)i z3mw?oG}!3JoHSa)Teb@}i<4%tpkQt_=$hNIf8b(jz6KvoLntq9vz|K!$BW{>CYLiZ z|4#VONwQiwlOeoJ?3ZE`&CdHiPR(DU!jY@NQDw@Opd~(#SN7kF%v@!EQ5VGfx)CfG z`*dcxfaXw`FgV`FqfPg2)Yi1kxNUysbANYgvxy2Jo>csF#yc5Sx<17x@?ur>w(`lz zcxemNPjGTBEiMElYsSfJ%m!4#nbkpa-F*BVL&AUCzYq#q4oEek&Uo}0bwDj^Cc1~b zT_GwI+00b2RcsX*K6nS|5R**(#!Opzv`UvOfFySXQ-(jVSGx8!x}d1%Xj=-V4ge#NwZ+6V@0+R}A7Ou8YE{qmU`wD7iZg4rZa#c6h7>MP5 z4ZZA~w9P@3ob3{AZL^r}XfcAeVVYyoCAQS~f19a(jnfu+oWok2rFu$cNezGQxuuU8 z1E{&$8`V8Zlf};GH}n-!w(cqr4_dMmULlXK!;j+|l59~a9lg^7WdsA>7G%pYS5XFL zm>+7=bChXvck*(Oa&{V){Jj=&*6%nbt%~X&!(xhqRzpQ~?>=I3O z`I*sc3lci`0xDDWR zL}Q{R^M%xaEze!aUEoa#e4jO<1ZpsRkf4&UE6eHJ5cYE}oiA}72>)PiDt9NY5`w8l z`WaBL6e+bLOG%CFAj?c8Q)pI%bADwN~pXXB@E5c{uxN~kFo-n7wgChs%o|^3@B00y%IRnY zVD1+*l_cpM|5T^H4nYOjAEIjv$NzyyACUA0Vrg*bDmaJQK-wqREt((A{7j?$PL0>v z8-@>86geUMd?RnT*aLoN+kl;QbR*b`?4lavCh^D_5Ly4K2uRGFeOY@9TwU^)vH@N^@Q=}MF?;12-cvW(Z?*Tnr!6dD zeY2yqKk2B;E27(d{VnbxZnrf`MM#dL@Q(TtRoCS_JGcI?Lcm@q1W$7 z6vY?qOT4+AyQH0@hzd?y&Q2KEf8gSTw^T-S@6r2^Sp1u)}QTs{6roWbjgE; z-Fl~*1U_}66S&jh0k;eXg}HlH$H+?ZifWYGc*sJJa{kdl`0<91J8f|a6>kJF1BJX7 z7OPoUN?m~tHeopuicKlN2!?(-dDQ14k-oo{3d0JdlH33~*4wWFx9pR0S{s!6wGgEN z2~Ob^j(5TWGvm<*$}C+(hEpPNWc5nxrb~9OPU|(=EX+5DDSw%~oIc58YG9GgS=6sn!^tc50tI>b={`++>m+M0g;4dq!(uDk9Dpy(3{ zXOjgd>RPF>CHuqe#ZTiG>$OdG<0*ay9vD z&cecPfL>i$D2UEzlZ?j4o^ebLxuj$|jgkiEx2Y3OqRifd$84PSc(wiu>oWQrf$vEu z=ah+PhlbC~Q38}(?kk=)c53=u6n|3;m(WQa^-q9&tp{O+c);>}rjGFMF=7NR_Xkz< zDVARdrV3bqOLG?Gk62>2CqGky*k^2tWl;9!_(mvb^E4l~F~x@{Cf*R=aBid5&+H)b zJSRio`jD4!77{e{7$DjKjX?yuFO509d~<3TNfkNZw7XyxyHSd^QF?E0ELqB&AVwQZ zaCQI<1z7^DhCegXEF9X4?JBGlX%(J&3#&l7PY!S_`#EOX>S*vE4BPtwK}0a}@y0mY zrZ{10j2IWsq)j!RYfiDhg&bwV#*)AC;%R~5^uPw7mkO+vMPe39>MW)6Fx;K(L(yZ( z^DaYN@y$p&opex};ri;bM2W_P^zsnkANc{4O>#3HA6a;g4mLdEG!~3R~ugC2JtsLmmW7>r3On2?^V*uR#$p1*IWQT1JIL9 zt7d&UGH~GX<`Cr}2*Lh}RkNI9qPXv=>u+rN@6Mp-v4TS8A3E1luTjDYqJ*cor`V^s zmmsWQzl7TQqc~0|At6C(!5?vlpIedle6{8_{g$68^mH41T}#;hzB={1dN_4kKc-Fe*;2l-&}{t+j57x+;~+o(rB)!up? z6#_LN{-r$}KH-m@7=Oui#zvSc8b#V&HI(MaM1N^nD%fqmxsr)c2!Tw7T zz&Bz?IM4TtTFa}UG?lfK29joftegGNF8KvihA(+OLe`^NJv#Hz!%cu6y>6=OC{tLf zuct^Ql4pe0PLcbn&hqa;IXv|ZM|*x6_ZozfxsOp^Del%s7)4wKVY@dGqx4$)mXIdy zQEQSXmUV81ej$(w7S1s=*J3&|)=*~#U=C88m2p<}bMzS9m@cH%Vq4 zS8v8NQ&~+=gcl;Wn{K?3M&RxAryT7xJ0qEDOG5{6&)9*Q&iTi7bgT zuNZ1RJ@89s*&w0Nr4SHWnI1UKD>#QdtwC`mYut6U@u={4{}{*%n>jTvggzHc&@HKg_5BSGl3 z8c@;Q{>sf2YG|hoIsy_t0{zUS78ZR_osCkMW5I;hl8%4*_ zH;=}D?BkkhARd!0yde8>y^L$r-?Nc8J})PeH|MdYnS2%>^v%g32tVABsy>j7=m@GDS@|G6im@H44N}TApE}tC7^{ zB@~;b@s)wB);dqJ$sIEQz+vMlAQFd`_1?{iZ%n@;6I8GPA7!KS6xvv@vJ15HzXSIr znu~lCy|&W`#98L+2AHqqOqqvuNr653@Gw9~NSeLDq2pxe8dO4agjl}f>JQ$W-jogGdEhTC2 zQMoUVCQj}GcUUt!DS>I2E*2Tqxicmv!ZXQe@M+G>c4B_9(!BG!@LsZk*<9J-Zr4QU zQ0uK2y{*MCbHP{XVs@KwUD7cIga3f|nyo6D%6Dxz<5NZo9e@p`(7_)|wiBVV?-Tha zrUz3|u54YK8qrb!G=E97*;Mnx3S4L7>)A1u)MHt0AY?A*kLvIumQ0J<6}(vL@9lS* zXvlhfFQ@+w543?I-jWyLwd}47Kjbw%j309@Q%i;e-I!?fA#b)KDr5R>dwp}&HM~vM zZk+z07}%{{KfYavdr=PShW;pn*RAoz) zI&aZ!Sc4BmaQk^~J^KT2imJzt3PG3uEJiIbGJ4fmMY!~$pEtcdR&)ak!+ zao*!k(d>}3;bQ)OTRg@TxE+jnp{+P`0*+`9H?koB>& zT|IKNxT-;AsVOXC{Mno)X2`W`dG-)ZCq&q-(+vCs>_x3%2Li`-tR7-LcpPu-l7JNK zxWRos{JMq+H*a=gFk}&RZ*X((?pdqVZ?_LJq0%x(;o!^h#_5BUT3+ZqrmD-k@FNG> zhNCR;9ojQnlywd0GAAk|nbFsEM9fbf{<8fld-37|VgnGjPiIyfZ#f#mXpRSL-Tqm{ zWh;pTa2)s|0d%tI%pw_sRnAapGAXg>u=rO74rT@ePD96OZ_44a5L1)_d~VHb6r8y& zG-my#>~-V--rZgJHdJ#N98N1pe}R4&b&R>}=%cU;(q>K~B2Pnj^A6<+FF6l_VdXEQ(3gJeIBhZG3I0X95T+lGV!IaWkrtezs%F)T6PP4l(- zEvIE*5WLpADlz(Cr5NvGNrIsyFF3hm_IXW2<8hc#4(d z5&q#P-h!C^UV(rDX#)P?5HXOmpjrRHLJYOq=qSiGdUa{Fh28Ljpn+csh>dAaf4hK! zml#IUS_L1Pu%u`dZcUqDL$cpuU2|bvRgD7!$Hw z^ndd{U~?Pr8F64*fBd+XLmD{+NTY$tA9#^ZN##rPek?FB#j5v<79~4Nz=PSLSY`;2ZOuMLxU&i5T1A)DjvGB-I>01Hf(b;)fnNaa# zrOHx`*Rf2mv!DzJ+;s%kYc7D;N(?K4rG<9xVgl@3t;fd&##K)4NOyMMDzLAbm zP|$TcAfTc3+sIuqf$Y=844i#mOBvO$X^?Bs8%0jJgenX3xu#!csIuF}1i|s%qlQHs zCLM}YcVuh~BGz-+Hv+~12ao+rZ%OD=+Jgfn8PQhgh*1Ir3=vVTOvg;_<-+azT@~(Y zD=ndb^Jp3vx(7{nep)(Nq#47uk`8_;t;6vfiGE&^0`w!Egw%q^KO44BHLkO$Yrp?g z>E*1KQT6N@tb(;K>L}Jr*Z`@HyYg8{5qHOXA-|7mc%4&sCbA{Wno>jnkK=Ewq??WD zVdw_iY3T;z;q24`?C=%{PI}NN2cHc6F5Y1DBNve5z=^wl*9-+cONnYvYU+Y3W8l0= zypaX-f6XX4Bxs`PcouX>n8>wvPDO4G3-#Yb5xJw{MA_(R#YKaxIkUG@X2=tgHOOVr z)@`Z#lUI?ZK{Q90*;s!0Yi%6cJA=It3ypA%7jBQLIQ|s_^m#5?ND`$hjG<_|fTp@G zc%V}J#=qI1e`Pd$T3IiBluT2w_4^~=DsNs8TU11+!V&eF@}7x!}a zT27X)4KAz~wNIFn-}c)XR+J}_$X#Q*h4%r>J`SkgtvJQv`IUlKTrHFfD&KP((&Vse z9fjv67Jj-GaAB&P1=GA{O6H>LGnH`=um=HV?kRv}vZL3($5TnFiEH*)-kr=ZI0+(kEikU zmLSqCuH8h|zdP5z4$pHa$swPg09%$Q{5&5}B>ssEAX+=MrTmlCH_G!?ga!Xro{dIimdK{ zRvU^8ShdnGn6HWHyOjl2`=H27+8lC)*tWj#ydlPGl#`;6{;1kwF$TkJr`u&hHU~x~ zUmK+dGdkTx`H2)v5z0j~MQ00!4nKlFt17#W0$ijYzrj*!J>R)1^6Qj|lXP%}9vWyM zo}p*Kc>@L

    xe*xWR-o2^1e^7jfZ2xbSn!> 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 Ro%ZHeED_`qXZURz@IQM^$S42+ diff --git a/distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde b/distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde index 464cbf759..ba13b64f3 100644 --- a/distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde +++ b/distribution/json4processing-0.1.2/examples/create_jsonobject/create_jsonobject.pde @@ -14,7 +14,7 @@ void setup(){ // 2. Add some content to the object myJsonObject.put( "myIntegerValue", 7 ); - + println( myJsonObject ); } diff --git a/distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde index a9f8248213330a415707cd8f8a0a833c7a3cd1ad..d7dcc5c3debe51369874d2c6f8bab4db472171d1 100644 GIT binary patch delta 45 dcmaFH-p#S$8M7(_PLNoxp{Y>K%T>$E1pt}S1+D-9 delta 7 OcmeC?c*efr88ZM3eFGW* diff --git a/distribution/json4processing-0.1.2/reference/allclasses-frame.html b/distribution/json4processing-0.1.2/reference/allclasses-frame.html index 44cd46c5b..ec038728c 100644 --- a/distribution/json4processing-0.1.2/reference/allclasses-frame.html +++ b/distribution/json4processing-0.1.2/reference/allclasses-frame.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/allclasses-noframe.html b/distribution/json4processing-0.1.2/reference/allclasses-noframe.html index 37b8b995b..50905503e 100644 --- a/distribution/json4processing-0.1.2/reference/allclasses-noframe.html +++ b/distribution/json4processing-0.1.2/reference/allclasses-noframe.html @@ -2,7 +2,7 @@ - + All Classes (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/constant-values.html b/distribution/json4processing-0.1.2/reference/constant-values.html index f49bfe9e5..aac33871c 100644 --- a/distribution/json4processing-0.1.2/reference/constant-values.html +++ b/distribution/json4processing-0.1.2/reference/constant-values.html @@ -2,7 +2,7 @@ - + Constant Field Values (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/deprecated-list.html b/distribution/json4processing-0.1.2/reference/deprecated-list.html index 343302729..510d290b5 100644 --- a/distribution/json4processing-0.1.2/reference/deprecated-list.html +++ b/distribution/json4processing-0.1.2/reference/deprecated-list.html @@ -2,7 +2,7 @@ - + Deprecated List (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/help-doc.html b/distribution/json4processing-0.1.2/reference/help-doc.html index c98f65d2e..0faf47bae 100644 --- a/distribution/json4processing-0.1.2/reference/help-doc.html +++ b/distribution/json4processing-0.1.2/reference/help-doc.html @@ -2,7 +2,7 @@ - + API Help (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/index-all.html b/distribution/json4processing-0.1.2/reference/index-all.html index be9c5b61a..61b2ba96a 100644 --- a/distribution/json4processing-0.1.2/reference/index-all.html +++ b/distribution/json4processing-0.1.2/reference/index-all.html @@ -2,7 +2,7 @@ - + Index (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/index.html b/distribution/json4processing-0.1.2/reference/index.html index 76bc1e184..929888420 100644 --- a/distribution/json4processing-0.1.2/reference/index.html +++ b/distribution/json4processing-0.1.2/reference/index.html @@ -2,7 +2,7 @@ - + Javadocs: json4processing diff --git a/distribution/json4processing-0.1.2/reference/org/json/CDL.html b/distribution/json4processing-0.1.2/reference/org/json/CDL.html index a180ab3e3..517ce8d03 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/CDL.html +++ b/distribution/json4processing-0.1.2/reference/org/json/CDL.html @@ -2,7 +2,7 @@ - + CDL (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/Cookie.html b/distribution/json4processing-0.1.2/reference/org/json/Cookie.html index 87d79d291..50f1f9804 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/Cookie.html +++ b/distribution/json4processing-0.1.2/reference/org/json/Cookie.html @@ -2,7 +2,7 @@ - + Cookie (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/CookieList.html b/distribution/json4processing-0.1.2/reference/org/json/CookieList.html index 7b0e7d5fb..84e0f4aac 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/CookieList.html +++ b/distribution/json4processing-0.1.2/reference/org/json/CookieList.html @@ -2,7 +2,7 @@ - + CookieList (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/HTTP.html b/distribution/json4processing-0.1.2/reference/org/json/HTTP.html index 2e0539375..fb9834c18 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/HTTP.html +++ b/distribution/json4processing-0.1.2/reference/org/json/HTTP.html @@ -2,7 +2,7 @@ - + HTTP (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html index d87509746..1bd6d20d8 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html +++ b/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html @@ -2,7 +2,7 @@ - + HTTPTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html index e7a9107bd..5fa16ec43 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html @@ -2,7 +2,7 @@ - + JSONArray (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONException.html b/distribution/json4processing-0.1.2/reference/org/json/JSONException.html index 694134ce5..ef7220a8c 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONException.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONException.html @@ -2,7 +2,7 @@ - + JSONException (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONML.html b/distribution/json4processing-0.1.2/reference/org/json/JSONML.html index df34ddb55..ef602b3a5 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONML.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONML.html @@ -2,7 +2,7 @@ - + JSONML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html index 7d0c90a7c..6226ac6af 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html @@ -2,7 +2,7 @@ - + JSONObject (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONString.html b/distribution/json4processing-0.1.2/reference/org/json/JSONString.html index 5d208848c..8badc4029 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONString.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONString.html @@ -2,7 +2,7 @@ - + JSONString (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html index 25118de0f..f1edc8a45 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html @@ -2,7 +2,7 @@ - + JSONStringer (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html index 16607dd6c..9a497b3f4 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html @@ -2,7 +2,7 @@ - + JSONTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html index 89518e18b..944f264f0 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html @@ -2,7 +2,7 @@ - + JSONWriter (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/XML.html b/distribution/json4processing-0.1.2/reference/org/json/XML.html index 6925fd87c..e08a917b1 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/XML.html +++ b/distribution/json4processing-0.1.2/reference/org/json/XML.html @@ -2,7 +2,7 @@ - + XML (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html index 5a3f03d3f..d3c1ab07d 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html +++ b/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html @@ -2,7 +2,7 @@ - + XMLTokener (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-frame.html b/distribution/json4processing-0.1.2/reference/org/json/package-frame.html index cec867691..af16f857e 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/package-frame.html +++ b/distribution/json4processing-0.1.2/reference/org/json/package-frame.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-summary.html b/distribution/json4processing-0.1.2/reference/org/json/package-summary.html index ada91a3f3..2ab4a2c0a 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/package-summary.html +++ b/distribution/json4processing-0.1.2/reference/org/json/package-summary.html @@ -2,7 +2,7 @@ - + org.json (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-tree.html b/distribution/json4processing-0.1.2/reference/org/json/package-tree.html index 0e7dcce0a..bdf8664e8 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/package-tree.html +++ b/distribution/json4processing-0.1.2/reference/org/json/package-tree.html @@ -2,7 +2,7 @@ - + org.json Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/overview-tree.html b/distribution/json4processing-0.1.2/reference/overview-tree.html index 2da03400a..3e3de0789 100644 --- a/distribution/json4processing-0.1.2/reference/overview-tree.html +++ b/distribution/json4processing-0.1.2/reference/overview-tree.html @@ -2,7 +2,7 @@ - + Class Hierarchy (Javadocs: json4processing) diff --git a/distribution/json4processing-0.1.2/reference/serialized-form.html b/distribution/json4processing-0.1.2/reference/serialized-form.html index 79d4231e0..e322bcc6b 100644 --- a/distribution/json4processing-0.1.2/reference/serialized-form.html +++ b/distribution/json4processing-0.1.2/reference/serialized-form.html @@ -2,7 +2,7 @@ - + Serialized Form (Javadocs: json4processing) diff --git a/examples/create_jsonobject/create_jsonobject.pde b/examples/create_jsonobject/create_jsonobject.pde index 4e608a1f9..ba13b64f3 100644 --- a/examples/create_jsonobject/create_jsonobject.pde +++ b/examples/create_jsonobject/create_jsonobject.pde @@ -1,11 +1,8 @@ /* * JSON 4 Processing * Basic example 1: Creating a JSON Object -<<<<<<< HEAD * * Good for sending values that has a specific meaning (complex values) -======= ->>>>>>> origin/HEAD */ import org.json.*; @@ -17,11 +14,8 @@ void setup(){ // 2. Add some content to the object myJsonObject.put( "myIntegerValue", 7 ); -<<<<<<< HEAD - + println( myJsonObject ); -======= ->>>>>>> origin/HEAD } void draw(){ diff --git a/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/examples/reading_yahoo_weather/reading_yahoo_weather.pde index a9f8248213330a415707cd8f8a0a833c7a3cd1ad..4b72bcceae5d2d79dd44352d708466c2dec9ea4e 100644 GIT binary patch delta 43 bcmaFH-pR4y8M872PLNoxp{Y>KRm%kcj!*@V delta 7 OcmeC=c*efr88ZM3Zvz+r diff --git a/src/org/json/CDL.java b/src/org/json/CDL.java index a6b1787c3..ffe2ace8b 100644 --- a/src/org/json/CDL.java +++ b/src/org/json/CDL.java @@ -1,279 +1,279 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -/** - * This provides static methods to convert comma delimited text into a - * JSONArray, and to covert a JSONArray into comma delimited text. Comma - * delimited text is a very popular format for data interchange. It is - * understood by most database, spreadsheet, and organizer programs. - *

    - * Each row of text represents a row in a table or a data record. Each row - * ends with a NEWLINE character. Each row contains one or more values. - * Values are separated by commas. A value can contain any character except - * for comma, unless is is wrapped in single quotes or double quotes. - *

    - * The first row usually contains the names of the columns. - *

    - * A comma delimited list can be converted into a JSONArray of JSONObjects. - * The names for the elements in the JSONObjects can be taken from the names - * in the first row. - * @author JSON.org - * @version 2010-12-24 - */ -public class CDL { - - /** - * Get the next value. The value can be wrapped in quotes. The value can - * be empty. - * @param x A JSONTokener of the source text. - * @return The value string, or null if empty. - * @throws JSONException if the quoted string is badly formed. - */ - private static String getValue(JSONTokener x) throws JSONException { - char c; - char q; - StringBuffer sb; - do { - c = x.next(); - } while (c == ' ' || c == '\t'); - switch (c) { - case 0: - return null; - case '"': - case '\'': - q = c; - sb = new StringBuffer(); - for (;;) { - c = x.next(); - if (c == q) { - break; - } - if (c == 0 || c == '\n' || c == '\r') { - throw x.syntaxError("Missing close quote '" + q + "'."); - } - sb.append(c); - } - return sb.toString(); - case ',': - x.back(); - return ""; - default: - x.back(); - return x.nextTo(','); - } - } - - /** - * Produce a JSONArray of strings from a row of comma delimited values. - * @param x A JSONTokener of the source text. - * @return A JSONArray of strings. - * @throws JSONException - */ - public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException { - JSONArray ja = new JSONArray(); - for (;;) { - String value = getValue(x); - char c = x.next(); - if (value == null || - (ja.length() == 0 && value.length() == 0 && c != ',')) { - return null; - } - ja.put(value); - for (;;) { - if (c == ',') { - break; - } - if (c != ' ') { - if (c == '\n' || c == '\r' || c == 0) { - return ja; - } - throw x.syntaxError("Bad character '" + c + "' (" + - (int)c + ")."); - } - c = x.next(); - } - } - } - - /** - * Produce a JSONObject from a row of comma delimited text, using a - * parallel JSONArray of strings to provides the names of the elements. - * @param names A JSONArray of names. This is commonly obtained from the - * first row of a comma delimited text file using the rowToJSONArray - * method. - * @param x A JSONTokener of the source text. - * @return A JSONObject combining the names and values. - * @throws JSONException - */ - public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x) - throws JSONException { - JSONArray ja = rowToJSONArray(x); - return ja != null ? ja.toJSONObject(names) : null; - } - - /** - * Produce a comma delimited text row from a JSONArray. Values containing - * the comma character will be quoted. Troublesome characters may be - * removed. - * @param ja A JSONArray of strings. - * @return A string ending in NEWLINE. - */ - public static String rowToString(JSONArray ja) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < ja.length(); i += 1) { - if (i > 0) { - sb.append(','); - } - Object object = ja.opt(i); - if (object != null) { - String string = object.toString(); - if (string.length() > 0 && (string.indexOf(',') >= 0 || - string.indexOf('\n') >= 0 || string.indexOf('\r') >= 0 || - string.indexOf(0) >= 0 || string.charAt(0) == '"')) { - sb.append('"'); - int length = string.length(); - for (int j = 0; j < length; j += 1) { - char c = string.charAt(j); - if (c >= ' ' && c != '"') { - sb.append(c); - } - } - sb.append('"'); - } else { - sb.append(string); - } - } - } - sb.append('\n'); - return sb.toString(); - } - - /** - * Produce a JSONArray of JSONObjects from a comma delimited text string, - * using the first row as a source of names. - * @param string The comma delimited text. - * @return A JSONArray of JSONObjects. - * @throws JSONException - */ - public static JSONArray toJSONArray(String string) throws JSONException { - return toJSONArray(new JSONTokener(string)); - } - - /** - * Produce a JSONArray of JSONObjects from a comma delimited text string, - * using the first row as a source of names. - * @param x The JSONTokener containing the comma delimited text. - * @return A JSONArray of JSONObjects. - * @throws JSONException - */ - public static JSONArray toJSONArray(JSONTokener x) throws JSONException { - return toJSONArray(rowToJSONArray(x), x); - } - - /** - * Produce a JSONArray of JSONObjects from a comma delimited text string - * using a supplied JSONArray as the source of element names. - * @param names A JSONArray of strings. - * @param string The comma delimited text. - * @return A JSONArray of JSONObjects. - * @throws JSONException - */ - public static JSONArray toJSONArray(JSONArray names, String string) - throws JSONException { - return toJSONArray(names, new JSONTokener(string)); - } - - /** - * Produce a JSONArray of JSONObjects from a comma delimited text string - * using a supplied JSONArray as the source of element names. - * @param names A JSONArray of strings. - * @param x A JSONTokener of the source text. - * @return A JSONArray of JSONObjects. - * @throws JSONException - */ - public static JSONArray toJSONArray(JSONArray names, JSONTokener x) - throws JSONException { - if (names == null || names.length() == 0) { - return null; - } - JSONArray ja = new JSONArray(); - for (;;) { - JSONObject jo = rowToJSONObject(names, x); - if (jo == null) { - break; - } - ja.put(jo); - } - if (ja.length() == 0) { - return null; - } - return ja; - } - - - /** - * Produce a comma delimited text from a JSONArray of JSONObjects. The - * first row will be a list of names obtained by inspecting the first - * JSONObject. - * @param ja A JSONArray of JSONObjects. - * @return A comma delimited text. - * @throws JSONException - */ - public static String toString(JSONArray ja) throws JSONException { - JSONObject jo = ja.optJSONObject(0); - if (jo != null) { - JSONArray names = jo.names(); - if (names != null) { - return rowToString(names) + toString(names, ja); - } - } - return null; - } - - /** - * Produce a comma delimited text from a JSONArray of JSONObjects using - * a provided list of names. The list of names is not included in the - * output. - * @param names A JSONArray of strings. - * @param ja A JSONArray of JSONObjects. - * @return A comma delimited text. - * @throws JSONException - */ - public static String toString(JSONArray names, JSONArray ja) - throws JSONException { - if (names == null || names.length() == 0) { - return null; - } - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < ja.length(); i += 1) { - JSONObject jo = ja.optJSONObject(i); - if (jo != null) { - sb.append(rowToString(jo.toJSONArray(names))); - } - } - return sb.toString(); - } -} +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +/** + * This provides static methods to convert comma delimited text into a + * JSONArray, and to covert a JSONArray into comma delimited text. Comma + * delimited text is a very popular format for data interchange. It is + * understood by most database, spreadsheet, and organizer programs. + *

    + * Each row of text represents a row in a table or a data record. Each row + * ends with a NEWLINE character. Each row contains one or more values. + * Values are separated by commas. A value can contain any character except + * for comma, unless is is wrapped in single quotes or double quotes. + *

    + * The first row usually contains the names of the columns. + *

    + * A comma delimited list can be converted into a JSONArray of JSONObjects. + * The names for the elements in the JSONObjects can be taken from the names + * in the first row. + * @author JSON.org + * @version 2010-12-24 + */ +public class CDL { + + /** + * Get the next value. The value can be wrapped in quotes. The value can + * be empty. + * @param x A JSONTokener of the source text. + * @return The value string, or null if empty. + * @throws JSONException if the quoted string is badly formed. + */ + private static String getValue(JSONTokener x) throws JSONException { + char c; + char q; + StringBuffer sb; + do { + c = x.next(); + } while (c == ' ' || c == '\t'); + switch (c) { + case 0: + return null; + case '"': + case '\'': + q = c; + sb = new StringBuffer(); + for (;;) { + c = x.next(); + if (c == q) { + break; + } + if (c == 0 || c == '\n' || c == '\r') { + throw x.syntaxError("Missing close quote '" + q + "'."); + } + sb.append(c); + } + return sb.toString(); + case ',': + x.back(); + return ""; + default: + x.back(); + return x.nextTo(','); + } + } + + /** + * Produce a JSONArray of strings from a row of comma delimited values. + * @param x A JSONTokener of the source text. + * @return A JSONArray of strings. + * @throws JSONException + */ + public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException { + JSONArray ja = new JSONArray(); + for (;;) { + String value = getValue(x); + char c = x.next(); + if (value == null || + (ja.length() == 0 && value.length() == 0 && c != ',')) { + return null; + } + ja.put(value); + for (;;) { + if (c == ',') { + break; + } + if (c != ' ') { + if (c == '\n' || c == '\r' || c == 0) { + return ja; + } + throw x.syntaxError("Bad character '" + c + "' (" + + (int)c + ")."); + } + c = x.next(); + } + } + } + + /** + * Produce a JSONObject from a row of comma delimited text, using a + * parallel JSONArray of strings to provides the names of the elements. + * @param names A JSONArray of names. This is commonly obtained from the + * first row of a comma delimited text file using the rowToJSONArray + * method. + * @param x A JSONTokener of the source text. + * @return A JSONObject combining the names and values. + * @throws JSONException + */ + public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x) + throws JSONException { + JSONArray ja = rowToJSONArray(x); + return ja != null ? ja.toJSONObject(names) : null; + } + + /** + * Produce a comma delimited text row from a JSONArray. Values containing + * the comma character will be quoted. Troublesome characters may be + * removed. + * @param ja A JSONArray of strings. + * @return A string ending in NEWLINE. + */ + public static String rowToString(JSONArray ja) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < ja.length(); i += 1) { + if (i > 0) { + sb.append(','); + } + Object object = ja.opt(i); + if (object != null) { + String string = object.toString(); + if (string.length() > 0 && (string.indexOf(',') >= 0 || + string.indexOf('\n') >= 0 || string.indexOf('\r') >= 0 || + string.indexOf(0) >= 0 || string.charAt(0) == '"')) { + sb.append('"'); + int length = string.length(); + for (int j = 0; j < length; j += 1) { + char c = string.charAt(j); + if (c >= ' ' && c != '"') { + sb.append(c); + } + } + sb.append('"'); + } else { + sb.append(string); + } + } + } + sb.append('\n'); + return sb.toString(); + } + + /** + * Produce a JSONArray of JSONObjects from a comma delimited text string, + * using the first row as a source of names. + * @param string The comma delimited text. + * @return A JSONArray of JSONObjects. + * @throws JSONException + */ + public static JSONArray toJSONArray(String string) throws JSONException { + return toJSONArray(new JSONTokener(string)); + } + + /** + * Produce a JSONArray of JSONObjects from a comma delimited text string, + * using the first row as a source of names. + * @param x The JSONTokener containing the comma delimited text. + * @return A JSONArray of JSONObjects. + * @throws JSONException + */ + public static JSONArray toJSONArray(JSONTokener x) throws JSONException { + return toJSONArray(rowToJSONArray(x), x); + } + + /** + * Produce a JSONArray of JSONObjects from a comma delimited text string + * using a supplied JSONArray as the source of element names. + * @param names A JSONArray of strings. + * @param string The comma delimited text. + * @return A JSONArray of JSONObjects. + * @throws JSONException + */ + public static JSONArray toJSONArray(JSONArray names, String string) + throws JSONException { + return toJSONArray(names, new JSONTokener(string)); + } + + /** + * Produce a JSONArray of JSONObjects from a comma delimited text string + * using a supplied JSONArray as the source of element names. + * @param names A JSONArray of strings. + * @param x A JSONTokener of the source text. + * @return A JSONArray of JSONObjects. + * @throws JSONException + */ + public static JSONArray toJSONArray(JSONArray names, JSONTokener x) + throws JSONException { + if (names == null || names.length() == 0) { + return null; + } + JSONArray ja = new JSONArray(); + for (;;) { + JSONObject jo = rowToJSONObject(names, x); + if (jo == null) { + break; + } + ja.put(jo); + } + if (ja.length() == 0) { + return null; + } + return ja; + } + + + /** + * Produce a comma delimited text from a JSONArray of JSONObjects. The + * first row will be a list of names obtained by inspecting the first + * JSONObject. + * @param ja A JSONArray of JSONObjects. + * @return A comma delimited text. + * @throws JSONException + */ + public static String toString(JSONArray ja) throws JSONException { + JSONObject jo = ja.optJSONObject(0); + if (jo != null) { + JSONArray names = jo.names(); + if (names != null) { + return rowToString(names) + toString(names, ja); + } + } + return null; + } + + /** + * Produce a comma delimited text from a JSONArray of JSONObjects using + * a provided list of names. The list of names is not included in the + * output. + * @param names A JSONArray of strings. + * @param ja A JSONArray of JSONObjects. + * @return A comma delimited text. + * @throws JSONException + */ + public static String toString(JSONArray names, JSONArray ja) + throws JSONException { + if (names == null || names.length() == 0) { + return null; + } + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < ja.length(); i += 1) { + JSONObject jo = ja.optJSONObject(i); + if (jo != null) { + sb.append(rowToString(jo.toJSONArray(names))); + } + } + return sb.toString(); + } +} diff --git a/src/org/json/Cookie.java b/src/org/json/Cookie.java index 9cf5ce2c5..a2d9c4ed9 100644 --- a/src/org/json/Cookie.java +++ b/src/org/json/Cookie.java @@ -1,169 +1,169 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -/** - * Convert a web browser cookie specification to a JSONObject and back. - * JSON and Cookies are both notations for name/value pairs. - * @author JSON.org - * @version 2010-12-24 - */ -public class Cookie { - - /** - * Produce a copy of a string in which the characters '+', '%', '=', ';' - * and control characters are replaced with "%hh". This is a gentle form - * of URL encoding, attempting to cause as little distortion to the - * string as possible. The characters '=' and ';' are meta characters in - * cookies. By convention, they are escaped using the URL-encoding. This is - * only a convention, not a standard. Often, cookies are expected to have - * encoded values. We encode '=' and ';' because we must. We encode '%' and - * '+' because they are meta characters in URL encoding. - * @param string The source string. - * @return The escaped result. - */ - public static String escape(String string) { - char c; - String s = string.trim(); - StringBuffer sb = new StringBuffer(); - int length = s.length(); - for (int i = 0; i < length; i += 1) { - c = s.charAt(i); - if (c < ' ' || c == '+' || c == '%' || c == '=' || c == ';') { - sb.append('%'); - sb.append(Character.forDigit((char)((c >>> 4) & 0x0f), 16)); - sb.append(Character.forDigit((char)(c & 0x0f), 16)); - } else { - sb.append(c); - } - } - return sb.toString(); - } - - - /** - * Convert a cookie specification string into a JSONObject. The string - * will contain a name value pair separated by '='. The name and the value - * will be unescaped, possibly converting '+' and '%' sequences. The - * cookie properties may follow, separated by ';', also represented as - * name=value (except the secure property, which does not have a value). - * The name will be stored under the key "name", and the value will be - * stored under the key "value". This method does not do checking or - * validation of the parameters. It only converts the cookie string into - * a JSONObject. - * @param string The cookie specification string. - * @return A JSONObject containing "name", "value", and possibly other - * members. - * @throws JSONException - */ - public static JSONObject toJSONObject(String string) throws JSONException { - String name; - JSONObject jo = new JSONObject(); - Object value; - JSONTokener x = new JSONTokener(string); - jo.put("name", x.nextTo('=')); - x.next('='); - jo.put("value", x.nextTo(';')); - x.next(); - while (x.more()) { - name = unescape(x.nextTo("=;")); - if (x.next() != '=') { - if (name.equals("secure")) { - value = Boolean.TRUE; - } else { - throw x.syntaxError("Missing '=' in cookie parameter."); - } - } else { - value = unescape(x.nextTo(';')); - x.next(); - } - jo.put(name, value); - } - return jo; - } - - - /** - * Convert a JSONObject into a cookie specification string. The JSONObject - * must contain "name" and "value" members. - * If the JSONObject contains "expires", "domain", "path", or "secure" - * members, they will be appended to the cookie specification string. - * All other members are ignored. - * @param jo A JSONObject - * @return A cookie specification string - * @throws JSONException - */ - public static String toString(JSONObject jo) throws JSONException { - StringBuffer sb = new StringBuffer(); - - sb.append(escape(jo.getString("name"))); - sb.append("="); - sb.append(escape(jo.getString("value"))); - if (jo.has("expires")) { - sb.append(";expires="); - sb.append(jo.getString("expires")); - } - if (jo.has("domain")) { - sb.append(";domain="); - sb.append(escape(jo.getString("domain"))); - } - if (jo.has("path")) { - sb.append(";path="); - sb.append(escape(jo.getString("path"))); - } - if (jo.optBoolean("secure")) { - sb.append(";secure"); - } - return sb.toString(); - } - - /** - * Convert %hh sequences to single characters, and - * convert plus to space. - * @param string A string that may contain - * + (plus) and - * %hh sequences. - * @return The unescaped string. - */ - public static String unescape(String string) { - int length = string.length(); - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < length; ++i) { - char c = string.charAt(i); - if (c == '+') { - c = ' '; - } else if (c == '%' && i + 2 < length) { - int d = JSONTokener.dehexchar(string.charAt(i + 1)); - int e = JSONTokener.dehexchar(string.charAt(i + 2)); - if (d >= 0 && e >= 0) { - c = (char)(d * 16 + e); - i += 2; - } - } - sb.append(c); - } - return sb.toString(); - } -} +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +/** + * Convert a web browser cookie specification to a JSONObject and back. + * JSON and Cookies are both notations for name/value pairs. + * @author JSON.org + * @version 2010-12-24 + */ +public class Cookie { + + /** + * Produce a copy of a string in which the characters '+', '%', '=', ';' + * and control characters are replaced with "%hh". This is a gentle form + * of URL encoding, attempting to cause as little distortion to the + * string as possible. The characters '=' and ';' are meta characters in + * cookies. By convention, they are escaped using the URL-encoding. This is + * only a convention, not a standard. Often, cookies are expected to have + * encoded values. We encode '=' and ';' because we must. We encode '%' and + * '+' because they are meta characters in URL encoding. + * @param string The source string. + * @return The escaped result. + */ + public static String escape(String string) { + char c; + String s = string.trim(); + StringBuffer sb = new StringBuffer(); + int length = s.length(); + for (int i = 0; i < length; i += 1) { + c = s.charAt(i); + if (c < ' ' || c == '+' || c == '%' || c == '=' || c == ';') { + sb.append('%'); + sb.append(Character.forDigit((char)((c >>> 4) & 0x0f), 16)); + sb.append(Character.forDigit((char)(c & 0x0f), 16)); + } else { + sb.append(c); + } + } + return sb.toString(); + } + + + /** + * Convert a cookie specification string into a JSONObject. The string + * will contain a name value pair separated by '='. The name and the value + * will be unescaped, possibly converting '+' and '%' sequences. The + * cookie properties may follow, separated by ';', also represented as + * name=value (except the secure property, which does not have a value). + * The name will be stored under the key "name", and the value will be + * stored under the key "value". This method does not do checking or + * validation of the parameters. It only converts the cookie string into + * a JSONObject. + * @param string The cookie specification string. + * @return A JSONObject containing "name", "value", and possibly other + * members. + * @throws JSONException + */ + public static JSONObject toJSONObject(String string) throws JSONException { + String name; + JSONObject jo = new JSONObject(); + Object value; + JSONTokener x = new JSONTokener(string); + jo.put("name", x.nextTo('=')); + x.next('='); + jo.put("value", x.nextTo(';')); + x.next(); + while (x.more()) { + name = unescape(x.nextTo("=;")); + if (x.next() != '=') { + if (name.equals("secure")) { + value = Boolean.TRUE; + } else { + throw x.syntaxError("Missing '=' in cookie parameter."); + } + } else { + value = unescape(x.nextTo(';')); + x.next(); + } + jo.put(name, value); + } + return jo; + } + + + /** + * Convert a JSONObject into a cookie specification string. The JSONObject + * must contain "name" and "value" members. + * If the JSONObject contains "expires", "domain", "path", or "secure" + * members, they will be appended to the cookie specification string. + * All other members are ignored. + * @param jo A JSONObject + * @return A cookie specification string + * @throws JSONException + */ + public static String toString(JSONObject jo) throws JSONException { + StringBuffer sb = new StringBuffer(); + + sb.append(escape(jo.getString("name"))); + sb.append("="); + sb.append(escape(jo.getString("value"))); + if (jo.has("expires")) { + sb.append(";expires="); + sb.append(jo.getString("expires")); + } + if (jo.has("domain")) { + sb.append(";domain="); + sb.append(escape(jo.getString("domain"))); + } + if (jo.has("path")) { + sb.append(";path="); + sb.append(escape(jo.getString("path"))); + } + if (jo.optBoolean("secure")) { + sb.append(";secure"); + } + return sb.toString(); + } + + /** + * Convert %hh sequences to single characters, and + * convert plus to space. + * @param string A string that may contain + * + (plus) and + * %hh sequences. + * @return The unescaped string. + */ + public static String unescape(String string) { + int length = string.length(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < length; ++i) { + char c = string.charAt(i); + if (c == '+') { + c = ' '; + } else if (c == '%' && i + 2 < length) { + int d = JSONTokener.dehexchar(string.charAt(i + 1)); + int e = JSONTokener.dehexchar(string.charAt(i + 2)); + if (d >= 0 && e >= 0) { + c = (char)(d * 16 + e); + i += 2; + } + } + sb.append(c); + } + return sb.toString(); + } +} diff --git a/src/org/json/CookieList.java b/src/org/json/CookieList.java index 7f4fe0751..1111135f3 100644 --- a/src/org/json/CookieList.java +++ b/src/org/json/CookieList.java @@ -1,90 +1,90 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -import java.util.Iterator; - -/** - * Convert a web browser cookie list string to a JSONObject and back. - * @author JSON.org - * @version 2010-12-24 - */ -public class CookieList { - - /** - * Convert a cookie list into a JSONObject. A cookie list is a sequence - * of name/value pairs. The names are separated from the values by '='. - * The pairs are separated by ';'. The names and the values - * will be unescaped, possibly converting '+' and '%' sequences. - * - * To add a cookie to a cooklist, - * cookielistJSONObject.put(cookieJSONObject.getString("name"), - * cookieJSONObject.getString("value")); - * @param string A cookie list string - * @return A JSONObject - * @throws JSONException - */ - public static JSONObject toJSONObject(String string) throws JSONException { - JSONObject jo = new JSONObject(); - JSONTokener x = new JSONTokener(string); - while (x.more()) { - String name = Cookie.unescape(x.nextTo('=')); - x.next('='); - jo.put(name, Cookie.unescape(x.nextTo(';'))); - x.next(); - } - return jo; - } - - - /** - * Convert a JSONObject into a cookie list. A cookie list is a sequence - * of name/value pairs. The names are separated from the values by '='. - * The pairs are separated by ';'. The characters '%', '+', '=', and ';' - * in the names and values are replaced by "%hh". - * @param jo A JSONObject - * @return A cookie list string - * @throws JSONException - */ - public static String toString(JSONObject jo) throws JSONException { - boolean b = false; - Iterator keys = jo.keys(); - String string; - StringBuffer sb = new StringBuffer(); - while (keys.hasNext()) { - string = keys.next().toString(); - if (!jo.isNull(string)) { - if (b) { - sb.append(';'); - } - sb.append(Cookie.escape(string)); - sb.append("="); - sb.append(Cookie.escape(jo.getString(string))); - b = true; - } - } - return sb.toString(); - } -} +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +import java.util.Iterator; + +/** + * Convert a web browser cookie list string to a JSONObject and back. + * @author JSON.org + * @version 2010-12-24 + */ +public class CookieList { + + /** + * Convert a cookie list into a JSONObject. A cookie list is a sequence + * of name/value pairs. The names are separated from the values by '='. + * The pairs are separated by ';'. The names and the values + * will be unescaped, possibly converting '+' and '%' sequences. + * + * To add a cookie to a cooklist, + * cookielistJSONObject.put(cookieJSONObject.getString("name"), + * cookieJSONObject.getString("value")); + * @param string A cookie list string + * @return A JSONObject + * @throws JSONException + */ + public static JSONObject toJSONObject(String string) throws JSONException { + JSONObject jo = new JSONObject(); + JSONTokener x = new JSONTokener(string); + while (x.more()) { + String name = Cookie.unescape(x.nextTo('=')); + x.next('='); + jo.put(name, Cookie.unescape(x.nextTo(';'))); + x.next(); + } + return jo; + } + + + /** + * Convert a JSONObject into a cookie list. A cookie list is a sequence + * of name/value pairs. The names are separated from the values by '='. + * The pairs are separated by ';'. The characters '%', '+', '=', and ';' + * in the names and values are replaced by "%hh". + * @param jo A JSONObject + * @return A cookie list string + * @throws JSONException + */ + public static String toString(JSONObject jo) throws JSONException { + boolean b = false; + Iterator keys = jo.keys(); + String string; + StringBuffer sb = new StringBuffer(); + while (keys.hasNext()) { + string = keys.next().toString(); + if (!jo.isNull(string)) { + if (b) { + sb.append(';'); + } + sb.append(Cookie.escape(string)); + sb.append("="); + sb.append(Cookie.escape(jo.getString(string))); + b = true; + } + } + return sb.toString(); + } +} diff --git a/src/org/json/HTTP.java b/src/org/json/HTTP.java index 0ce7a2161..037cf4f58 100644 --- a/src/org/json/HTTP.java +++ b/src/org/json/HTTP.java @@ -1,163 +1,163 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -import java.util.Iterator; - -/** - * Convert an HTTP header to a JSONObject and back. - * @author JSON.org - * @version 2010-12-24 - */ -public class HTTP { - - /** Carriage return/line feed. */ - public static final String CRLF = "\r\n"; - - /** - * Convert an HTTP header string into a JSONObject. It can be a request - * header or a response header. A request header will contain - *

    {
    -     *    Method: "POST" (for example),
    -     *    "Request-URI": "/" (for example),
    -     *    "HTTP-Version": "HTTP/1.1" (for example)
    -     * }
    - * A response header will contain - *
    {
    -     *    "HTTP-Version": "HTTP/1.1" (for example),
    -     *    "Status-Code": "200" (for example),
    -     *    "Reason-Phrase": "OK" (for example)
    -     * }
    - * In addition, the other parameters in the header will be captured, using - * the HTTP field names as JSON names, so that
    -     *    Date: Sun, 26 May 2002 18:06:04 GMT
    -     *    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
    -     *    Cache-Control: no-cache
    - * become - *
    {...
    -     *    Date: "Sun, 26 May 2002 18:06:04 GMT",
    -     *    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
    -     *    "Cache-Control": "no-cache",
    -     * ...}
    - * It does no further checking or conversion. It does not parse dates. - * It does not do '%' transforms on URLs. - * @param string An HTTP header string. - * @return A JSONObject containing the elements and attributes - * of the XML string. - * @throws JSONException - */ - public static JSONObject toJSONObject(String string) throws JSONException { - JSONObject jo = new JSONObject(); - HTTPTokener x = new HTTPTokener(string); - String token; - - token = x.nextToken(); - if (token.toUpperCase().startsWith("HTTP")) { - -// Response - - jo.put("HTTP-Version", token); - jo.put("Status-Code", x.nextToken()); - jo.put("Reason-Phrase", x.nextTo('\0')); - x.next(); - - } else { - -// Request - - jo.put("Method", token); - jo.put("Request-URI", x.nextToken()); - jo.put("HTTP-Version", x.nextToken()); - } - -// Fields - - while (x.more()) { - String name = x.nextTo(':'); - x.next(':'); - jo.put(name, x.nextTo('\0')); - x.next(); - } - return jo; - } - - - /** - * Convert a JSONObject into an HTTP header. A request header must contain - *
    {
    -     *    Method: "POST" (for example),
    -     *    "Request-URI": "/" (for example),
    -     *    "HTTP-Version": "HTTP/1.1" (for example)
    -     * }
    - * A response header must contain - *
    {
    -     *    "HTTP-Version": "HTTP/1.1" (for example),
    -     *    "Status-Code": "200" (for example),
    -     *    "Reason-Phrase": "OK" (for example)
    -     * }
    - * Any other members of the JSONObject will be output as HTTP fields. - * The result will end with two CRLF pairs. - * @param jo A JSONObject - * @return An HTTP header string. - * @throws JSONException if the object does not contain enough - * information. - */ - public static String toString(JSONObject jo) throws JSONException { - Iterator keys = jo.keys(); - String string; - StringBuffer sb = new StringBuffer(); - if (jo.has("Status-Code") && jo.has("Reason-Phrase")) { - sb.append(jo.getString("HTTP-Version")); - sb.append(' '); - sb.append(jo.getString("Status-Code")); - sb.append(' '); - sb.append(jo.getString("Reason-Phrase")); - } else if (jo.has("Method") && jo.has("Request-URI")) { - sb.append(jo.getString("Method")); - sb.append(' '); - sb.append('"'); - sb.append(jo.getString("Request-URI")); - sb.append('"'); - sb.append(' '); - sb.append(jo.getString("HTTP-Version")); - } else { - throw new JSONException("Not enough material for an HTTP header."); - } - sb.append(CRLF); - while (keys.hasNext()) { - string = keys.next().toString(); - if (!string.equals("HTTP-Version") && !string.equals("Status-Code") && - !string.equals("Reason-Phrase") && !string.equals("Method") && - !string.equals("Request-URI") && !jo.isNull(string)) { - sb.append(string); - sb.append(": "); - sb.append(jo.getString(string)); - sb.append(CRLF); - } - } - sb.append(CRLF); - return sb.toString(); - } -} +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +import java.util.Iterator; + +/** + * Convert an HTTP header to a JSONObject and back. + * @author JSON.org + * @version 2010-12-24 + */ +public class HTTP { + + /** Carriage return/line feed. */ + public static final String CRLF = "\r\n"; + + /** + * Convert an HTTP header string into a JSONObject. It can be a request + * header or a response header. A request header will contain + *
    {
    +     *    Method: "POST" (for example),
    +     *    "Request-URI": "/" (for example),
    +     *    "HTTP-Version": "HTTP/1.1" (for example)
    +     * }
    + * A response header will contain + *
    {
    +     *    "HTTP-Version": "HTTP/1.1" (for example),
    +     *    "Status-Code": "200" (for example),
    +     *    "Reason-Phrase": "OK" (for example)
    +     * }
    + * In addition, the other parameters in the header will be captured, using + * the HTTP field names as JSON names, so that
    +     *    Date: Sun, 26 May 2002 18:06:04 GMT
    +     *    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
    +     *    Cache-Control: no-cache
    + * become + *
    {...
    +     *    Date: "Sun, 26 May 2002 18:06:04 GMT",
    +     *    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
    +     *    "Cache-Control": "no-cache",
    +     * ...}
    + * It does no further checking or conversion. It does not parse dates. + * It does not do '%' transforms on URLs. + * @param string An HTTP header string. + * @return A JSONObject containing the elements and attributes + * of the XML string. + * @throws JSONException + */ + public static JSONObject toJSONObject(String string) throws JSONException { + JSONObject jo = new JSONObject(); + HTTPTokener x = new HTTPTokener(string); + String token; + + token = x.nextToken(); + if (token.toUpperCase().startsWith("HTTP")) { + +// Response + + jo.put("HTTP-Version", token); + jo.put("Status-Code", x.nextToken()); + jo.put("Reason-Phrase", x.nextTo('\0')); + x.next(); + + } else { + +// Request + + jo.put("Method", token); + jo.put("Request-URI", x.nextToken()); + jo.put("HTTP-Version", x.nextToken()); + } + +// Fields + + while (x.more()) { + String name = x.nextTo(':'); + x.next(':'); + jo.put(name, x.nextTo('\0')); + x.next(); + } + return jo; + } + + + /** + * Convert a JSONObject into an HTTP header. A request header must contain + *
    {
    +     *    Method: "POST" (for example),
    +     *    "Request-URI": "/" (for example),
    +     *    "HTTP-Version": "HTTP/1.1" (for example)
    +     * }
    + * A response header must contain + *
    {
    +     *    "HTTP-Version": "HTTP/1.1" (for example),
    +     *    "Status-Code": "200" (for example),
    +     *    "Reason-Phrase": "OK" (for example)
    +     * }
    + * Any other members of the JSONObject will be output as HTTP fields. + * The result will end with two CRLF pairs. + * @param jo A JSONObject + * @return An HTTP header string. + * @throws JSONException if the object does not contain enough + * information. + */ + public static String toString(JSONObject jo) throws JSONException { + Iterator keys = jo.keys(); + String string; + StringBuffer sb = new StringBuffer(); + if (jo.has("Status-Code") && jo.has("Reason-Phrase")) { + sb.append(jo.getString("HTTP-Version")); + sb.append(' '); + sb.append(jo.getString("Status-Code")); + sb.append(' '); + sb.append(jo.getString("Reason-Phrase")); + } else if (jo.has("Method") && jo.has("Request-URI")) { + sb.append(jo.getString("Method")); + sb.append(' '); + sb.append('"'); + sb.append(jo.getString("Request-URI")); + sb.append('"'); + sb.append(' '); + sb.append(jo.getString("HTTP-Version")); + } else { + throw new JSONException("Not enough material for an HTTP header."); + } + sb.append(CRLF); + while (keys.hasNext()) { + string = keys.next().toString(); + if (!string.equals("HTTP-Version") && !string.equals("Status-Code") && + !string.equals("Reason-Phrase") && !string.equals("Method") && + !string.equals("Request-URI") && !jo.isNull(string)) { + sb.append(string); + sb.append(": "); + sb.append(jo.getString(string)); + sb.append(CRLF); + } + } + sb.append(CRLF); + return sb.toString(); + } +} diff --git a/src/org/json/HTTPTokener.java b/src/org/json/HTTPTokener.java index f62b3d558..86fed61d7 100644 --- a/src/org/json/HTTPTokener.java +++ b/src/org/json/HTTPTokener.java @@ -1,77 +1,77 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -/** - * The HTTPTokener extends the JSONTokener to provide additional methods - * for the parsing of HTTP headers. - * @author JSON.org - * @version 2010-12-24 - */ -public class HTTPTokener extends JSONTokener { - - /** - * Construct an HTTPTokener from a string. - * @param string A source string. - */ - public HTTPTokener(String string) { - super(string); - } - - - /** - * Get the next token or string. This is used in parsing HTTP headers. - * @throws JSONException - * @return A String. - */ - public String nextToken() throws JSONException { - char c; - char q; - StringBuffer sb = new StringBuffer(); - do { - c = next(); - } while (Character.isWhitespace(c)); - if (c == '"' || c == '\'') { - q = c; - for (;;) { - c = next(); - if (c < ' ') { - throw syntaxError("Unterminated string."); - } - if (c == q) { - return sb.toString(); - } - sb.append(c); - } - } - for (;;) { - if (c == 0 || Character.isWhitespace(c)) { - return sb.toString(); - } - sb.append(c); - c = next(); - } - } -} +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +/** + * The HTTPTokener extends the JSONTokener to provide additional methods + * for the parsing of HTTP headers. + * @author JSON.org + * @version 2010-12-24 + */ +public class HTTPTokener extends JSONTokener { + + /** + * Construct an HTTPTokener from a string. + * @param string A source string. + */ + public HTTPTokener(String string) { + super(string); + } + + + /** + * Get the next token or string. This is used in parsing HTTP headers. + * @throws JSONException + * @return A String. + */ + public String nextToken() throws JSONException { + char c; + char q; + StringBuffer sb = new StringBuffer(); + do { + c = next(); + } while (Character.isWhitespace(c)); + if (c == '"' || c == '\'') { + q = c; + for (;;) { + c = next(); + if (c < ' ') { + throw syntaxError("Unterminated string."); + } + if (c == q) { + return sb.toString(); + } + sb.append(c); + } + } + for (;;) { + if (c == 0 || Character.isWhitespace(c)) { + return sb.toString(); + } + sb.append(c); + c = next(); + } + } +} diff --git a/src/org/json/JSONException.java b/src/org/json/JSONException.java index b498d4ba0..172065859 100644 --- a/src/org/json/JSONException.java +++ b/src/org/json/JSONException.java @@ -1,28 +1,28 @@ -package org.json; - -/** - * The JSONException is thrown by the JSON.org classes when things are amiss. - * @author JSON.org - * @version 2010-12-24 - */ -public class JSONException extends Exception { - private static final long serialVersionUID = 0; - private Throwable cause; - - /** - * Constructs a JSONException with an explanatory message. - * @param message Detail about the reason for the exception. - */ - public JSONException(String message) { - super(message); - } - - public JSONException(Throwable cause) { - super(cause.getMessage()); - this.cause = cause; - } - - public Throwable getCause() { - return this.cause; - } -} +package org.json; + +/** + * The JSONException is thrown by the JSON.org classes when things are amiss. + * @author JSON.org + * @version 2010-12-24 + */ +public class JSONException extends Exception { + private static final long serialVersionUID = 0; + private Throwable cause; + + /** + * Constructs a JSONException with an explanatory message. + * @param message Detail about the reason for the exception. + */ + public JSONException(String message) { + super(message); + } + + public JSONException(Throwable cause) { + super(cause.getMessage()); + this.cause = cause; + } + + public Throwable getCause() { + return this.cause; + } +} diff --git a/src/org/json/JSONString.java b/src/org/json/JSONString.java index 17f438426..7f4f65b67 100644 --- a/src/org/json/JSONString.java +++ b/src/org/json/JSONString.java @@ -1,18 +1,18 @@ -package org.json; -/** - * The JSONString interface allows a toJSONString() - * method so that a class can change the behavior of - * JSONObject.toString(), JSONArray.toString(), - * and JSONWriter.value(Object). The - * toJSONString method will be used instead of the default behavior - * of using the Object's toString() method and quoting the result. - */ -public interface JSONString { - /** - * The toJSONString method allows a class to produce its own JSON - * serialization. - * - * @return A strictly syntactically correct JSON text. - */ - public String toJSONString(); -} +package org.json; +/** + * The JSONString interface allows a toJSONString() + * method so that a class can change the behavior of + * JSONObject.toString(), JSONArray.toString(), + * and JSONWriter.value(Object). The + * toJSONString method will be used instead of the default behavior + * of using the Object's toString() method and quoting the result. + */ +public interface JSONString { + /** + * The toJSONString method allows a class to produce its own JSON + * serialization. + * + * @return A strictly syntactically correct JSON text. + */ + public String toJSONString(); +} diff --git a/src/org/json/JSONStringer.java b/src/org/json/JSONStringer.java index 25c2e5d78..32c9f7f44 100644 --- a/src/org/json/JSONStringer.java +++ b/src/org/json/JSONStringer.java @@ -1,78 +1,78 @@ -package org.json; - -/* -Copyright (c) 2006 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -import java.io.StringWriter; - -/** - * JSONStringer provides a quick and convenient way of producing JSON text. - * The texts produced strictly conform to JSON syntax rules. No whitespace is - * added, so the results are ready for transmission or storage. Each instance of - * JSONStringer can produce one JSON text. - *

    - * A JSONStringer instance provides a value method for appending - * values to the - * text, and a key - * method for adding keys before values in objects. There are array - * and endArray methods that make and bound array values, and - * object and endObject methods which make and bound - * object values. All of these methods return the JSONWriter instance, - * permitting cascade style. For example,

    - * myString = new JSONStringer()
    - *     .object()
    - *         .key("JSON")
    - *         .value("Hello, World!")
    - *     .endObject()
    - *     .toString();
    which produces the string
    - * {"JSON":"Hello, World!"}
    - *

    - * The first method called must be array or object. - * There are no methods for adding commas or colons. JSONStringer adds them for - * you. Objects and arrays can be nested up to 20 levels deep. - *

    - * This can sometimes be easier than using a JSONObject to build a string. - * @author JSON.org - * @version 2008-09-18 - */ -public class JSONStringer extends JSONWriter { - /** - * Make a fresh JSONStringer. It can be used to build one JSON text. - */ - public JSONStringer() { - super(new StringWriter()); - } - - /** - * Return the JSON text. This method is used to obtain the product of the - * JSONStringer instance. It will return null if there was a - * problem in the construction of the JSON text (such as the calls to - * array were not properly balanced with calls to - * endArray). - * @return The JSON text. - */ - public String toString() { - return this.mode == 'd' ? this.writer.toString() : null; - } -} +package org.json; + +/* +Copyright (c) 2006 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +import java.io.StringWriter; + +/** + * JSONStringer provides a quick and convenient way of producing JSON text. + * The texts produced strictly conform to JSON syntax rules. No whitespace is + * added, so the results are ready for transmission or storage. Each instance of + * JSONStringer can produce one JSON text. + *

    + * A JSONStringer instance provides a value method for appending + * values to the + * text, and a key + * method for adding keys before values in objects. There are array + * and endArray methods that make and bound array values, and + * object and endObject methods which make and bound + * object values. All of these methods return the JSONWriter instance, + * permitting cascade style. For example,

    + * myString = new JSONStringer()
    + *     .object()
    + *         .key("JSON")
    + *         .value("Hello, World!")
    + *     .endObject()
    + *     .toString();
    which produces the string
    + * {"JSON":"Hello, World!"}
    + *

    + * The first method called must be array or object. + * There are no methods for adding commas or colons. JSONStringer adds them for + * you. Objects and arrays can be nested up to 20 levels deep. + *

    + * This can sometimes be easier than using a JSONObject to build a string. + * @author JSON.org + * @version 2008-09-18 + */ +public class JSONStringer extends JSONWriter { + /** + * Make a fresh JSONStringer. It can be used to build one JSON text. + */ + public JSONStringer() { + super(new StringWriter()); + } + + /** + * Return the JSON text. This method is used to obtain the product of the + * JSONStringer instance. It will return null if there was a + * problem in the construction of the JSON text (such as the calls to + * array were not properly balanced with calls to + * endArray). + * @return The JSON text. + */ + public String toString() { + return this.mode == 'd' ? this.writer.toString() : null; + } +} diff --git a/src/org/json/JSONWriter.java b/src/org/json/JSONWriter.java index 1a1dd37aa..bb8c9f12d 100644 --- a/src/org/json/JSONWriter.java +++ b/src/org/json/JSONWriter.java @@ -1,323 +1,323 @@ -package org.json; - -import java.io.IOException; -import java.io.Writer; - -/* -Copyright (c) 2006 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -/** - * JSONWriter provides a quick and convenient way of producing JSON text. - * The texts produced strictly conform to JSON syntax rules. No whitespace is - * added, so the results are ready for transmission or storage. Each instance of - * JSONWriter can produce one JSON text. - *

    - * A JSONWriter instance provides a value method for appending - * values to the - * text, and a key - * method for adding keys before values in objects. There are array - * and endArray methods that make and bound array values, and - * object and endObject methods which make and bound - * object values. All of these methods return the JSONWriter instance, - * permitting a cascade style. For example,

    - * new JSONWriter(myWriter)
    - *     .object()
    - *         .key("JSON")
    - *         .value("Hello, World!")
    - *     .endObject();
    which writes
    - * {"JSON":"Hello, World!"}
    - *

    - * The first method called must be array or object. - * There are no methods for adding commas or colons. JSONWriter adds them for - * you. Objects and arrays can be nested up to 20 levels deep. - *

    - * This can sometimes be easier than using a JSONObject to build a string. - * @author JSON.org - * @version 2011-11-14 - */ -public class JSONWriter { - private static final int maxdepth = 200; - - /** - * The comma flag determines if a comma should be output before the next - * value. - */ - private boolean comma; - - /** - * The current mode. Values: - * 'a' (array), - * 'd' (done), - * 'i' (initial), - * 'k' (key), - * 'o' (object). - */ - protected char mode; - - /** - * The object/array stack. - */ - private final JSONObject stack[]; - - /** - * The stack top index. A value of 0 indicates that the stack is empty. - */ - private int top; - - /** - * The writer that will receive the output. - */ - protected Writer writer; - - /** - * Make a fresh JSONWriter. It can be used to build one JSON text. - */ - public JSONWriter(Writer w) { - this.comma = false; - this.mode = 'i'; - this.stack = new JSONObject[maxdepth]; - this.top = 0; - this.writer = w; - } - - /** - * Append a value. - * @param string A string value. - * @return this - * @throws JSONException If the value is out of sequence. - */ - private JSONWriter append(String string) throws JSONException { - if (string == null) { - throw new JSONException("Null pointer"); - } - if (this.mode == 'o' || this.mode == 'a') { - try { - if (this.comma && this.mode == 'a') { - this.writer.write(','); - } - this.writer.write(string); - } catch (IOException e) { - throw new JSONException(e); - } - if (this.mode == 'o') { - this.mode = 'k'; - } - this.comma = true; - return this; - } - throw new JSONException("Value out of sequence."); - } - - /** - * Begin appending a new array. All values until the balancing - * endArray will be appended to this array. The - * endArray method must be called to mark the array's end. - * @return this - * @throws JSONException If the nesting is too deep, or if the object is - * started in the wrong place (for example as a key or after the end of the - * outermost array or object). - */ - public JSONWriter array() throws JSONException { - if (this.mode == 'i' || this.mode == 'o' || this.mode == 'a') { - this.push(null); - this.append("["); - this.comma = false; - return this; - } - throw new JSONException("Misplaced array."); - } - - /** - * End something. - * @param mode Mode - * @param c Closing character - * @return this - * @throws JSONException If unbalanced. - */ - private JSONWriter end(char mode, char c) throws JSONException { - if (this.mode != mode) { - throw new JSONException(mode == 'a' ? "Misplaced endArray." : - "Misplaced endObject."); - } - this.pop(mode); - try { - this.writer.write(c); - } catch (IOException e) { - throw new JSONException(e); - } - this.comma = true; - return this; - } - - /** - * End an array. This method most be called to balance calls to - * array. - * @return this - * @throws JSONException If incorrectly nested. - */ - public JSONWriter endArray() throws JSONException { - return this.end('a', ']'); - } - - /** - * End an object. This method most be called to balance calls to - * object. - * @return this - * @throws JSONException If incorrectly nested. - */ - public JSONWriter endObject() throws JSONException { - return this.end('k', '}'); - } - - /** - * Append a key. The key will be associated with the next value. In an - * object, every value must be preceded by a key. - * @param string A key string. - * @return this - * @throws JSONException If the key is out of place. For example, keys - * do not belong in arrays or if the key is null. - */ - public JSONWriter key(String string) throws JSONException { - if (string == null) { - throw new JSONException("Null key."); - } - if (this.mode == 'k') { - try { - this.stack[this.top - 1].putOnce(string, Boolean.TRUE); - if (this.comma) { - this.writer.write(','); - } - this.writer.write(JSONObject.quote(string)); - this.writer.write(':'); - this.comma = false; - this.mode = 'o'; - return this; - } catch (IOException e) { - throw new JSONException(e); - } - } - throw new JSONException("Misplaced key."); - } - - - /** - * Begin appending a new object. All keys and values until the balancing - * endObject will be appended to this object. The - * endObject method must be called to mark the object's end. - * @return this - * @throws JSONException If the nesting is too deep, or if the object is - * started in the wrong place (for example as a key or after the end of the - * outermost array or object). - */ - public JSONWriter object() throws JSONException { - if (this.mode == 'i') { - this.mode = 'o'; - } - if (this.mode == 'o' || this.mode == 'a') { - this.append("{"); - this.push(new JSONObject()); - this.comma = false; - return this; - } - throw new JSONException("Misplaced object."); - - } - - - /** - * Pop an array or object scope. - * @param c The scope to close. - * @throws JSONException If nesting is wrong. - */ - private void pop(char c) throws JSONException { - if (this.top <= 0) { - throw new JSONException("Nesting error."); - } - char m = this.stack[this.top - 1] == null ? 'a' : 'k'; - if (m != c) { - throw new JSONException("Nesting error."); - } - this.top -= 1; - this.mode = this.top == 0 ? - 'd' : this.stack[this.top - 1] == null ? 'a' : 'k'; - } - - /** - * Push an array or object scope. - * @param c The scope to open. - * @throws JSONException If nesting is too deep. - */ - private void push(JSONObject jo) throws JSONException { - if (this.top >= maxdepth) { - throw new JSONException("Nesting too deep."); - } - this.stack[this.top] = jo; - this.mode = jo == null ? 'a' : 'k'; - this.top += 1; - } - - - /** - * Append either the value true or the value - * false. - * @param b A boolean. - * @return this - * @throws JSONException - */ - public JSONWriter value(boolean b) throws JSONException { - return this.append(b ? "true" : "false"); - } - - /** - * Append a double value. - * @param d A double. - * @return this - * @throws JSONException If the number is not finite. - */ - public JSONWriter value(double d) throws JSONException { - return this.value(new Double(d)); - } - - /** - * Append a long value. - * @param l A long. - * @return this - * @throws JSONException - */ - public JSONWriter value(long l) throws JSONException { - return this.append(Long.toString(l)); - } - - - /** - * Append an object value. - * @param object The object to append. It can be null, or a Boolean, Number, - * String, JSONObject, or JSONArray, or an object that implements JSONString. - * @return this - * @throws JSONException If the value is out of sequence. - */ - public JSONWriter value(Object object) throws JSONException { - return this.append(JSONObject.valueToString(object)); - } -} +package org.json; + +import java.io.IOException; +import java.io.Writer; + +/* +Copyright (c) 2006 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +/** + * JSONWriter provides a quick and convenient way of producing JSON text. + * The texts produced strictly conform to JSON syntax rules. No whitespace is + * added, so the results are ready for transmission or storage. Each instance of + * JSONWriter can produce one JSON text. + *

    + * A JSONWriter instance provides a value method for appending + * values to the + * text, and a key + * method for adding keys before values in objects. There are array + * and endArray methods that make and bound array values, and + * object and endObject methods which make and bound + * object values. All of these methods return the JSONWriter instance, + * permitting a cascade style. For example,

    + * new JSONWriter(myWriter)
    + *     .object()
    + *         .key("JSON")
    + *         .value("Hello, World!")
    + *     .endObject();
    which writes
    + * {"JSON":"Hello, World!"}
    + *

    + * The first method called must be array or object. + * There are no methods for adding commas or colons. JSONWriter adds them for + * you. Objects and arrays can be nested up to 20 levels deep. + *

    + * This can sometimes be easier than using a JSONObject to build a string. + * @author JSON.org + * @version 2011-11-14 + */ +public class JSONWriter { + private static final int maxdepth = 200; + + /** + * The comma flag determines if a comma should be output before the next + * value. + */ + private boolean comma; + + /** + * The current mode. Values: + * 'a' (array), + * 'd' (done), + * 'i' (initial), + * 'k' (key), + * 'o' (object). + */ + protected char mode; + + /** + * The object/array stack. + */ + private final JSONObject stack[]; + + /** + * The stack top index. A value of 0 indicates that the stack is empty. + */ + private int top; + + /** + * The writer that will receive the output. + */ + protected Writer writer; + + /** + * Make a fresh JSONWriter. It can be used to build one JSON text. + */ + public JSONWriter(Writer w) { + this.comma = false; + this.mode = 'i'; + this.stack = new JSONObject[maxdepth]; + this.top = 0; + this.writer = w; + } + + /** + * Append a value. + * @param string A string value. + * @return this + * @throws JSONException If the value is out of sequence. + */ + private JSONWriter append(String string) throws JSONException { + if (string == null) { + throw new JSONException("Null pointer"); + } + if (this.mode == 'o' || this.mode == 'a') { + try { + if (this.comma && this.mode == 'a') { + this.writer.write(','); + } + this.writer.write(string); + } catch (IOException e) { + throw new JSONException(e); + } + if (this.mode == 'o') { + this.mode = 'k'; + } + this.comma = true; + return this; + } + throw new JSONException("Value out of sequence."); + } + + /** + * Begin appending a new array. All values until the balancing + * endArray will be appended to this array. The + * endArray method must be called to mark the array's end. + * @return this + * @throws JSONException If the nesting is too deep, or if the object is + * started in the wrong place (for example as a key or after the end of the + * outermost array or object). + */ + public JSONWriter array() throws JSONException { + if (this.mode == 'i' || this.mode == 'o' || this.mode == 'a') { + this.push(null); + this.append("["); + this.comma = false; + return this; + } + throw new JSONException("Misplaced array."); + } + + /** + * End something. + * @param mode Mode + * @param c Closing character + * @return this + * @throws JSONException If unbalanced. + */ + private JSONWriter end(char mode, char c) throws JSONException { + if (this.mode != mode) { + throw new JSONException(mode == 'a' ? "Misplaced endArray." : + "Misplaced endObject."); + } + this.pop(mode); + try { + this.writer.write(c); + } catch (IOException e) { + throw new JSONException(e); + } + this.comma = true; + return this; + } + + /** + * End an array. This method most be called to balance calls to + * array. + * @return this + * @throws JSONException If incorrectly nested. + */ + public JSONWriter endArray() throws JSONException { + return this.end('a', ']'); + } + + /** + * End an object. This method most be called to balance calls to + * object. + * @return this + * @throws JSONException If incorrectly nested. + */ + public JSONWriter endObject() throws JSONException { + return this.end('k', '}'); + } + + /** + * Append a key. The key will be associated with the next value. In an + * object, every value must be preceded by a key. + * @param string A key string. + * @return this + * @throws JSONException If the key is out of place. For example, keys + * do not belong in arrays or if the key is null. + */ + public JSONWriter key(String string) throws JSONException { + if (string == null) { + throw new JSONException("Null key."); + } + if (this.mode == 'k') { + try { + this.stack[this.top - 1].putOnce(string, Boolean.TRUE); + if (this.comma) { + this.writer.write(','); + } + this.writer.write(JSONObject.quote(string)); + this.writer.write(':'); + this.comma = false; + this.mode = 'o'; + return this; + } catch (IOException e) { + throw new JSONException(e); + } + } + throw new JSONException("Misplaced key."); + } + + + /** + * Begin appending a new object. All keys and values until the balancing + * endObject will be appended to this object. The + * endObject method must be called to mark the object's end. + * @return this + * @throws JSONException If the nesting is too deep, or if the object is + * started in the wrong place (for example as a key or after the end of the + * outermost array or object). + */ + public JSONWriter object() throws JSONException { + if (this.mode == 'i') { + this.mode = 'o'; + } + if (this.mode == 'o' || this.mode == 'a') { + this.append("{"); + this.push(new JSONObject()); + this.comma = false; + return this; + } + throw new JSONException("Misplaced object."); + + } + + + /** + * Pop an array or object scope. + * @param c The scope to close. + * @throws JSONException If nesting is wrong. + */ + private void pop(char c) throws JSONException { + if (this.top <= 0) { + throw new JSONException("Nesting error."); + } + char m = this.stack[this.top - 1] == null ? 'a' : 'k'; + if (m != c) { + throw new JSONException("Nesting error."); + } + this.top -= 1; + this.mode = this.top == 0 ? + 'd' : this.stack[this.top - 1] == null ? 'a' : 'k'; + } + + /** + * Push an array or object scope. + * @param c The scope to open. + * @throws JSONException If nesting is too deep. + */ + private void push(JSONObject jo) throws JSONException { + if (this.top >= maxdepth) { + throw new JSONException("Nesting too deep."); + } + this.stack[this.top] = jo; + this.mode = jo == null ? 'a' : 'k'; + this.top += 1; + } + + + /** + * Append either the value true or the value + * false. + * @param b A boolean. + * @return this + * @throws JSONException + */ + public JSONWriter value(boolean b) throws JSONException { + return this.append(b ? "true" : "false"); + } + + /** + * Append a double value. + * @param d A double. + * @return this + * @throws JSONException If the number is not finite. + */ + public JSONWriter value(double d) throws JSONException { + return this.value(new Double(d)); + } + + /** + * Append a long value. + * @param l A long. + * @return this + * @throws JSONException + */ + public JSONWriter value(long l) throws JSONException { + return this.append(Long.toString(l)); + } + + + /** + * Append an object value. + * @param object The object to append. It can be null, or a Boolean, Number, + * String, JSONObject, or JSONArray, or an object that implements JSONString. + * @return this + * @throws JSONException If the value is out of sequence. + */ + public JSONWriter value(Object object) throws JSONException { + return this.append(JSONObject.valueToString(object)); + } +} diff --git a/src/org/json/XMLTokener.java b/src/org/json/XMLTokener.java index 8762eae65..c6b6dd7ac 100644 --- a/src/org/json/XMLTokener.java +++ b/src/org/json/XMLTokener.java @@ -1,365 +1,365 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -/** - * The XMLTokener extends the JSONTokener to provide additional methods - * for the parsing of XML texts. - * @author JSON.org - * @version 2010-12-24 - */ -public class XMLTokener extends JSONTokener { - - - /** The table of entity values. It initially contains Character values for - * amp, apos, gt, lt, quot. - */ - public static final java.util.HashMap entity; - - static { - entity = new java.util.HashMap(8); - entity.put("amp", XML.AMP); - entity.put("apos", XML.APOS); - entity.put("gt", XML.GT); - entity.put("lt", XML.LT); - entity.put("quot", XML.QUOT); - } - - /** - * Construct an XMLTokener from a string. - * @param s A source string. - */ - public XMLTokener(String s) { - super(s); - } - - /** - * Get the text in the CDATA block. - * @return The string up to the ]]>. - * @throws JSONException If the ]]> is not found. - */ - public String nextCDATA() throws JSONException { - char c; - int i; - StringBuffer sb = new StringBuffer(); - for (;;) { - c = next(); - if (end()) { - throw syntaxError("Unclosed CDATA"); - } - sb.append(c); - i = sb.length() - 3; - if (i >= 0 && sb.charAt(i) == ']' && - sb.charAt(i + 1) == ']' && sb.charAt(i + 2) == '>') { - sb.setLength(i); - return sb.toString(); - } - } - } - - - /** - * Get the next XML outer token, trimming whitespace. There are two kinds - * of tokens: the '<' character which begins a markup tag, and the content - * text between markup tags. - * - * @return A string, or a '<' Character, or null if there is no more - * source text. - * @throws JSONException - */ - public Object nextContent() throws JSONException { - char c; - StringBuffer sb; - do { - c = next(); - } while (Character.isWhitespace(c)); - if (c == 0) { - return null; - } - if (c == '<') { - return XML.LT; - } - sb = new StringBuffer(); - for (;;) { - if (c == '<' || c == 0) { - back(); - return sb.toString().trim(); - } - if (c == '&') { - sb.append(nextEntity(c)); - } else { - sb.append(c); - } - c = next(); - } - } - - - /** - * Return the next entity. These entities are translated to Characters: - * & ' > < ". - * @param ampersand An ampersand character. - * @return A Character or an entity String if the entity is not recognized. - * @throws JSONException If missing ';' in XML entity. - */ - public Object nextEntity(char ampersand) throws JSONException { - StringBuffer sb = new StringBuffer(); - for (;;) { - char c = next(); - if (Character.isLetterOrDigit(c) || c == '#') { - sb.append(Character.toLowerCase(c)); - } else if (c == ';') { - break; - } else { - throw syntaxError("Missing ';' in XML entity: &" + sb); - } - } - String string = sb.toString(); - Object object = entity.get(string); - return object != null ? object : ampersand + string + ";"; - } - - - /** - * Returns the next XML meta token. This is used for skipping over - * and structures. - * @return Syntax characters (< > / = ! ?) are returned as - * Character, and strings and names are returned as Boolean. We don't care - * what the values actually are. - * @throws JSONException If a string is not properly closed or if the XML - * is badly structured. - */ - public Object nextMeta() throws JSONException { - char c; - char q; - do { - c = next(); - } while (Character.isWhitespace(c)); - switch (c) { - case 0: - throw syntaxError("Misshaped meta tag"); - case '<': - return XML.LT; - case '>': - return XML.GT; - case '/': - return XML.SLASH; - case '=': - return XML.EQ; - case '!': - return XML.BANG; - case '?': - return XML.QUEST; - case '"': - case '\'': - q = c; - for (;;) { - c = next(); - if (c == 0) { - throw syntaxError("Unterminated string"); - } - if (c == q) { - return Boolean.TRUE; - } - } - default: - for (;;) { - c = next(); - if (Character.isWhitespace(c)) { - return Boolean.TRUE; - } - switch (c) { - case 0: - case '<': - case '>': - case '/': - case '=': - case '!': - case '?': - case '"': - case '\'': - back(); - return Boolean.TRUE; - } - } - } - } - - - /** - * Get the next XML Token. These tokens are found inside of angle - * brackets. It may be one of these characters: / > = ! ? or it - * may be a string wrapped in single quotes or double quotes, or it may be a - * name. - * @return a String or a Character. - * @throws JSONException If the XML is not well formed. - */ - public Object nextToken() throws JSONException { - char c; - char q; - StringBuffer sb; - do { - c = next(); - } while (Character.isWhitespace(c)); - switch (c) { - case 0: - throw syntaxError("Misshaped element"); - case '<': - throw syntaxError("Misplaced '<'"); - case '>': - return XML.GT; - case '/': - return XML.SLASH; - case '=': - return XML.EQ; - case '!': - return XML.BANG; - case '?': - return XML.QUEST; - -// Quoted string - - case '"': - case '\'': - q = c; - sb = new StringBuffer(); - for (;;) { - c = next(); - if (c == 0) { - throw syntaxError("Unterminated string"); - } - if (c == q) { - return sb.toString(); - } - if (c == '&') { - sb.append(nextEntity(c)); - } else { - sb.append(c); - } - } - default: - -// Name - - sb = new StringBuffer(); - for (;;) { - sb.append(c); - c = next(); - if (Character.isWhitespace(c)) { - return sb.toString(); - } - switch (c) { - case 0: - return sb.toString(); - case '>': - case '/': - case '=': - case '!': - case '?': - case '[': - case ']': - back(); - return sb.toString(); - case '<': - case '"': - case '\'': - throw syntaxError("Bad character in a name"); - } - } - } - } - - - /** - * Skip characters until past the requested string. - * If it is not found, we are left at the end of the source with a result of false. - * @param to A string to skip past. - * @throws JSONException - */ - public boolean skipPast(String to) throws JSONException { - boolean b; - char c; - int i; - int j; - int offset = 0; - int length = to.length(); - char[] circle = new char[length]; - - /* - * First fill the circle buffer with as many characters as are in the - * to string. If we reach an early end, bail. - */ - - for (i = 0; i < length; i += 1) { - c = next(); - if (c == 0) { - return false; - } - circle[i] = c; - } - /* - * We will loop, possibly for all of the remaining characters. - */ - for (;;) { - j = offset; - b = true; - /* - * Compare the circle buffer with the to string. - */ - for (i = 0; i < length; i += 1) { - if (circle[j] != to.charAt(i)) { - b = false; - break; - } - j += 1; - if (j >= length) { - j -= length; - } - } - /* - * If we exit the loop with b intact, then victory is ours. - */ - if (b) { - return true; - } - /* - * Get the next character. If there isn't one, then defeat is ours. - */ - c = next(); - if (c == 0) { - return false; - } - /* - * Shove the character in the circle buffer and advance the - * circle offset. The offset is mod n. - */ - circle[offset] = c; - offset += 1; - if (offset >= length) { - offset -= length; - } - } - } -} +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +/** + * The XMLTokener extends the JSONTokener to provide additional methods + * for the parsing of XML texts. + * @author JSON.org + * @version 2010-12-24 + */ +public class XMLTokener extends JSONTokener { + + + /** The table of entity values. It initially contains Character values for + * amp, apos, gt, lt, quot. + */ + public static final java.util.HashMap entity; + + static { + entity = new java.util.HashMap(8); + entity.put("amp", XML.AMP); + entity.put("apos", XML.APOS); + entity.put("gt", XML.GT); + entity.put("lt", XML.LT); + entity.put("quot", XML.QUOT); + } + + /** + * Construct an XMLTokener from a string. + * @param s A source string. + */ + public XMLTokener(String s) { + super(s); + } + + /** + * Get the text in the CDATA block. + * @return The string up to the ]]>. + * @throws JSONException If the ]]> is not found. + */ + public String nextCDATA() throws JSONException { + char c; + int i; + StringBuffer sb = new StringBuffer(); + for (;;) { + c = next(); + if (end()) { + throw syntaxError("Unclosed CDATA"); + } + sb.append(c); + i = sb.length() - 3; + if (i >= 0 && sb.charAt(i) == ']' && + sb.charAt(i + 1) == ']' && sb.charAt(i + 2) == '>') { + sb.setLength(i); + return sb.toString(); + } + } + } + + + /** + * Get the next XML outer token, trimming whitespace. There are two kinds + * of tokens: the '<' character which begins a markup tag, and the content + * text between markup tags. + * + * @return A string, or a '<' Character, or null if there is no more + * source text. + * @throws JSONException + */ + public Object nextContent() throws JSONException { + char c; + StringBuffer sb; + do { + c = next(); + } while (Character.isWhitespace(c)); + if (c == 0) { + return null; + } + if (c == '<') { + return XML.LT; + } + sb = new StringBuffer(); + for (;;) { + if (c == '<' || c == 0) { + back(); + return sb.toString().trim(); + } + if (c == '&') { + sb.append(nextEntity(c)); + } else { + sb.append(c); + } + c = next(); + } + } + + + /** + * Return the next entity. These entities are translated to Characters: + * & ' > < ". + * @param ampersand An ampersand character. + * @return A Character or an entity String if the entity is not recognized. + * @throws JSONException If missing ';' in XML entity. + */ + public Object nextEntity(char ampersand) throws JSONException { + StringBuffer sb = new StringBuffer(); + for (;;) { + char c = next(); + if (Character.isLetterOrDigit(c) || c == '#') { + sb.append(Character.toLowerCase(c)); + } else if (c == ';') { + break; + } else { + throw syntaxError("Missing ';' in XML entity: &" + sb); + } + } + String string = sb.toString(); + Object object = entity.get(string); + return object != null ? object : ampersand + string + ";"; + } + + + /** + * Returns the next XML meta token. This is used for skipping over + * and structures. + * @return Syntax characters (< > / = ! ?) are returned as + * Character, and strings and names are returned as Boolean. We don't care + * what the values actually are. + * @throws JSONException If a string is not properly closed or if the XML + * is badly structured. + */ + public Object nextMeta() throws JSONException { + char c; + char q; + do { + c = next(); + } while (Character.isWhitespace(c)); + switch (c) { + case 0: + throw syntaxError("Misshaped meta tag"); + case '<': + return XML.LT; + case '>': + return XML.GT; + case '/': + return XML.SLASH; + case '=': + return XML.EQ; + case '!': + return XML.BANG; + case '?': + return XML.QUEST; + case '"': + case '\'': + q = c; + for (;;) { + c = next(); + if (c == 0) { + throw syntaxError("Unterminated string"); + } + if (c == q) { + return Boolean.TRUE; + } + } + default: + for (;;) { + c = next(); + if (Character.isWhitespace(c)) { + return Boolean.TRUE; + } + switch (c) { + case 0: + case '<': + case '>': + case '/': + case '=': + case '!': + case '?': + case '"': + case '\'': + back(); + return Boolean.TRUE; + } + } + } + } + + + /** + * Get the next XML Token. These tokens are found inside of angle + * brackets. It may be one of these characters: / > = ! ? or it + * may be a string wrapped in single quotes or double quotes, or it may be a + * name. + * @return a String or a Character. + * @throws JSONException If the XML is not well formed. + */ + public Object nextToken() throws JSONException { + char c; + char q; + StringBuffer sb; + do { + c = next(); + } while (Character.isWhitespace(c)); + switch (c) { + case 0: + throw syntaxError("Misshaped element"); + case '<': + throw syntaxError("Misplaced '<'"); + case '>': + return XML.GT; + case '/': + return XML.SLASH; + case '=': + return XML.EQ; + case '!': + return XML.BANG; + case '?': + return XML.QUEST; + +// Quoted string + + case '"': + case '\'': + q = c; + sb = new StringBuffer(); + for (;;) { + c = next(); + if (c == 0) { + throw syntaxError("Unterminated string"); + } + if (c == q) { + return sb.toString(); + } + if (c == '&') { + sb.append(nextEntity(c)); + } else { + sb.append(c); + } + } + default: + +// Name + + sb = new StringBuffer(); + for (;;) { + sb.append(c); + c = next(); + if (Character.isWhitespace(c)) { + return sb.toString(); + } + switch (c) { + case 0: + return sb.toString(); + case '>': + case '/': + case '=': + case '!': + case '?': + case '[': + case ']': + back(); + return sb.toString(); + case '<': + case '"': + case '\'': + throw syntaxError("Bad character in a name"); + } + } + } + } + + + /** + * Skip characters until past the requested string. + * If it is not found, we are left at the end of the source with a result of false. + * @param to A string to skip past. + * @throws JSONException + */ + public boolean skipPast(String to) throws JSONException { + boolean b; + char c; + int i; + int j; + int offset = 0; + int length = to.length(); + char[] circle = new char[length]; + + /* + * First fill the circle buffer with as many characters as are in the + * to string. If we reach an early end, bail. + */ + + for (i = 0; i < length; i += 1) { + c = next(); + if (c == 0) { + return false; + } + circle[i] = c; + } + /* + * We will loop, possibly for all of the remaining characters. + */ + for (;;) { + j = offset; + b = true; + /* + * Compare the circle buffer with the to string. + */ + for (i = 0; i < length; i += 1) { + if (circle[j] != to.charAt(i)) { + b = false; + break; + } + j += 1; + if (j >= length) { + j -= length; + } + } + /* + * If we exit the loop with b intact, then victory is ours. + */ + if (b) { + return true; + } + /* + * Get the next character. If there isn't one, then defeat is ours. + */ + c = next(); + if (c == 0) { + return false; + } + /* + * Shove the character in the circle buffer and advance the + * circle offset. The offset is mod n. + */ + circle[offset] = c; + offset += 1; + if (offset >= length) { + offset -= length; + } + } + } +} From 95bbe40929c356536f4623536b02f451be7d0370 Mon Sep 17 00:00:00 2001 From: agoransson Date: Tue, 21 Feb 2012 11:36:03 +0100 Subject: [PATCH 10/38] Updated weather example. --- .../reading_yahoo_weather.pde | Bin 1033 -> 1041 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/examples/reading_yahoo_weather/reading_yahoo_weather.pde index 4b72bcceae5d2d79dd44352d708466c2dec9ea4e..e038158067e42896feddb727c2a7cefb3a5fbbe5 100644 GIT binary patch delta 58 zcmeC=n8-0<8)N>&op#bGsb#4-`30#(dX Date: Sun, 26 Feb 2012 10:47:11 +0100 Subject: [PATCH 11/38] I really do hate git index errors... Signed-off-by: Andreas Gransson --- .../download/json4processing-0.1.2.zip | Bin 165524 -> 165232 bytes .../reading_yahoo_weather.pde | Bin 1035 -> 1006 bytes distribution/json4processing-0.1.2/index.html | 8 ++++---- .../reference/allclasses-frame.html | 4 ++-- .../reference/allclasses-noframe.html | 4 ++-- .../reference/constant-values.html | 6 +++--- .../reference/deprecated-list.html | 6 +++--- .../reference/help-doc.html | 6 +++--- .../reference/index-all.html | 12 +++++++++--- .../reference/index.html | 2 +- .../reference/org/json/CDL.html | 6 +++--- .../reference/org/json/Cookie.html | 6 +++--- .../reference/org/json/CookieList.html | 6 +++--- .../reference/org/json/HTTP.html | 6 +++--- .../reference/org/json/HTTPTokener.html | 6 +++--- .../reference/org/json/JSONArray.html | 6 +++--- .../reference/org/json/JSONException.html | 6 +++--- .../reference/org/json/JSONML.html | 6 +++--- .../reference/org/json/JSONObject.html | 6 +++--- .../reference/org/json/JSONString.html | 6 +++--- .../reference/org/json/JSONStringer.html | 6 +++--- .../reference/org/json/JSONTokener.html | 6 +++--- .../reference/org/json/JSONWriter.html | 6 +++--- .../reference/org/json/XML.html | 14 ++++++++++---- .../reference/org/json/XMLTokener.html | 6 +++--- .../reference/org/json/package-frame.html | 4 ++-- .../reference/org/json/package-summary.html | 6 +++--- .../reference/org/json/package-tree.html | 6 +++--- .../reference/overview-tree.html | 6 +++--- .../reference/serialized-form.html | 6 +++--- .../reading_yahoo_weather.pde | Bin 1041 -> 1006 bytes resources/build.properties | 10 +++++----- 32 files changed, 98 insertions(+), 86 deletions(-) diff --git a/distribution/json4processing-0.1.2/download/json4processing-0.1.2.zip b/distribution/json4processing-0.1.2/download/json4processing-0.1.2.zip index d20aa8a780abc149bd99c73ce8a878a96dd04eb1..1eb44cbbe94fbd0e5744451d66a3a09682d39049 100644 GIT binary patch delta 111987 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 z

    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 delta 112169 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 diff --git a/distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/distribution/json4processing-0.1.2/examples/reading_yahoo_weather/reading_yahoo_weather.pde index d7dcc5c3debe51369874d2c6f8bab4db472171d1..89e79d26f5e79ea1f5c08f519d5852c71dda939f 100644 GIT binary patch delta 58 zcmeC?c*j0r8)N>&op#bGsb#4-`30#(dXjson4processing

+ + + + + +
+ +
+

json4processing

+

+ A library by Douglas Crockford (Processing lib by: Andreas Goransson) for the programming environment processing. Last update, 02/21/2012. +

+

+ Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. +

+
+ + + +
+

Download

+

+ Download json4processing version 0.1.2 in + .zip format. +

+

Installation

+

+ Unzip and put the extracted json4processing folder into the libraries folder of your processing sketches. Reference and examples are included in the json4processing folder. +

+
+ + +
+

Keywords ?

+

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

+

Source. The source code of json4processing is available at github, and its repository can be browsed here.

+
+ +
+

Examples

+

Find a list of examples in the current distribution of json4processing, or have a look at them by following the links below.

+ +
+ + +
+

Tested

+

+ + Platform linux + + +
Processing 1.5.1 + + +
Dependencies ? +

+
+ + + + + + + + + + + + +
+
+ + +
- - - - - -
- -
-

json4p

-

- A library by Andreas Göransson for the programming environment processing. Last update, 11/16/2011. -

-

- Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. -

-
- - - -
-

Download

-

- Download json4p version 0.1.1 in - .zip format. -

-

Installation

-

- Unzip and put the extracted json4p folder into the libraries folder of your processing sketches. Reference and examples are included in the json4p folder. -

-
- - -
-

Keywords ?

-

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

-

Source. The source code of json4p is available at github, and its repository can be browsed here.

-
- -
-

Examples

-

Find a list of examples in the current distribution of json4p, or have a look at them by following the links below.

- -
- - -
-

Tested

-

- - Platform linux - - -
Processing 1.5.1 - - -
Dependencies ? -

-
- - - - - - - - - - - - -
-
- - -

json4processing

- A library by Douglas Crockford (Processing lib by: Andreas Goransson) for the programming environment processing. Last update, 02/21/2012. + A library by Andreas Goransson for the programming environment processing. Last update, 02/26/2012.

Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. @@ -66,7 +66,7 @@

Installation

Keywords ?

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

-

Source. The source code of json4processing is available at github, and its repository can be browsed here.

+

Source. The source code of json4processing is available at github, and its repository can be browsed here.

@@ -82,7 +82,7 @@

Examples

Tested

- Platform linux + Platform linux, windows
Processing 1.5.1 @@ -125,7 +125,7 @@

demos

diff --git a/distribution/json4processing-0.1.2/reference/allclasses-frame.html b/distribution/json4processing-0.1.2/reference/allclasses-frame.html index ec038728c..ab222b717 100644 --- a/distribution/json4processing-0.1.2/reference/allclasses-frame.html +++ b/distribution/json4processing-0.1.2/reference/allclasses-frame.html @@ -2,12 +2,12 @@ - + All Classes (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.2/reference/allclasses-noframe.html b/distribution/json4processing-0.1.2/reference/allclasses-noframe.html index 50905503e..89c4e6c72 100644 --- a/distribution/json4processing-0.1.2/reference/allclasses-noframe.html +++ b/distribution/json4processing-0.1.2/reference/allclasses-noframe.html @@ -2,12 +2,12 @@ - + All Classes (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.2/reference/constant-values.html b/distribution/json4processing-0.1.2/reference/constant-values.html index aac33871c..de3ba68f6 100644 --- a/distribution/json4processing-0.1.2/reference/constant-values.html +++ b/distribution/json4processing-0.1.2/reference/constant-values.html @@ -2,12 +2,12 @@ - + Constant Field Values (Javadocs: json4processing) - + @@ -165,6 +165,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/deprecated-list.html b/distribution/json4processing-0.1.2/reference/deprecated-list.html index 510d290b5..e9b21cf22 100644 --- a/distribution/json4processing-0.1.2/reference/deprecated-list.html +++ b/distribution/json4processing-0.1.2/reference/deprecated-list.html @@ -2,12 +2,12 @@ - + Deprecated List (Javadocs: json4processing) - + @@ -137,6 +137,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/help-doc.html b/distribution/json4processing-0.1.2/reference/help-doc.html index 0faf47bae..0e1651fd3 100644 --- a/distribution/json4processing-0.1.2/reference/help-doc.html +++ b/distribution/json4processing-0.1.2/reference/help-doc.html @@ -2,12 +2,12 @@ - + API Help (Javadocs: json4processing) - + @@ -204,6 +204,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/index-all.html b/distribution/json4processing-0.1.2/reference/index-all.html index 61b2ba96a..c78247854 100644 --- a/distribution/json4processing-0.1.2/reference/index-all.html +++ b/distribution/json4processing-0.1.2/reference/index-all.html @@ -2,12 +2,12 @@ - + Index (Javadocs: json4processing) - + @@ -162,6 +162,12 @@
escape(String) - Static method in class org.json.XML
Replace special characters with XML escapes: + + & (ampersand) is replaced by &amp; + < (less than) is replaced by &lt; + > (greater than) is replaced by &gt; + " (double quote) is replaced by &quot; +

@@ -888,6 +894,6 @@
-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/index.html b/distribution/json4processing-0.1.2/reference/index.html index 929888420..992cf446d 100644 --- a/distribution/json4processing-0.1.2/reference/index.html +++ b/distribution/json4processing-0.1.2/reference/index.html @@ -2,7 +2,7 @@ - + Javadocs: json4processing diff --git a/distribution/json4processing-0.1.2/reference/org/json/CDL.html b/distribution/json4processing-0.1.2/reference/org/json/CDL.html index 517ce8d03..96840f26e 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/CDL.html +++ b/distribution/json4processing-0.1.2/reference/org/json/CDL.html @@ -2,12 +2,12 @@ - + CDL (Javadocs: json4processing) - + @@ -495,6 +495,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/Cookie.html b/distribution/json4processing-0.1.2/reference/org/json/Cookie.html index 50f1f9804..16df40d95 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/Cookie.html +++ b/distribution/json4processing-0.1.2/reference/org/json/Cookie.html @@ -2,12 +2,12 @@ - + Cookie (Javadocs: json4processing) - + @@ -352,6 +352,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/CookieList.html b/distribution/json4processing-0.1.2/reference/org/json/CookieList.html index 84e0f4aac..c64750af3 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/CookieList.html +++ b/distribution/json4processing-0.1.2/reference/org/json/CookieList.html @@ -2,12 +2,12 @@ - + CookieList (Javadocs: json4processing) - + @@ -292,6 +292,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/HTTP.html b/distribution/json4processing-0.1.2/reference/org/json/HTTP.html index fb9834c18..51571b931 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/HTTP.html +++ b/distribution/json4processing-0.1.2/reference/org/json/HTTP.html @@ -2,12 +2,12 @@ - + HTTP (Javadocs: json4processing) - + @@ -360,6 +360,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html index 1bd6d20d8..627371759 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html +++ b/distribution/json4processing-0.1.2/reference/org/json/HTTPTokener.html @@ -2,12 +2,12 @@ - + HTTPTokener (Javadocs: json4processing) - + @@ -272,6 +272,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html index 5fa16ec43..f0c14e11d 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONArray.html @@ -2,12 +2,12 @@ - + JSONArray (Javadocs: json4processing) - + @@ -1458,6 +1458,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONException.html b/distribution/json4processing-0.1.2/reference/org/json/JSONException.html index ef7220a8c..9b9dbd53c 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONException.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONException.html @@ -2,12 +2,12 @@ - + JSONException (Javadocs: json4processing) - + @@ -286,6 +286,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONML.html b/distribution/json4processing-0.1.2/reference/org/json/JSONML.html index ef602b3a5..5f694a629 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONML.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONML.html @@ -2,12 +2,12 @@ - + JSONML (Javadocs: json4processing) - + @@ -417,6 +417,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html index 6226ac6af..277c140e7 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONObject.html @@ -2,12 +2,12 @@ - + JSONObject (Javadocs: json4processing) - + @@ -1842,6 +1842,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONString.html b/distribution/json4processing-0.1.2/reference/org/json/JSONString.html index 8badc4029..e31edadc4 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONString.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONString.html @@ -2,12 +2,12 @@ - + JSONString (Javadocs: json4processing) - + @@ -211,6 +211,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html index f1edc8a45..99e698b31 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONStringer.html @@ -2,12 +2,12 @@ - + JSONStringer (Javadocs: json4processing) - + @@ -298,6 +298,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html index 9a497b3f4..828ef2bb0 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONTokener.html @@ -2,12 +2,12 @@ - + JSONTokener (Javadocs: json4processing) - + @@ -662,6 +662,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html index 944f264f0..97183a3f6 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html +++ b/distribution/json4processing-0.1.2/reference/org/json/JSONWriter.html @@ -2,12 +2,12 @@ - + JSONWriter (Javadocs: json4processing) - + @@ -501,6 +501,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/XML.html b/distribution/json4processing-0.1.2/reference/org/json/XML.html index e08a917b1..37862da89 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/XML.html +++ b/distribution/json4processing-0.1.2/reference/org/json/XML.html @@ -2,12 +2,12 @@ - + XML (Javadocs: json4processing) - + @@ -223,7 +223,13 @@

escape(java.lang.String string)
-          Replace special characters with XML escapes: +          Replace special characters with XML escapes: + + & (ampersand) is replaced by &amp; + < (less than) is replaced by &lt; + > (greater than) is replaced by &gt; + " (double quote) is replaced by &quot; + @@ -596,6 +602,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html index d3c1ab07d..9c6cb3b7e 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html +++ b/distribution/json4processing-0.1.2/reference/org/json/XMLTokener.html @@ -2,12 +2,12 @@ - + XMLTokener (Javadocs: json4processing) - + @@ -447,6 +447,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-frame.html b/distribution/json4processing-0.1.2/reference/org/json/package-frame.html index af16f857e..0a8f67f36 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/package-frame.html +++ b/distribution/json4processing-0.1.2/reference/org/json/package-frame.html @@ -2,12 +2,12 @@ - + org.json (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-summary.html b/distribution/json4processing-0.1.2/reference/org/json/package-summary.html index 2ab4a2c0a..2575ca047 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/package-summary.html +++ b/distribution/json4processing-0.1.2/reference/org/json/package-summary.html @@ -2,12 +2,12 @@ - + org.json (Javadocs: json4processing) - + @@ -234,6 +234,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/org/json/package-tree.html b/distribution/json4processing-0.1.2/reference/org/json/package-tree.html index bdf8664e8..abc1551e9 100644 --- a/distribution/json4processing-0.1.2/reference/org/json/package-tree.html +++ b/distribution/json4processing-0.1.2/reference/org/json/package-tree.html @@ -2,12 +2,12 @@ - + org.json Class Hierarchy (Javadocs: json4processing) - + @@ -155,6 +155,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/overview-tree.html b/distribution/json4processing-0.1.2/reference/overview-tree.html index 3e3de0789..f00aed72a 100644 --- a/distribution/json4processing-0.1.2/reference/overview-tree.html +++ b/distribution/json4processing-0.1.2/reference/overview-tree.html @@ -2,12 +2,12 @@ - + Class Hierarchy (Javadocs: json4processing) - + @@ -157,6 +157,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/distribution/json4processing-0.1.2/reference/serialized-form.html b/distribution/json4processing-0.1.2/reference/serialized-form.html index e322bcc6b..cf93cea38 100644 --- a/distribution/json4processing-0.1.2/reference/serialized-form.html +++ b/distribution/json4processing-0.1.2/reference/serialized-form.html @@ -2,12 +2,12 @@ - + Serialized Form (Javadocs: json4processing) - + @@ -173,6 +173,6 @@


-processing library json4processing by Douglas Crockford (Processing lib by: Andreas Goransson). (c) 2011 +processing library json4processing by Andreas Goransson. (c) 2011 diff --git a/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/examples/reading_yahoo_weather/reading_yahoo_weather.pde index e038158067e42896feddb727c2a7cefb3a5fbbe5..89e79d26f5e79ea1f5c08f519d5852c71dda939f 100644 GIT binary patch delta 7 OcmbQp@s54NJ7xe3-vclJ delta 43 bcmaFIK9OU?J7#4DoFK7WLsOxetCkA@k{|`B diff --git a/resources/build.properties b/resources/build.properties index c7c39735a..cb1cd53c9 100644 --- a/resources/build.properties +++ b/resources/build.properties @@ -31,7 +31,7 @@ sketchbook.location=${user.home}/Documents/Processing # (make adjustments below) #classpath.local.location=/media/Contents/workspace_projects/libs -classpath.local.location=E:/workspace_projects/libs +classpath.local.location=${user.home}/workspace/libs @@ -102,17 +102,17 @@ project.copyright=(c) 2011 project.dependencies=? project.keywords=? -author.name=Douglas Crockford (Processing lib by: Andreas Goransson) +author.name=Andreas Goransson author.url= -tested.platform=linux +tested.platform=linux, windows tested.processingversion=1.5.1 # recommendations for storing your source code online are: code.google or github. source.host=github -source.url=https://github.com/agoransson/json4p -source.repository=https://github.com/agoransson/json4p +source.url=https://github.com/agoransson/JSON-processing +source.repository=https://github.com/agoransson/JSON-processing # include javadoc references into your project's javadoc From 3fe6da23ebbed9346f89e209bd1cc71cdeb06a9f Mon Sep 17 00:00:00 2001 From: agoransson Date: Sat, 3 Mar 2012 10:33:53 +0100 Subject: [PATCH 12/38] Added example to create json object from string. Signed-off-by: agoransson --- .../create_jsonobject_from_string.pde | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 examples/create_jsonobject_from_string/create_jsonobject_from_string.pde diff --git a/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde b/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde new file mode 100644 index 000000000..a47352f0a --- /dev/null +++ b/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde @@ -0,0 +1,20 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object from a json string + */ + +import org.json.*; + +void setup(){ + + // 1. Get the json-string (we'll just create one...) + String jsonstring = "{\"myIntegerValue\":7}"; + + // 2. Initialize the object + JSONObject myJsonObject = new JSONObject(jsonstring); + + println( myJsonObject ); +} + +void draw(){ +} \ No newline at end of file From 9cde9ecb9a9cfe704448f1039f58e434690f069f Mon Sep 17 00:00:00 2001 From: agoransson Date: Sat, 31 Mar 2012 13:03:22 +0200 Subject: [PATCH 13/38] Added a new example parsing HTTP header. Removed the requirement for exception handling in HTTP.java. Signed-off-by: agoransson --- .../download/json4processing-0.1.3.zip | Bin 0 -> 167493 bytes .../create_jsonarray/create_jsonarray.pde | 23 + .../create_jsonarray_of_objects.pde | 31 + .../create_jsonobject/create_jsonobject.pde | 22 + .../create_jsonobject_from_httpheader.pde | 57 + .../create_jsonobject_from_string.pde | 20 + .../reading_yahoo_weather.pde | 37 + distribution/json4processing-0.1.3/index.html | 132 ++ .../reference/allclasses-frame.html | 59 + .../reference/allclasses-noframe.html | 59 + .../reference/constant-values.html | 170 ++ .../reference/deprecated-list.html | 142 ++ .../reference/help-doc.html | 209 ++ .../reference/index-all.html | 899 ++++++++ .../reference/index.html | 36 + .../reference/org/json/CDL.html | 500 +++++ .../reference/org/json/Cookie.html | 357 ++++ .../reference/org/json/CookieList.html | 297 +++ .../reference/org/json/HTTP.html | 363 ++++ .../reference/org/json/HTTPTokener.html | 277 +++ .../reference/org/json/JSONArray.html | 1463 +++++++++++++ .../reference/org/json/JSONException.html | 291 +++ .../reference/org/json/JSONML.html | 422 ++++ .../reference/org/json/JSONObject.html | 1847 +++++++++++++++++ .../reference/org/json/JSONString.html | 216 ++ .../reference/org/json/JSONStringer.html | 303 +++ .../reference/org/json/JSONTokener.html | 667 ++++++ .../reference/org/json/JSONWriter.html | 506 +++++ .../reference/org/json/XML.html | 607 ++++++ .../reference/org/json/XMLTokener.html | 452 ++++ .../reference/org/json/package-frame.html | 78 + .../reference/org/json/package-summary.html | 239 +++ .../reference/org/json/package-tree.html | 160 ++ .../reference/overview-tree.html | 162 ++ .../reference/package-list | 1 + .../reference/resources/inherit.gif | Bin 0 -> 57 bytes .../reference/serialized-form.html | 178 ++ .../reference/stylesheet.css | 310 +++ .../json4processing-0.1.3/stylesheet.css | 203 ++ .../create_jsonobject_from_httpheader.pde | 57 + resources/build.properties | 2 +- src/org/json/HTTP.java | 81 +- 42 files changed, 11899 insertions(+), 36 deletions(-) create mode 100644 distribution/json4processing-0.1.3/download/json4processing-0.1.3.zip create mode 100644 distribution/json4processing-0.1.3/examples/create_jsonarray/create_jsonarray.pde create mode 100644 distribution/json4processing-0.1.3/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.3/examples/create_jsonobject/create_jsonobject.pde create mode 100644 distribution/json4processing-0.1.3/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde create mode 100644 distribution/json4processing-0.1.3/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde create mode 100644 distribution/json4processing-0.1.3/examples/reading_yahoo_weather/reading_yahoo_weather.pde create mode 100644 distribution/json4processing-0.1.3/index.html create mode 100644 distribution/json4processing-0.1.3/reference/allclasses-frame.html create mode 100644 distribution/json4processing-0.1.3/reference/allclasses-noframe.html create mode 100644 distribution/json4processing-0.1.3/reference/constant-values.html create mode 100644 distribution/json4processing-0.1.3/reference/deprecated-list.html create mode 100644 distribution/json4processing-0.1.3/reference/help-doc.html create mode 100644 distribution/json4processing-0.1.3/reference/index-all.html create mode 100644 distribution/json4processing-0.1.3/reference/index.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/CDL.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/Cookie.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/CookieList.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/HTTP.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/HTTPTokener.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONArray.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONException.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONML.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONObject.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONString.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONStringer.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONTokener.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/JSONWriter.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/XML.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/XMLTokener.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/package-frame.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/package-summary.html create mode 100644 distribution/json4processing-0.1.3/reference/org/json/package-tree.html create mode 100644 distribution/json4processing-0.1.3/reference/overview-tree.html create mode 100644 distribution/json4processing-0.1.3/reference/package-list create mode 100644 distribution/json4processing-0.1.3/reference/resources/inherit.gif create mode 100644 distribution/json4processing-0.1.3/reference/serialized-form.html create mode 100644 distribution/json4processing-0.1.3/reference/stylesheet.css create mode 100644 distribution/json4processing-0.1.3/stylesheet.css create mode 100644 examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde diff --git a/distribution/json4processing-0.1.3/download/json4processing-0.1.3.zip b/distribution/json4processing-0.1.3/download/json4processing-0.1.3.zip new file mode 100644 index 0000000000000000000000000000000000000000..4ac13a2d9a0dc73120b0fdd44469e8862e15334b GIT binary patch literal 167493 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 literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.3/examples/create_jsonarray/create_jsonarray.pde b/distribution/json4processing-0.1.3/examples/create_jsonarray/create_jsonarray.pde new file mode 100644 index 000000000..93bd2c04f --- /dev/null +++ b/distribution/json4processing-0.1.3/examples/create_jsonarray/create_jsonarray.pde @@ -0,0 +1,23 @@ +/* + * JSON 4 Processing + * Basic example 2: Creating a JSON Array + * + * Good for sending a large set of primitive values, like sensor readings. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonArray = new JSONArray(); + + // 2. Add some content to the array + myJsonArray.put( 4 ); + myJsonArray.put( 2 ); + + println( myJsonArray ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.3/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde b/distribution/json4processing-0.1.3/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde new file mode 100644 index 000000000..4d6567c5e --- /dev/null +++ b/distribution/json4processing-0.1.3/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde @@ -0,0 +1,31 @@ +/* + * JSON 4 Processing + * Basic example 3: Creating a JSON Array of JSON Objects. + * + * Good for sending multiple complex values, such as database tables. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonUsers = new JSONArray(); + + // 2. Create the first object & add to array + JSONObject firstUser = new JSONObject(); + firstUser.put( "name", "Andreas" ); + firstUser.put( "age", 32 ); + myJsonUsers.put( firstUser ); + + // 3. Create the second object + JSONObject secondUser = new JSONObject(); + secondUser.put( "name", "Maria" ); + secondUser.put( "age", 28 ); + myJsonUsers.put( secondUser ); + + println( myJsonUsers ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.3/examples/create_jsonobject/create_jsonobject.pde b/distribution/json4processing-0.1.3/examples/create_jsonobject/create_jsonobject.pde new file mode 100644 index 000000000..ba13b64f3 --- /dev/null +++ b/distribution/json4processing-0.1.3/examples/create_jsonobject/create_jsonobject.pde @@ -0,0 +1,22 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object + * + * Good for sending values that has a specific meaning (complex values) + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the object + JSONObject myJsonObject = new JSONObject(); + + // 2. Add some content to the object + myJsonObject.put( "myIntegerValue", 7 ); + + println( myJsonObject ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.3/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde b/distribution/json4processing-0.1.3/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde new file mode 100644 index 000000000..32041620c --- /dev/null +++ b/distribution/json4processing-0.1.3/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde @@ -0,0 +1,57 @@ +/* + * JSON 4 Processing + * Basic example 5: Parsing the HTTP header from www.processing.org + * + * This example creates a JSONObject from the HTTP response when + * contacting a website (www.processing.org). + */ +import org.json.*; +import java.net.URL; +import java.net.URLConnection; + +URL url; +URLConnection conn; + +void setup() { + // Unfortunately there's a problem in the Processing Client implementation + // that forces us to use straight Java. + try { + url = new URL("http://www.processing.org"); + conn = url.openConnection(); + } + catch( Exception e) { + } + + // We will manually add the entire HTTP reponse to this StringBuffer + // and create the JSONObject using it. + StringBuffer sb = new StringBuffer(); + + // Construct the String object using the URLConnection. + for (int i = 0;; i++) { + String name = conn.getHeaderFieldKey(i); + String value = conn.getHeaderField(i); + if (name == null && value == null) { + break; + } + if (name == null) { + // Add the value, if there is no key-value pair. + sb.append(value).append("\n"); + } + else { + // Add the key-value pair. + sb.append(name).append(":").append(value).append("\n"); + } + } + + // Create the JSON HTTP instance + HTTP http = new HTTP(); + + // Create the JSONObject using the HTTP instance + JSONObject obj = http.toJSONObject(sb.toString()); + + // Print the JSONObject + System.out.println(obj); +} +void draw() { +} + diff --git a/distribution/json4processing-0.1.3/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde b/distribution/json4processing-0.1.3/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde new file mode 100644 index 000000000..a47352f0a --- /dev/null +++ b/distribution/json4processing-0.1.3/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde @@ -0,0 +1,20 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object from a json string + */ + +import org.json.*; + +void setup(){ + + // 1. Get the json-string (we'll just create one...) + String jsonstring = "{\"myIntegerValue\":7}"; + + // 2. Initialize the object + JSONObject myJsonObject = new JSONObject(jsonstring); + + println( myJsonObject ); +} + +void draw(){ +} \ No newline at end of file diff --git a/distribution/json4processing-0.1.3/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/distribution/json4processing-0.1.3/examples/reading_yahoo_weather/reading_yahoo_weather.pde new file mode 100644 index 000000000..89e79d26f --- /dev/null +++ b/distribution/json4processing-0.1.3/examples/reading_yahoo_weather/reading_yahoo_weather.pde @@ -0,0 +1,37 @@ +/* + * JSON 4 Processing + * Basic example 4: Reading data from the web (Yahoo weather) + * + * This example reads the Weather feed from the Yahoo API's. It's using + * the WOEID for Malmo, you can change this by finding the ID you want + * at http://developer.yahoo.com/weather/ + */ + +import org.json.*; + +void setup() { + // Accessing the weather service + String BASE_URL = "http://weather.yahooapis.com/forecastjson?w="; + String WOEID = "898091"; + + // Get the JSON formatted response + String response = loadStrings( BASE_URL + WOEID )[0]; + + // Make sure we got a response. + if ( response != null ) { + // Initialize the JSONObject for the response + JSONObject root = new JSONObject( response ); + + // Get the "condition" JSONObject + JSONObject condition = root.getJSONObject("condition"); + + // Get the "temperature" value from the condition object + int temperature = condition.getInt("temperature"); + + // Print the temperature + println( temperature ); + } +} + +void draw() { +} diff --git a/distribution/json4processing-0.1.3/index.html b/distribution/json4processing-0.1.3/index.html new file mode 100644 index 000000000..82c8085ec --- /dev/null +++ b/distribution/json4processing-0.1.3/index.html @@ -0,0 +1,132 @@ + + + +json4processing + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/json4processing-0.1.3/reference/allclasses-frame.html b/distribution/json4processing-0.1.3/reference/allclasses-frame.html new file mode 100644 index 000000000..d0d9b5421 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/allclasses-frame.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Javadocs: json4processing) + + + + + + + + + + + +All Classes +
+ + + + + +
CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONException +
+JSONML +
+JSONObject +
+JSONString +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener +
+
+ + + diff --git a/distribution/json4processing-0.1.3/reference/allclasses-noframe.html b/distribution/json4processing-0.1.3/reference/allclasses-noframe.html new file mode 100644 index 000000000..3d344817e --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/allclasses-noframe.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Javadocs: json4processing) + + + + + + + + + + + +All Classes +
+ + + + + +
CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONException +
+JSONML +
+JSONObject +
+JSONString +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener +
+
+ + + diff --git a/distribution/json4processing-0.1.3/reference/constant-values.html b/distribution/json4processing-0.1.3/reference/constant-values.html new file mode 100644 index 000000000..9049c118b --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/constant-values.html @@ -0,0 +1,170 @@ + + + + + + +Constant Field Values (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.json.*
+ +

+ + + + + + + + + + + + +
org.json.HTTP
+public static final java.lang.StringCRLF"\r\n"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/deprecated-list.html b/distribution/json4processing-0.1.3/reference/deprecated-list.html new file mode 100644 index 000000000..14acd54f1 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/deprecated-list.html @@ -0,0 +1,142 @@ + + + + + + +Deprecated List (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/help-doc.html b/distribution/json4processing-0.1.3/reference/help-doc.html new file mode 100644 index 000000000..4355fa00f --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/help-doc.html @@ -0,0 +1,209 @@ + + + + + + +API Help (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/index-all.html b/distribution/json4processing-0.1.3/reference/index-all.html new file mode 100644 index 000000000..ba1661100 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/index-all.html @@ -0,0 +1,899 @@ + + + + + + +Index (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A B C D E G H I J K L M N O P Q R S T U V W X
+

+A

+
+
accumulate(String, Object) - +Method in class org.json.JSONObject +
Accumulate values under a key. +
AMP - +Static variable in class org.json.XML +
The Character '&'. +
APOS - +Static variable in class org.json.XML +
The Character '''. +
append(String, Object) - +Method in class org.json.JSONObject +
Append values to the array under a key. +
array() - +Method in class org.json.JSONWriter +
Begin appending a new array. +
+
+

+B

+
+
back() - +Method in class org.json.JSONTokener +
Back up one character. +
BANG - +Static variable in class org.json.XML +
The Character '!'. +
+
+

+C

+
+
CDL - Class in org.json
This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CDL() - +Constructor for class org.json.CDL +
  +
Cookie - Class in org.json
Convert a web browser cookie specification to a JSONObject and back.
Cookie() - +Constructor for class org.json.Cookie +
  +
CookieList - Class in org.json
Convert a web browser cookie list string to a JSONObject and back.
CookieList() - +Constructor for class org.json.CookieList +
  +
CRLF - +Static variable in class org.json.HTTP +
Carriage return/line feed. +
+
+

+D

+
+
dehexchar(char) - +Static method in class org.json.JSONTokener +
Get the hex value of a character (base16). +
doubleToString(double) - +Static method in class org.json.JSONObject +
Produce a string from a double. +
+
+

+E

+
+
end() - +Method in class org.json.JSONTokener +
  +
endArray() - +Method in class org.json.JSONWriter +
End an array. +
endObject() - +Method in class org.json.JSONWriter +
End an object. +
entity - +Static variable in class org.json.XMLTokener +
The table of entity values. +
EQ - +Static variable in class org.json.XML +
The Character '='. +
escape(String) - +Static method in class org.json.Cookie +
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". +
escape(String) - +Static method in class org.json.XML +
Replace special characters with XML escapes: + + & (ampersand) is replaced by &amp; + < (less than) is replaced by &lt; + > (greater than) is replaced by &gt; + " (double quote) is replaced by &quot; + +
+
+

+G

+
+
get(int) - +Method in class org.json.JSONArray +
Get the object value associated with an index. +
get(String) - +Method in class org.json.JSONObject +
Get the value object associated with a key. +
getBoolean(int) - +Method in class org.json.JSONArray +
Get the boolean value associated with an index. +
getBoolean(String) - +Method in class org.json.JSONObject +
Get the boolean value associated with a key. +
getCause() - +Method in exception org.json.JSONException +
  +
getDouble(int) - +Method in class org.json.JSONArray +
Get the double value associated with an index. +
getDouble(String) - +Method in class org.json.JSONObject +
Get the double value associated with a key. +
getInt(int) - +Method in class org.json.JSONArray +
Get the int value associated with an index. +
getInt(String) - +Method in class org.json.JSONObject +
Get the int value associated with a key. +
getJSONArray(int) - +Method in class org.json.JSONArray +
Get the JSONArray associated with an index. +
getJSONArray(String) - +Method in class org.json.JSONObject +
Get the JSONArray value associated with a key. +
getJSONObject(int) - +Method in class org.json.JSONArray +
Get the JSONObject associated with an index. +
getJSONObject(String) - +Method in class org.json.JSONObject +
Get the JSONObject value associated with a key. +
getLong(int) - +Method in class org.json.JSONArray +
Get the long value associated with an index. +
getLong(String) - +Method in class org.json.JSONObject +
Get the long value associated with a key. +
getNames(JSONObject) - +Static method in class org.json.JSONObject +
Get an array of field names from a JSONObject. +
getNames(Object) - +Static method in class org.json.JSONObject +
Get an array of field names from an Object. +
getString(int) - +Method in class org.json.JSONArray +
Get the string associated with an index. +
getString(String) - +Method in class org.json.JSONObject +
Get the string associated with a key. +
GT - +Static variable in class org.json.XML +
The Character '>'. +
+
+

+H

+
+
has(String) - +Method in class org.json.JSONObject +
Determine if the JSONObject contains a specific key. +
HTTP - Class in org.json
Convert an HTTP header to a JSONObject and back.
HTTP() - +Constructor for class org.json.HTTP +
  +
HTTPTokener - Class in org.json
The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
HTTPTokener(String) - +Constructor for class org.json.HTTPTokener +
Construct an HTTPTokener from a string. +
+
+

+I

+
+
increment(String) - +Method in class org.json.JSONObject +
Increment a property of a JSONObject. +
isNull(int) - +Method in class org.json.JSONArray +
Determine if the value is null. +
isNull(String) - +Method in class org.json.JSONObject +
Determine if the value associated with the key is null or if there is no + value. +
+
+

+J

+
+
join(String) - +Method in class org.json.JSONArray +
Make a string from the contents of this JSONArray. +
JSONArray - Class in org.json
A JSONArray is an ordered sequence of values.
JSONArray() - +Constructor for class org.json.JSONArray +
Construct an empty JSONArray. +
JSONArray(JSONTokener) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a JSONTokener. +
JSONArray(String) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a source JSON text. +
JSONArray(Collection) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from a Collection. +
JSONArray(Object) - +Constructor for class org.json.JSONArray +
Construct a JSONArray from an array +
JSONException - Exception in org.json
The JSONException is thrown by the JSON.org classes when things are amiss.
JSONException(String) - +Constructor for exception org.json.JSONException +
Constructs a JSONException with an explanatory message. +
JSONException(Throwable) - +Constructor for exception org.json.JSONException +
  +
JSONML - Class in org.json
This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONML() - +Constructor for class org.json.JSONML +
  +
JSONObject - Class in org.json
A JSONObject is an unordered collection of name/value pairs.
JSONObject() - +Constructor for class org.json.JSONObject +
Construct an empty JSONObject. +
JSONObject(JSONObject, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a subset of another JSONObject. +
JSONObject(JSONTokener) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a JSONTokener. +
JSONObject(Map) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a Map. +
JSONObject(Object) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object using bean getters. +
JSONObject(Object, String[]) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from an Object, using reflection to find the + public members. +
JSONObject(String) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a source JSON text string. +
JSONObject(String, Locale) - +Constructor for class org.json.JSONObject +
Construct a JSONObject from a ResourceBundle. +
JSONString - Interface in org.json
The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
JSONStringer - Class in org.json
JSONStringer provides a quick and convenient way of producing JSON text.
JSONStringer() - +Constructor for class org.json.JSONStringer +
Make a fresh JSONStringer. +
JSONTokener - Class in org.json
A JSONTokener takes a source string and extracts characters and tokens from + it.
JSONTokener(Reader) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a Reader. +
JSONTokener(InputStream) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from an InputStream. +
JSONTokener(String) - +Constructor for class org.json.JSONTokener +
Construct a JSONTokener from a string. +
JSONWriter - Class in org.json
JSONWriter provides a quick and convenient way of producing JSON text.
JSONWriter(Writer) - +Constructor for class org.json.JSONWriter +
Make a fresh JSONWriter. +
+
+

+K

+
+
key(String) - +Method in class org.json.JSONWriter +
Append a key. +
keys() - +Method in class org.json.JSONObject +
Get an enumeration of the keys of the JSONObject. +
+
+

+L

+
+
length() - +Method in class org.json.JSONArray +
Get the number of elements in the JSONArray, included nulls. +
length() - +Method in class org.json.JSONObject +
Get the number of keys stored in the JSONObject. +
LT - +Static variable in class org.json.XML +
The Character '<'. +
+
+

+M

+
+
more() - +Method in class org.json.JSONTokener +
Determine if the source string still contains characters that next() + can consume. +
+
+

+N

+
+
names() - +Method in class org.json.JSONObject +
Produce a JSONArray containing the names of the elements of this + JSONObject. +
next() - +Method in class org.json.JSONTokener +
Get the next character in the source string. +
next(char) - +Method in class org.json.JSONTokener +
Consume the next character, and check that it matches a specified + character. +
next(int) - +Method in class org.json.JSONTokener +
Get the next n characters. +
nextCDATA() - +Method in class org.json.XMLTokener +
Get the text in the CDATA block. +
nextClean() - +Method in class org.json.JSONTokener +
Get the next char in the string, skipping whitespace. +
nextContent() - +Method in class org.json.XMLTokener +
Get the next XML outer token, trimming whitespace. +
nextEntity(char) - +Method in class org.json.XMLTokener +
Return the next entity. +
nextMeta() - +Method in class org.json.XMLTokener +
Returns the next XML meta token. +
nextString(char) - +Method in class org.json.JSONTokener +
Return the characters up to the next close quote character. +
nextTo(char) - +Method in class org.json.JSONTokener +
Get the text up but not including the specified character or the + end of line, whichever comes first. +
nextTo(String) - +Method in class org.json.JSONTokener +
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +
nextToken() - +Method in class org.json.HTTPTokener +
Get the next token or string. +
nextToken() - +Method in class org.json.XMLTokener +
Get the next XML Token. +
nextValue() - +Method in class org.json.JSONTokener +
Get the next value. +
noSpace(String) - +Static method in class org.json.XML +
Throw an exception if the string contains whitespace. +
NULL - +Static variable in class org.json.JSONObject +
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. +
numberToString(Number) - +Static method in class org.json.JSONObject +
Produce a string from a Number. +
+
+

+O

+
+
object() - +Method in class org.json.JSONWriter +
Begin appending a new object. +
opt(int) - +Method in class org.json.JSONArray +
Get the optional object value associated with an index. +
opt(String) - +Method in class org.json.JSONObject +
Get an optional value associated with a key. +
optBoolean(int) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(int, boolean) - +Method in class org.json.JSONArray +
Get the optional boolean value associated with an index. +
optBoolean(String) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optBoolean(String, boolean) - +Method in class org.json.JSONObject +
Get an optional boolean associated with a key. +
optDouble(int) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(int, double) - +Method in class org.json.JSONArray +
Get the optional double value associated with an index. +
optDouble(String) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number. +
optDouble(String, double) - +Method in class org.json.JSONObject +
Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number. +
optInt(int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(int, int) - +Method in class org.json.JSONArray +
Get the optional int value associated with an index. +
optInt(String) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number. +
optInt(String, int) - +Method in class org.json.JSONObject +
Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number. +
optJSONArray(int) - +Method in class org.json.JSONArray +
Get the optional JSONArray associated with an index. +
optJSONArray(String) - +Method in class org.json.JSONObject +
Get an optional JSONArray associated with a key. +
optJSONObject(int) - +Method in class org.json.JSONArray +
Get the optional JSONObject associated with an index. +
optJSONObject(String) - +Method in class org.json.JSONObject +
Get an optional JSONObject associated with a key. +
optLong(int) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(int, long) - +Method in class org.json.JSONArray +
Get the optional long value associated with an index. +
optLong(String) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number. +
optLong(String, long) - +Method in class org.json.JSONObject +
Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number. +
optString(int) - +Method in class org.json.JSONArray +
Get the optional string value associated with an index. +
optString(int, String) - +Method in class org.json.JSONArray +
Get the optional string associated with an index. +
optString(String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
optString(String, String) - +Method in class org.json.JSONObject +
Get an optional string associated with a key. +
org.json - package org.json
 
+
+

+P

+
+
put(boolean) - +Method in class org.json.JSONArray +
Append a boolean value. +
put(Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(double) - +Method in class org.json.JSONArray +
Append a double value. +
put(int) - +Method in class org.json.JSONArray +
Append an int value. +
put(long) - +Method in class org.json.JSONArray +
Append an long value. +
put(Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +
put(Object) - +Method in class org.json.JSONArray +
Append an object value. +
put(int, boolean) - +Method in class org.json.JSONArray +
Put or replace a boolean value in the JSONArray. +
put(int, Collection) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +
put(int, double) - +Method in class org.json.JSONArray +
Put or replace a double value. +
put(int, int) - +Method in class org.json.JSONArray +
Put or replace an int value. +
put(int, long) - +Method in class org.json.JSONArray +
Put or replace a long value. +
put(int, Map) - +Method in class org.json.JSONArray +
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +
put(int, Object) - +Method in class org.json.JSONArray +
Put or replace an object value in the JSONArray. +
put(String, boolean) - +Method in class org.json.JSONObject +
Put a key/boolean pair in the JSONObject. +
put(String, Collection) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +
put(String, double) - +Method in class org.json.JSONObject +
Put a key/double pair in the JSONObject. +
put(String, int) - +Method in class org.json.JSONObject +
Put a key/int pair in the JSONObject. +
put(String, long) - +Method in class org.json.JSONObject +
Put a key/long pair in the JSONObject. +
put(String, Map) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +
put(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject. +
putOnce(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name. +
putOpt(String, Object) - +Method in class org.json.JSONObject +
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null. +
+
+

+Q

+
+
QUEST - +Static variable in class org.json.XML +
The Character '?'. +
QUOT - +Static variable in class org.json.XML +
The Character '"'. +
quote(String) - +Static method in class org.json.JSONObject +
Produce a string in double quotes with backslash sequences in all the + right places. +
+
+

+R

+
+
remove(int) - +Method in class org.json.JSONArray +
Remove an index and close the hole. +
remove(String) - +Method in class org.json.JSONObject +
Remove a name and its value, if present. +
rowToJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of strings from a row of comma delimited values. +
rowToJSONObject(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +
rowToString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text row from a JSONArray. +
+
+

+S

+
+
skipPast(String) - +Method in class org.json.XMLTokener +
Skip characters until past the requested string. +
skipTo(char) - +Method in class org.json.JSONTokener +
Skip characters until the next character is the requested character. +
SLASH - +Static variable in class org.json.XML +
The Character '/'. +
stringToValue(String) - +Static method in class org.json.JSONObject +
Try to convert a string into a number, boolean, or null. +
stringToValue(String) - +Static method in class org.json.XML +
Try to convert a string into a number, boolean, or null. +
syntaxError(String) - +Method in class org.json.JSONTokener +
Make a JSONException to signal a syntax error. +
+
+

+T

+
+
testValidity(Object) - +Static method in class org.json.JSONObject +
Throw an exception if the object is a NaN or infinite number. +
toJSONArray(String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +
toJSONArray(JSONArray, String) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(JSONArray, JSONTokener) - +Static method in class org.json.CDL +
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +
toJSONArray(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. +
toJSONArray(JSONArray) - +Method in class org.json.JSONObject +
Produce a JSONArray containing the values of the members of this + JSONObject. +
toJSONObject(String) - +Static method in class org.json.Cookie +
Convert a cookie specification string into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.CookieList +
Convert a cookie list into a JSONObject. +
toJSONObject(String) - +Static method in class org.json.HTTP +
Convert an HTTP header string into a JSONObject. +
toJSONObject(JSONArray) - +Method in class org.json.JSONArray +
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +
toJSONObject(XMLTokener) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.JSONML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. +
toJSONObject(String) - +Static method in class org.json.XML +
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. +
toJSONString() - +Method in interface org.json.JSONString +
The toJSONString method allows a class to produce its own JSON + serialization. +
toString(JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects. +
toString(JSONArray, JSONArray) - +Static method in class org.json.CDL +
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. +
toString(JSONObject) - +Static method in class org.json.Cookie +
Convert a JSONObject into a cookie specification string. +
toString(JSONObject) - +Static method in class org.json.CookieList +
Convert a JSONObject into a cookie list. +
toString(JSONObject) - +Static method in class org.json.HTTP +
Convert a JSONObject into an HTTP header. +
toString() - +Method in class org.json.JSONArray +
Make a JSON text of this JSONArray. +
toString(int) - +Method in class org.json.JSONArray +
Make a prettyprinted JSON text of this JSONArray. +
toString(JSONArray) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONArray. +
toString(JSONObject) - +Static method in class org.json.JSONML +
Reverse the JSONML transformation, making an XML text from a JSONObject. +
toString() - +Method in class org.json.JSONObject +
Make a JSON text of this JSONObject. +
toString(int) - +Method in class org.json.JSONObject +
Make a prettyprinted JSON text of this JSONObject. +
toString() - +Method in class org.json.JSONStringer +
Return the JSON text. +
toString() - +Method in class org.json.JSONTokener +
Make a printable string of this JSONTokener. +
toString(Object) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
toString(Object, String) - +Static method in class org.json.XML +
Convert a JSONObject into a well-formed, element-normal XML string. +
+
+

+U

+
+
unescape(String) - +Static method in class org.json.Cookie +
Convert %hh sequences to single characters, and + convert plus to space. +
+
+

+V

+
+
value(boolean) - +Method in class org.json.JSONWriter +
Append either the value true or the value + false. +
value(double) - +Method in class org.json.JSONWriter +
Append a double value. +
value(long) - +Method in class org.json.JSONWriter +
Append a long value. +
value(Object) - +Method in class org.json.JSONWriter +
Append an object value. +
valueToString(Object) - +Static method in class org.json.JSONObject +
Make a JSON text of an Object value. +
+
+

+W

+
+
wrap(Object) - +Static method in class org.json.JSONObject +
Wrap an object, if necessary. +
write(Writer) - +Method in class org.json.JSONArray +
Write the contents of the JSONArray as JSON text to a writer. +
write(Writer) - +Method in class org.json.JSONObject +
Write the contents of the JSONObject as JSON text to a writer. +
+
+

+X

+
+
XML - Class in org.json
This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XML() - +Constructor for class org.json.XML +
  +
XMLTokener - Class in org.json
The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
XMLTokener(String) - +Constructor for class org.json.XMLTokener +
Construct an XMLTokener from a string. +
+
+A B C D E G H I J K L M N O P Q R S T U V W X + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/index.html b/distribution/json4processing-0.1.3/reference/index.html new file mode 100644 index 000000000..2c2d1bebd --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/index.html @@ -0,0 +1,36 @@ + + + + + + +Javadocs: json4processing + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="org/json/package-summary.html">Non-frame version.</A> + + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/CDL.html b/distribution/json4processing-0.1.3/reference/org/json/CDL.html new file mode 100644 index 000000000..42c2ad5b4 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/CDL.html @@ -0,0 +1,500 @@ + + + + + + +CDL (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CDL

+
+java.lang.Object
+  extended by org.json.CDL
+
+
+
+
public class CDL
extends java.lang.Object
+ + +

+This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text. Comma + delimited text is a very popular format for data interchange. It is + understood by most database, spreadsheet, and organizer programs. +

+ Each row of text represents a row in a table or a data record. Each row + ends with a NEWLINE character. Each row contains one or more values. + Values are separated by commas. A value can contain any character except + for comma, unless is is wrapped in single quotes or double quotes. +

+ The first row usually contains the names of the columns. +

+ A comma delimited list can be converted into a JSONArray of JSONObjects. + The names for the elements in the JSONObjects can be taken from the names + in the first row. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CDL() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArrayrowToJSONArray(JSONTokener x) + +
+          Produce a JSONArray of strings from a row of comma delimited values.
+static JSONObjectrowToJSONObject(JSONArray names, + JSONTokener x) + +
+          Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
+static java.lang.StringrowToString(JSONArray ja) + +
+          Produce a comma delimited text row from a JSONArray.
+static JSONArraytoJSONArray(JSONArray names, + JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONArray names, + java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+static JSONArraytoJSONArray(JSONTokener x) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+static java.lang.StringtoString(JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects.
+static java.lang.StringtoString(JSONArray names, + JSONArray ja) + +
+          Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CDL

+
+public CDL()
+
+
+ + + + + + + + +
+Method Detail
+ +

+rowToJSONArray

+
+public static JSONArray rowToJSONArray(JSONTokener x)
+                                throws JSONException
+
+
Produce a JSONArray of strings from a row of comma delimited values. +

+

+
Parameters:
x - A JSONTokener of the source text. +
Returns:
A JSONArray of strings. +
Throws: +
JSONException
+
+
+
+ +

+rowToJSONObject

+
+public static JSONObject rowToJSONObject(JSONArray names,
+                                         JSONTokener x)
+                                  throws JSONException
+
+
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements. +

+

+
Parameters:
names - A JSONArray of names. This is commonly obtained from the + first row of a comma delimited text file using the rowToJSONArray + method.
x - A JSONTokener of the source text. +
Returns:
A JSONObject combining the names and values. +
Throws: +
JSONException
+
+
+
+ +

+rowToString

+
+public static java.lang.String rowToString(JSONArray ja)
+
+
Produce a comma delimited text row from a JSONArray. Values containing + the comma character will be quoted. Troublesome characters may be + removed. +

+

+
Parameters:
ja - A JSONArray of strings. +
Returns:
A string ending in NEWLINE.
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names. +

+

+
Parameters:
x - The JSONTokener containing the comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    java.lang.String string)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
string - The comma delimited text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(JSONArray names,
+                                    JSONTokener x)
+                             throws JSONException
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names. +

+

+
Parameters:
names - A JSONArray of strings.
x - A JSONTokener of the source text. +
Returns:
A JSONArray of JSONObjects. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects. The + first row will be a list of names obtained by inspecting the first + JSONObject. +

+

+
Parameters:
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray names,
+                                        JSONArray ja)
+                                 throws JSONException
+
+
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. The list of names is not included in the + output. +

+

+
Parameters:
names - A JSONArray of strings.
ja - A JSONArray of JSONObjects. +
Returns:
A comma delimited text. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/Cookie.html b/distribution/json4processing-0.1.3/reference/org/json/Cookie.html new file mode 100644 index 000000000..b28d66d7c --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/Cookie.html @@ -0,0 +1,357 @@ + + + + + + +Cookie (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class Cookie

+
+java.lang.Object
+  extended by org.json.Cookie
+
+
+
+
public class Cookie
extends java.lang.Object
+ + +

+Convert a web browser cookie specification to a JSONObject and back. + JSON and Cookies are both notations for name/value pairs. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
Cookie() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie specification string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie specification string.
+static java.lang.Stringunescape(java.lang.String string) + +
+          Convert %hh sequences to single characters, and + convert plus to space.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Cookie

+
+public Cookie()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". This is a gentle form + of URL encoding, attempting to cause as little distortion to the + string as possible. The characters '=' and ';' are meta characters in + cookies. By convention, they are escaped using the URL-encoding. This is + only a convention, not a standard. Often, cookies are expected to have + encoded values. We encode '=' and ';' because we must. We encode '%' and + '+' because they are meta characters in URL encoding. +

+

+
Parameters:
string - The source string. +
Returns:
The escaped result.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie specification string into a JSONObject. The string + will contain a name value pair separated by '='. The name and the value + will be unescaped, possibly converting '+' and '%' sequences. The + cookie properties may follow, separated by ';', also represented as + name=value (except the secure property, which does not have a value). + The name will be stored under the key "name", and the value will be + stored under the key "value". This method does not do checking or + validation of the parameters. It only converts the cookie string into + a JSONObject. +

+

+
Parameters:
string - The cookie specification string. +
Returns:
A JSONObject containing "name", "value", and possibly other + members. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie specification string. The JSONObject + must contain "name" and "value" members. + If the JSONObject contains "expires", "domain", "path", or "secure" + members, they will be appended to the cookie specification string. + All other members are ignored. +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie specification string +
Throws: +
JSONException
+
+
+
+ +

+unescape

+
+public static java.lang.String unescape(java.lang.String string)
+
+
Convert %hh sequences to single characters, and + convert plus to space. +

+

+
Parameters:
string - A string that may contain + + (plus) and + %hh sequences. +
Returns:
The unescaped string.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/CookieList.html b/distribution/json4processing-0.1.3/reference/org/json/CookieList.html new file mode 100644 index 000000000..1586b5db0 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/CookieList.html @@ -0,0 +1,297 @@ + + + + + + +CookieList (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class CookieList

+
+java.lang.Object
+  extended by org.json.CookieList
+
+
+
+
public class CookieList
extends java.lang.Object
+ + +

+Convert a web browser cookie list string to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CookieList() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a cookie list into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into a cookie list.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CookieList

+
+public CookieList()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a cookie list into a JSONObject. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The names and the values + will be unescaped, possibly converting '+' and '%' sequences. + + To add a cookie to a cooklist, + cookielistJSONObject.put(cookieJSONObject.getString("name"), + cookieJSONObject.getString("value")); +

+

+
Parameters:
string - A cookie list string +
Returns:
A JSONObject +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Convert a JSONObject into a cookie list. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The characters '%', '+', '=', and ';' + in the names and values are replaced by "%hh". +

+

+
Parameters:
jo - A JSONObject +
Returns:
A cookie list string +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/HTTP.html b/distribution/json4processing-0.1.3/reference/org/json/HTTP.html new file mode 100644 index 000000000..f892f1c89 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/HTTP.html @@ -0,0 +1,363 @@ + + + + + + +HTTP (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTP

+
+java.lang.Object
+  extended by org.json.HTTP
+
+
+
+
public class HTTP
extends java.lang.Object
+ + +

+Convert an HTTP header to a JSONObject and back. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.StringCRLF + +
+          Carriage return/line feed.
+  + + + + + + + + + + +
+Constructor Summary
HTTP() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert an HTTP header string into a JSONObject.
+static java.lang.StringtoString(JSONObject jo) + +
+          Convert a JSONObject into an HTTP header.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+CRLF

+
+public static final java.lang.String CRLF
+
+
Carriage return/line feed. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+HTTP

+
+public HTTP()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+
+
Convert an HTTP header string into a JSONObject. It can be a request + header or a response header. A request header will contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header will contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ In addition, the other parameters in the header will be captured, using + the HTTP field names as JSON names, so that
+    Date: Sun, 26 May 2002 18:06:04 GMT
+    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
+    Cache-Control: no-cache
+ become +
{...
+    Date: "Sun, 26 May 2002 18:06:04 GMT",
+    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
+    "Cache-Control": "no-cache",
+ ...}
+ It does no further checking or conversion. It does not parse dates. + It does not do '%' transforms on URLs. +

+

+
Parameters:
string - An HTTP header string. +
Returns:
A JSONObject containing the elements and attributes + of the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+
+
Convert a JSONObject into an HTTP header. A request header must contain +
{
+    Method: "POST" (for example),
+    "Request-URI": "/" (for example),
+    "HTTP-Version": "HTTP/1.1" (for example)
+ }
+ A response header must contain +
{
+    "HTTP-Version": "HTTP/1.1" (for example),
+    "Status-Code": "200" (for example),
+    "Reason-Phrase": "OK" (for example)
+ }
+ Any other members of the JSONObject will be output as HTTP fields. + The result will end with two CRLF pairs. +

+

+
Parameters:
jo - A JSONObject +
Returns:
An HTTP header string. +
Throws: +
JSONException - if the object does not contain enough + information.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.3/reference/org/json/HTTPTokener.html new file mode 100644 index 000000000..6848f411a --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/HTTPTokener.html @@ -0,0 +1,277 @@ + + + + + + +HTTPTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class HTTPTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.HTTPTokener
+
+
+
+
public class HTTPTokener
extends JSONTokener
+ + +

+The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HTTPTokener(java.lang.String string) + +
+          Construct an HTTPTokener from a string.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextToken() + +
+          Get the next token or string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HTTPTokener

+
+public HTTPTokener(java.lang.String string)
+
+
Construct an HTTPTokener from a string. +

+

+
Parameters:
string - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextToken

+
+public java.lang.String nextToken()
+                           throws JSONException
+
+
Get the next token or string. This is used in parsing HTTP headers. +

+

+ +
Returns:
A String. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.3/reference/org/json/JSONArray.html new file mode 100644 index 000000000..090a15bae --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONArray.html @@ -0,0 +1,1463 @@ + + + + + + +JSONArray (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONArray

+
+java.lang.Object
+  extended by org.json.JSONArray
+
+
+
+
public class JSONArray
extends java.lang.Object
+ + +

+A JSONArray is an ordered sequence of values. Its external text form is a + string wrapped in square brackets with commas separating the values. The + internal form is an object having get and opt + methods for accessing the values by index, and put methods for + adding or replacing values. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the + JSONObject.NULL object. +

+ The constructor can convert a JSON text into a Java object. The + toString method converts to JSON text. +

+ A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

+ The generic get() and opt() methods return an + object which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. +

+ The texts produced by the toString methods strictly conform to + JSON syntax rules. The constructors are more forgiving in the texts they will + accept: +

    +
  • An extra , (comma) may appear just + before the closing bracket.
  • +
  • The null value will be inserted when there + is , (comma) elision.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
  • +
  • Values can be separated by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the + 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONArray() + +
+          Construct an empty JSONArray.
JSONArray(java.util.Collection collection) + +
+          Construct a JSONArray from a Collection.
JSONArray(JSONTokener x) + +
+          Construct a JSONArray from a JSONTokener.
JSONArray(java.lang.Object array) + +
+          Construct a JSONArray from an array
JSONArray(java.lang.String source) + +
+          Construct a JSONArray from a source JSON text.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.Objectget(int index) + +
+          Get the object value associated with an index.
+ booleangetBoolean(int index) + +
+          Get the boolean value associated with an index.
+ doublegetDouble(int index) + +
+          Get the double value associated with an index.
+ intgetInt(int index) + +
+          Get the int value associated with an index.
+ JSONArraygetJSONArray(int index) + +
+          Get the JSONArray associated with an index.
+ JSONObjectgetJSONObject(int index) + +
+          Get the JSONObject associated with an index.
+ longgetLong(int index) + +
+          Get the long value associated with an index.
+ java.lang.StringgetString(int index) + +
+          Get the string associated with an index.
+ booleanisNull(int index) + +
+          Determine if the value is null.
+ java.lang.Stringjoin(java.lang.String separator) + +
+          Make a string from the contents of this JSONArray.
+ intlength() + +
+          Get the number of elements in the JSONArray, included nulls.
+ java.lang.Objectopt(int index) + +
+          Get the optional object value associated with an index.
+ booleanoptBoolean(int index) + +
+          Get the optional boolean value associated with an index.
+ booleanoptBoolean(int index, + boolean defaultValue) + +
+          Get the optional boolean value associated with an index.
+ doubleoptDouble(int index) + +
+          Get the optional double value associated with an index.
+ doubleoptDouble(int index, + double defaultValue) + +
+          Get the optional double value associated with an index.
+ intoptInt(int index) + +
+          Get the optional int value associated with an index.
+ intoptInt(int index, + int defaultValue) + +
+          Get the optional int value associated with an index.
+ JSONArrayoptJSONArray(int index) + +
+          Get the optional JSONArray associated with an index.
+ JSONObjectoptJSONObject(int index) + +
+          Get the optional JSONObject associated with an index.
+ longoptLong(int index) + +
+          Get the optional long value associated with an index.
+ longoptLong(int index, + long defaultValue) + +
+          Get the optional long value associated with an index.
+ java.lang.StringoptString(int index) + +
+          Get the optional string value associated with an index.
+ java.lang.StringoptString(int index, + java.lang.String defaultValue) + +
+          Get the optional string associated with an index.
+ JSONArrayput(boolean value) + +
+          Append a boolean value.
+ JSONArrayput(java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(double value) + +
+          Append a double value.
+ JSONArrayput(int value) + +
+          Append an int value.
+ JSONArrayput(int index, + boolean value) + +
+          Put or replace a boolean value in the JSONArray.
+ JSONArrayput(int index, + java.util.Collection value) + +
+          Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+ JSONArrayput(int index, + double value) + +
+          Put or replace a double value.
+ JSONArrayput(int index, + int value) + +
+          Put or replace an int value.
+ JSONArrayput(int index, + long value) + +
+          Put or replace a long value.
+ JSONArrayput(int index, + java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
+ JSONArrayput(int index, + java.lang.Object value) + +
+          Put or replace an object value in the JSONArray.
+ JSONArrayput(long value) + +
+          Append an long value.
+ JSONArrayput(java.util.Map value) + +
+          Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
+ JSONArrayput(java.lang.Object value) + +
+          Append an object value.
+ java.lang.Objectremove(int index) + +
+          Remove an index and close the hole.
+ JSONObjecttoJSONObject(JSONArray names) + +
+          Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONArray.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONArray.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONArray as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONArray

+
+public JSONArray()
+
+
Construct an empty JSONArray. +

+

+
+ +

+JSONArray

+
+public JSONArray(JSONTokener x)
+          throws JSONException
+
+
Construct a JSONArray from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.String source)
+          throws JSONException
+
+
Construct a JSONArray from a source JSON text. +

+

+
Parameters:
source - A string that begins with + [ (left bracket) + and ends with ] (right bracket). +
Throws: +
JSONException - If there is a syntax error.
+
+
+ +

+JSONArray

+
+public JSONArray(java.util.Collection collection)
+
+
Construct a JSONArray from a Collection. +

+

+
Parameters:
collection - A Collection.
+
+
+ +

+JSONArray

+
+public JSONArray(java.lang.Object array)
+
+
Construct a JSONArray from an array +

+

+ +
Throws: +
JSONException - If not an array.
+
+ + + + + + + + +
+Method Detail
+ +

+get

+
+public java.lang.Object get(int index)
+                     throws JSONException
+
+
Get the object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value. +
Throws: +
JSONException - If there is no value for the index.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(int index)
+                   throws JSONException
+
+
Get the boolean value associated with an index. + The string values "true" and "false" are converted to boolean. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth. +
Throws: +
JSONException - If there is no value for the index or if the + value is not convertible to boolean.
+
+
+
+ +

+getDouble

+
+public double getDouble(int index)
+                 throws JSONException
+
+
Get the double value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(int index)
+           throws JSONException
+
+
Get the int value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value is not a number.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(int index)
+                       throws JSONException
+
+
Get the JSONArray associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONArray value. +
Throws: +
JSONException - If there is no value for the index. or if the + value is not a JSONArray
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(int index)
+                         throws JSONException
+
+
Get the JSONObject associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONObject value. +
Throws: +
JSONException - If there is no value for the index or if the + value is not a JSONObject
+
+
+
+ +

+getLong

+
+public long getLong(int index)
+             throws JSONException
+
+
Get the long value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value. +
Throws: +
JSONException - If the key is not found or if the value cannot + be converted to a number.
+
+
+
+ +

+getString

+
+public java.lang.String getString(int index)
+                           throws JSONException
+
+
Get the string associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A string value. +
Throws: +
JSONException - If there is no string value for the index.
+
+
+
+ +

+isNull

+
+public boolean isNull(int index)
+
+
Determine if the value is null. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
true if the value at the index is null, or if there is no value.
+
+
+
+ +

+join

+
+public java.lang.String join(java.lang.String separator)
+                      throws JSONException
+
+
Make a string from the contents of this JSONArray. The + separator string is inserted between each element. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
separator - A string that will be inserted between the elements. +
Returns:
a string. +
Throws: +
JSONException - If the array contains an invalid number.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of elements in the JSONArray, included nulls. +

+

+ +
Returns:
The length (or size).
+
+
+
+ +

+opt

+
+public java.lang.Object opt(int index)
+
+
Get the optional object value associated with an index. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
An object value, or null if there is no + object at that index.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index)
+
+
Get the optional boolean value associated with an index. + It returns false if there is no value at that index, + or if the value is not Boolean.TRUE or the String "true". +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(int index,
+                          boolean defaultValue)
+
+
Get the optional boolean value associated with an index. + It returns the defaultValue if there is no value at that index or if + it is not a Boolean or the String "true" or "false" (case insensitive). +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - A boolean default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index)
+
+
Get the optional double value associated with an index. + NaN is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optDouble

+
+public double optDouble(int index,
+                        double defaultValue)
+
+
Get the optional double value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - subscript
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index)
+
+
Get the optional int value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optInt

+
+public int optInt(int index,
+                  int defaultValue)
+
+
Get the optional int value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(int index)
+
+
Get the optional JSONArray associated with an index. +

+

+
Parameters:
index - subscript +
Returns:
A JSONArray value, or null if the index has no value, + or if the value is not a JSONArray.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(int index)
+
+
Get the optional JSONObject associated with an index. + Null is returned if the key is not found, or null if the index has + no value, or if the value is not a JSONObject. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A JSONObject value.
+
+
+
+ +

+optLong

+
+public long optLong(int index)
+
+
Get the optional long value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
The value.
+
+
+
+ +

+optLong

+
+public long optLong(int index,
+                    long defaultValue)
+
+
Get the optional long value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
The value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index)
+
+
Get the optional string value associated with an index. It returns an + empty string if there is no value at that index. If the value + is not a string and is not null, then it is coverted to a string. +

+

+
Parameters:
index - The index must be between 0 and length() - 1. +
Returns:
A String value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(int index,
+                                  java.lang.String defaultValue)
+
+
Get the optional string associated with an index. + The defaultValue is returned if the key is not found. +

+

+
Parameters:
index - The index must be between 0 and length() - 1.
defaultValue - The default value. +
Returns:
A String value.
+
+
+
+ +

+put

+
+public JSONArray put(boolean value)
+
+
Append a boolean value. This increases the array's length by one. +

+

+
Parameters:
value - A boolean value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Collection value)
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
value - A Collection value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(double value)
+
+
Append a double value. This increases the array's length by one. +

+

+
Parameters:
value - A double value. +
Returns:
this. +
Throws: +
JSONException - if the value is not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int value)
+
+
Append an int value. This increases the array's length by one. +

+

+
Parameters:
value - An int value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(long value)
+
+
Append an long value. This increases the array's length by one. +

+

+
Parameters:
value - A long value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.util.Map value)
+
+
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
value - A Map value. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(java.lang.Object value)
+
+
Append an object value. This increases the array's length by one. +

+

+
Parameters:
value - An object value. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     boolean value)
+
+
Put or replace a boolean value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - A boolean value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Collection value)
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
index - The subscript.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     double value)
+
+
Put or replace a double value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A double value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the value is + not finite.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     int value)
+
+
Put or replace an int value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - An int value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     long value)
+
+
Put or replace a long value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out. +

+

+
Parameters:
index - The subscript.
value - A long value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.util.Map value)
+
+
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map. +

+

+
Parameters:
index - The subscript.
value - The Map value. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+put

+
+public JSONArray put(int index,
+                     java.lang.Object value)
+
+
Put or replace an object value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out. +

+

+
Parameters:
index - The subscript.
value - The value to put into the array. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the index is negative or if the the value is + an invalid number.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(int index)
+
+
Remove an index and close the hole. +

+

+
Parameters:
index - The index of the element to be removed. +
Returns:
The value that was associated with the index, + or null if there was no value.
+
+
+
+ +

+toJSONObject

+
+public JSONObject toJSONObject(JSONArray names)
+                        throws JSONException
+
+
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. These will be + paired with the values. +
Returns:
A JSONObject, or null if there are no names or if this JSONArray + has no values. +
Throws: +
JSONException - If any of the names are null.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONArray. For compactness, no + unnecessary whitespace is added. If it is not possible to produce a + syntactically correct JSON text then null will be returned instead. This + could occur if the array contains an invalid number. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, transmittable + representation of the array.
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+                          throws JSONException
+
+
Make a prettyprinted JSON text of this JSONArray. + Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of + indentation. +
Returns:
a printable, displayable, transmittable + representation of the object, beginning + with [ (left bracket) and ending + with ] (right bracket). +
Throws: +
JSONException
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+
+
Write the contents of the JSONArray as JSON text to a writer. + For compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONException.html b/distribution/json4processing-0.1.3/reference/org/json/JSONException.html new file mode 100644 index 000000000..15652b3cd --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONException.html @@ -0,0 +1,291 @@ + + + + + + +JSONException (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONException

+
+java.lang.Object
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.json.JSONException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public class JSONException
extends java.lang.Exception
+ + +

+The JSONException is thrown by the JSON.org classes when things are amiss. +

+ +

+

+
Author:
+
JSON.org
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
JSONException(java.lang.String message) + +
+          Constructs a JSONException with an explanatory message.
JSONException(java.lang.Throwable cause) + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.ThrowablegetCause() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONException

+
+public JSONException(java.lang.String message)
+
+
Constructs a JSONException with an explanatory message. +

+

+
Parameters:
message - Detail about the reason for the exception.
+
+
+ +

+JSONException

+
+public JSONException(java.lang.Throwable cause)
+
+
+ + + + + + + + +
+Method Detail
+ +

+getCause

+
+public java.lang.Throwable getCause()
+
+
+
Overrides:
getCause in class java.lang.Throwable
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONML.html b/distribution/json4processing-0.1.3/reference/org/json/JSONML.html new file mode 100644 index 000000000..353ed4d7d --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONML.html @@ -0,0 +1,422 @@ + + + + + + +JSONML (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONML

+
+java.lang.Object
+  extended by org.json.JSONML
+
+
+
+
public class JSONML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static JSONArraytoJSONArray(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONArraytoJSONArray(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static JSONObjecttoJSONObject(XMLTokener x) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+static java.lang.StringtoString(JSONArray ja) + +
+          Reverse the JSONML transformation, making an XML text from a JSONArray.
+static java.lang.StringtoString(JSONObject jo) + +
+          Reverse the JSONML transformation, making an XML text from a JSONObject.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONML

+
+public JSONML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(java.lang.String string)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONArray

+
+public static JSONArray toJSONArray(XMLTokener x)
+                             throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child content and tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener. +
Returns:
A JSONArray containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(XMLTokener x)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
x - An XMLTokener of the XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored. +

+

+
Parameters:
string - The XML source text. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONArray ja)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONArray. +

+

+
Parameters:
ja - A JSONArray. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(JSONObject jo)
+                                 throws JSONException
+
+
Reverse the JSONML transformation, making an XML text from a JSONObject. + The JSONObject must contain a "tagName" property. If it has children, + then it must have a "childNodes" property containing an array of objects. + The other properties are attributes with string values. +

+

+
Parameters:
jo - A JSONObject. +
Returns:
An XML string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.3/reference/org/json/JSONObject.html new file mode 100644 index 000000000..e0bbbbebe --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONObject.html @@ -0,0 +1,1847 @@ + + + + + + +JSONObject (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONObject

+
+java.lang.Object
+  extended by org.json.JSONObject
+
+
+
+
public class JSONObject
extends java.lang.Object
+ + +

+A JSONObject is an unordered collection of name/value pairs. Its external + form is a string wrapped in curly braces with colons between the names and + values, and commas between the values and names. The internal form is an + object having get and opt methods for accessing the + values by name, and put methods for adding or replacing values + by name. The values can be any of these types: Boolean, + JSONArray, JSONObject, Number, + String, or the JSONObject.NULL object. A JSONObject + constructor can be used to convert an external form JSON text into an + internal form whose values can be retrieved with the get and + opt methods, or to convert values into a JSON text using the + put and toString methods. A get method + returns a value if one can be found, and throws an exception if one cannot be + found. An opt method returns a default value instead of throwing + an exception, and so is useful for obtaining optional values. +

+ The generic get() and opt() methods return an + object, which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. The opt methods differ from the get methods in that they do + not throw. Instead, they return a specified value, such as null. +

+ The put methods add or replace values in an object. For example, + +

+ myString = new JSONObject().put("JSON", "Hello, World!").toString();
+ 
+ + produces the string {"JSON": "Hello, World"}. +

+ The texts produced by the toString methods strictly conform to + the JSON syntax rules. The constructors are more forgiving in the texts they + will accept: +

    +
  • An extra , (comma) may appear just + before the closing brace.
  • +
  • Strings may be quoted with ' (single + quote).
  • +
  • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, and + if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers and + if they are not the reserved words true, false, or + null.
  • +
  • Keys can be followed by = or => as well as by + :.
  • +
  • Values can be followed by ; (semicolon) as + well as by , (comma).
  • +
  • Numbers may have the 0x- (hex) prefix.
  • +
+

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.lang.ObjectNULL + +
+          It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONObject() + +
+          Construct an empty JSONObject.
JSONObject(JSONObject jo, + java.lang.String[] names) + +
+          Construct a JSONObject from a subset of another JSONObject.
JSONObject(JSONTokener x) + +
+          Construct a JSONObject from a JSONTokener.
JSONObject(java.util.Map map) + +
+          Construct a JSONObject from a Map.
JSONObject(java.lang.Object bean) + +
+          Construct a JSONObject from an Object using bean getters.
JSONObject(java.lang.Object object, + java.lang.String[] names) + +
+          Construct a JSONObject from an Object, using reflection to find the + public members.
JSONObject(java.lang.String source) + +
+          Construct a JSONObject from a source JSON text string.
JSONObject(java.lang.String baseName, + java.util.Locale locale) + +
+          Construct a JSONObject from a ResourceBundle.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONObjectaccumulate(java.lang.String key, + java.lang.Object value) + +
+          Accumulate values under a key.
+ JSONObjectappend(java.lang.String key, + java.lang.Object value) + +
+          Append values to the array under a key.
+static java.lang.StringdoubleToString(double d) + +
+          Produce a string from a double.
+ java.lang.Objectget(java.lang.String key) + +
+          Get the value object associated with a key.
+ booleangetBoolean(java.lang.String key) + +
+          Get the boolean value associated with a key.
+ doublegetDouble(java.lang.String key) + +
+          Get the double value associated with a key.
+ intgetInt(java.lang.String key) + +
+          Get the int value associated with a key.
+ JSONArraygetJSONArray(java.lang.String key) + +
+          Get the JSONArray value associated with a key.
+ JSONObjectgetJSONObject(java.lang.String key) + +
+          Get the JSONObject value associated with a key.
+ longgetLong(java.lang.String key) + +
+          Get the long value associated with a key.
+static java.lang.String[]getNames(JSONObject jo) + +
+          Get an array of field names from a JSONObject.
+static java.lang.String[]getNames(java.lang.Object object) + +
+          Get an array of field names from an Object.
+ java.lang.StringgetString(java.lang.String key) + +
+          Get the string associated with a key.
+ booleanhas(java.lang.String key) + +
+          Determine if the JSONObject contains a specific key.
+ JSONObjectincrement(java.lang.String key) + +
+          Increment a property of a JSONObject.
+ booleanisNull(java.lang.String key) + +
+          Determine if the value associated with the key is null or if there is no + value.
+ java.util.Iteratorkeys() + +
+          Get an enumeration of the keys of the JSONObject.
+ intlength() + +
+          Get the number of keys stored in the JSONObject.
+ JSONArraynames() + +
+          Produce a JSONArray containing the names of the elements of this + JSONObject.
+static java.lang.StringnumberToString(java.lang.Number number) + +
+          Produce a string from a Number.
+ java.lang.Objectopt(java.lang.String key) + +
+          Get an optional value associated with a key.
+ booleanoptBoolean(java.lang.String key) + +
+          Get an optional boolean associated with a key.
+ booleanoptBoolean(java.lang.String key, + boolean defaultValue) + +
+          Get an optional boolean associated with a key.
+ doubleoptDouble(java.lang.String key) + +
+          Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
+ doubleoptDouble(java.lang.String key, + double defaultValue) + +
+          Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
+ intoptInt(java.lang.String key) + +
+          Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
+ intoptInt(java.lang.String key, + int defaultValue) + +
+          Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
+ JSONArrayoptJSONArray(java.lang.String key) + +
+          Get an optional JSONArray associated with a key.
+ JSONObjectoptJSONObject(java.lang.String key) + +
+          Get an optional JSONObject associated with a key.
+ longoptLong(java.lang.String key) + +
+          Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
+ longoptLong(java.lang.String key, + long defaultValue) + +
+          Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
+ java.lang.StringoptString(java.lang.String key) + +
+          Get an optional string associated with a key.
+ java.lang.StringoptString(java.lang.String key, + java.lang.String defaultValue) + +
+          Get an optional string associated with a key.
+ JSONObjectput(java.lang.String key, + boolean value) + +
+          Put a key/boolean pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Collection value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
+ JSONObjectput(java.lang.String key, + double value) + +
+          Put a key/double pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + int value) + +
+          Put a key/int pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + long value) + +
+          Put a key/long pair in the JSONObject.
+ JSONObjectput(java.lang.String key, + java.util.Map value) + +
+          Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
+ JSONObjectput(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject.
+ JSONObjectputOnce(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
+ JSONObjectputOpt(java.lang.String key, + java.lang.Object value) + +
+          Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
+static java.lang.Stringquote(java.lang.String string) + +
+          Produce a string in double quotes with backslash sequences in all the + right places.
+ java.lang.Objectremove(java.lang.String key) + +
+          Remove a name and its value, if present.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static voidtestValidity(java.lang.Object o) + +
+          Throw an exception if the object is a NaN or infinite number.
+ JSONArraytoJSONArray(JSONArray names) + +
+          Produce a JSONArray containing the values of the members of this + JSONObject.
+ java.lang.StringtoString() + +
+          Make a JSON text of this JSONObject.
+ java.lang.StringtoString(int indentFactor) + +
+          Make a prettyprinted JSON text of this JSONObject.
+static java.lang.StringvalueToString(java.lang.Object value) + +
+          Make a JSON text of an Object value.
+static java.lang.Objectwrap(java.lang.Object object) + +
+          Wrap an object, if necessary.
+ java.io.Writerwrite(java.io.Writer writer) + +
+          Write the contents of the JSONObject as JSON text to a writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+NULL

+
+public static final java.lang.Object NULL
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null". +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+JSONObject

+
+public JSONObject()
+
+
Construct an empty JSONObject. +

+

+
+ +

+JSONObject

+
+public JSONObject(JSONObject jo,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from a subset of another JSONObject. An array of + strings is used to identify the keys that should be copied. Missing keys + are ignored. +

+

+
Parameters:
jo - A JSONObject.
names - An array of strings. +
Throws: +
JSONException +
JSONException - If a value is a non-finite number or if a name is + duplicated.
+
+
+ +

+JSONObject

+
+public JSONObject(JSONTokener x)
+
+
Construct a JSONObject from a JSONTokener. +

+

+
Parameters:
x - A JSONTokener object containing the source string. +
Throws: +
JSONException - If there is a syntax error in the source string or a + duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.util.Map map)
+
+
Construct a JSONObject from a Map. +

+

+
Parameters:
map - A map object that can be used to initialize the contents of + the JSONObject. +
Throws: +
JSONException
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object bean)
+
+
Construct a JSONObject from an Object using bean getters. It reflects on + all of the public methods of the object. For each of the methods with no + parameters and a name starting with "get" or + "is" followed by an uppercase letter, the method is invoked, + and a key and the value returned from the getter method are put into the + new JSONObject. + + The key is formed by removing the "get" or "is" + prefix. If the second remaining character is not upper case, then the + first character is converted to lower case. + + For example, if an object has a method named "getName", and + if the result of calling object.getName() is + "Larry Fine", then the JSONObject will contain + "name": "Larry Fine". +

+

+
Parameters:
bean - An object that has getter methods that should be used to make + a JSONObject.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.Object object,
+                  java.lang.String[] names)
+
+
Construct a JSONObject from an Object, using reflection to find the + public members. The resulting JSONObject's keys will be the strings from + the names array, and the values will be the field values associated with + those keys in the object. If a key is not found or not visible, then it + will not be copied into the new JSONObject. +

+

+
Parameters:
object - An object that has fields that should be used to make a + JSONObject.
names - An array of strings, the names of the fields to be obtained + from the object.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String source)
+
+
Construct a JSONObject from a source JSON text string. This is the most + commonly used JSONObject constructor. +

+

+
Parameters:
source - A string beginning with { (left + brace) and ending with } +  (right brace). +
Throws: +
JSONException - If there is a syntax error in the source string or a + duplicated key.
+
+
+ +

+JSONObject

+
+public JSONObject(java.lang.String baseName,
+                  java.util.Locale locale)
+
+
Construct a JSONObject from a ResourceBundle. +

+

+
Parameters:
baseName - The ResourceBundle base name.
locale - The Locale to load the ResourceBundle for. +
Throws: +
JSONException - If any JSONExceptions are detected.
+
+ + + + + + + + +
+Method Detail
+ +

+accumulate

+
+public JSONObject accumulate(java.lang.String key,
+                             java.lang.Object value)
+
+
Accumulate values under a key. It is similar to the put method except + that if there is already an object stored under the key then a JSONArray + is stored under the key to hold all of the accumulated values. If there + is already a JSONArray, then the new value is appended to it. In + contrast, the put method replaces the previous value. + + If only one value is accumulated that is not a JSONArray, then the result + will be the same as using put. But if multiple values are accumulated, + then the result will be like append. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the value is an invalid number or if the key is null.
+
+
+
+ +

+append

+
+public JSONObject append(java.lang.String key,
+                         java.lang.Object value)
+
+
Append values to the array under a key. If the key does not exist in the + JSONObject, then the key is put in the JSONObject with its value being a + JSONArray containing the value parameter. If the key was already + associated with a JSONArray, then the value parameter is appended to it. +

+

+
Parameters:
key - A key string.
value - An object to be accumulated under the key. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the current value associated with + the key is not a JSONArray.
+
+
+
+ +

+doubleToString

+
+public static java.lang.String doubleToString(double d)
+
+
Produce a string from a double. The string "null" will be returned if the + number is not finite. +

+

+
Parameters:
d - A double. +
Returns:
A String.
+
+
+
+ +

+get

+
+public java.lang.Object get(java.lang.String key)
+
+
Get the value object associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The object associated with the key. +
Throws: +
JSONException - if the key is not found.
+
+
+
+ +

+getBoolean

+
+public boolean getBoolean(java.lang.String key)
+
+
Get the boolean value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The truth. (False if it failes to find the value) +
Throws: +
JSONException - if the value is not a Boolean or the String "true" or + "false".
+
+
+
+ +

+getDouble

+
+public double getDouble(java.lang.String key)
+
+
Get the double value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The numeric value. -1 if it failes to find the value +
Throws: +
JSONException - if the key is not found or if the value is not a Number + object and cannot be converted to a number.
+
+
+
+ +

+getInt

+
+public int getInt(java.lang.String key)
+
+
Get the int value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The integer value. (-1 if it failes to get the integer) +
Throws: +
JSONException - if the key is not found or if the value cannot be converted + to an integer.
+
+
+
+ +

+getJSONArray

+
+public JSONArray getJSONArray(java.lang.String key)
+
+
Get the JSONArray value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value. (null if failes to find the array) +
Throws: +
JSONException - if the key is not found or if the value is not a JSONArray.
+
+
+
+ +

+getJSONObject

+
+public JSONObject getJSONObject(java.lang.String key)
+
+
Get the JSONObject value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value. +
Throws: +
JSONException - if the key is not found or if the value is not a JSONObject.
+
+
+
+ +

+getLong

+
+public long getLong(java.lang.String key)
+
+
Get the long value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
The long value. (-1 if it failes) +
Throws: +
JSONException - if the key is not found or if the value cannot be converted + to a long.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(JSONObject jo)
+
+
Get an array of field names from a JSONObject. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getNames

+
+public static java.lang.String[] getNames(java.lang.Object object)
+
+
Get an array of field names from an Object. +

+

+ +
Returns:
An array of field names, or null if there are no names.
+
+
+
+ +

+getString

+
+public java.lang.String getString(java.lang.String key)
+
+
Get the string associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value. (empty string if it fails) +
Throws: +
JSONException - if there is no string value for the key.
+
+
+
+ +

+has

+
+public boolean has(java.lang.String key)
+
+
Determine if the JSONObject contains a specific key. +

+

+
Parameters:
key - A key string. +
Returns:
true if the key exists in the JSONObject.
+
+
+
+ +

+increment

+
+public JSONObject increment(java.lang.String key)
+
+
Increment a property of a JSONObject. If there is no such property, + create one with a value of 1. If there is such a property, and if it is + an Integer, Long, Double, or Float, then add one to it. +

+

+
Parameters:
key - A key string. +
Returns:
this. +
Throws: +
JSONException - If there is already a property with this name that is not an + Integer, Long, Double, or Float.
+
+
+
+ +

+isNull

+
+public boolean isNull(java.lang.String key)
+
+
Determine if the value associated with the key is null or if there is no + value. +

+

+
Parameters:
key - A key string. +
Returns:
true if there is no value associated with the key or if the value + is the JSONObject.NULL object.
+
+
+
+ +

+keys

+
+public java.util.Iterator keys()
+
+
Get an enumeration of the keys of the JSONObject. +

+

+ +
Returns:
An iterator of the keys.
+
+
+
+ +

+length

+
+public int length()
+
+
Get the number of keys stored in the JSONObject. +

+

+ +
Returns:
The number of keys in the JSONObject.
+
+
+
+ +

+names

+
+public JSONArray names()
+
+
Produce a JSONArray containing the names of the elements of this + JSONObject. +

+

+ +
Returns:
A JSONArray containing the key strings, or null if the JSONObject + is empty.
+
+
+
+ +

+numberToString

+
+public static java.lang.String numberToString(java.lang.Number number)
+
+
Produce a string from a Number. +

+

+
Parameters:
number - A Number +
Returns:
A String. +
Throws: +
JSONException - If n is a non-finite number.
+
+
+
+ +

+opt

+
+public java.lang.Object opt(java.lang.String key)
+
+
Get an optional value associated with a key. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value, or null if there is no value.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key)
+
+
Get an optional boolean associated with a key. It returns false if there + is no such key, or if the value is not Boolean.TRUE or the String "true". +

+

+
Parameters:
key - A key string. +
Returns:
The truth.
+
+
+
+ +

+optBoolean

+
+public boolean optBoolean(java.lang.String key,
+                          boolean defaultValue)
+
+
Get an optional boolean associated with a key. It returns the + defaultValue if there is no such key, or if it is not a Boolean or the + String "true" or "false" (case insensitive). +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
The truth.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key)
+
+
Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number. If the value is a string, an attempt + will be made to evaluate it as a number. +

+

+
Parameters:
key - A string which is the key. +
Returns:
An object which is the value.
+
+
+
+ +

+optDouble

+
+public double optDouble(java.lang.String key,
+                        double defaultValue)
+
+
Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number. If the value is a + string, an attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key)
+
+
Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optInt

+
+public int optInt(java.lang.String key,
+                  int defaultValue)
+
+
Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optJSONArray

+
+public JSONArray optJSONArray(java.lang.String key)
+
+
Get an optional JSONArray associated with a key. It returns null if there + is no such key, or if its value is not a JSONArray. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONArray which is the value.
+
+
+
+ +

+optJSONObject

+
+public JSONObject optJSONObject(java.lang.String key)
+
+
Get an optional JSONObject associated with a key. It returns null if + there is no such key, or if its value is not a JSONObject. +

+

+
Parameters:
key - A key string. +
Returns:
A JSONObject which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key)
+
+
Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string. +
Returns:
An object which is the value.
+
+
+
+ +

+optLong

+
+public long optLong(java.lang.String key,
+                    long defaultValue)
+
+
Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
An object which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key)
+
+
Get an optional string associated with a key. It returns an empty string + if there is no such key. If the value is not a string and is not null, + then it is converted to a string. +

+

+
Parameters:
key - A key string. +
Returns:
A string which is the value.
+
+
+
+ +

+optString

+
+public java.lang.String optString(java.lang.String key,
+                                  java.lang.String defaultValue)
+
+
Get an optional string associated with a key. It returns the defaultValue + if there is no such key. +

+

+
Parameters:
key - A key string.
defaultValue - The default. +
Returns:
A string which is the value.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      boolean value)
+
+
Put a key/boolean pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A boolean which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Collection value)
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection. +

+

+
Parameters:
key - A key string.
value - A Collection value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      double value)
+
+
Put a key/double pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A double which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null or if the number is invalid.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      int value)
+
+
Put a key/int pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - An int which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      long value)
+
+
Put a key/long pair in the JSONObject. +

+

+
Parameters:
key - A key string.
value - A long which is the value. +
Returns:
this. +
Throws: +
JSONException - If the key is null.
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.util.Map value)
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map. +

+

+
Parameters:
key - A key string.
value - A Map value. +
Returns:
this. +
Throws: +
JSONException
+
+
+
+ +

+put

+
+public JSONObject put(java.lang.String key,
+                      java.lang.Object value)
+
+
Put a key/value pair in the JSONObject. If the value is null, then the + key will be removed from the JSONObject if it is present. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is non-finite number or if the key is null.
+
+
+
+ +

+putOnce

+
+public JSONObject putOnce(java.lang.String key,
+                          java.lang.Object value)
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name. +

+

+
Parameters:
key -
value - +
Returns:
his. +
Throws: +
JSONException - if the key is a duplicate
+
+
+
+ +

+putOpt

+
+public JSONObject putOpt(java.lang.String key,
+                         java.lang.Object value)
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null. +

+

+
Parameters:
key - A key string.
value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object. +
Returns:
this. +
Throws: +
JSONException - If the value is a non-finite number.
+
+
+
+ +

+quote

+
+public static java.lang.String quote(java.lang.String string)
+
+
Produce a string in double quotes with backslash sequences in all the + right places. A backslash will be inserted within +
+
Parameters:
string - A String +
Returns:
A String correctly formatted for insertion in a JSON text.
+
+
+
+ +

+remove

+
+public java.lang.Object remove(java.lang.String key)
+
+
Remove a name and its value, if present. +

+

+
Parameters:
key - The name to be removed. +
Returns:
The value that was associated with the name, or null if there was + no value.
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+testValidity

+
+public static void testValidity(java.lang.Object o)
+                         throws JSONException
+
+
Throw an exception if the object is a NaN or infinite number. +

+

+
Parameters:
o - The object to test. +
Throws: +
JSONException - If o is a non-finite number.
+
+
+
+ +

+toJSONArray

+
+public JSONArray toJSONArray(JSONArray names)
+                      throws JSONException
+
+
Produce a JSONArray containing the values of the members of this + JSONObject. +

+

+
Parameters:
names - A JSONArray containing a list of key strings. This determines + the sequence of the values in the result. +
Returns:
A JSONArray of values. +
Throws: +
JSONException - If any of the values are non-finite numbers.
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a JSON text of this JSONObject. For compactness, no whitespace is + added. If this would not result in a syntactically correct JSON text, + then null will be returned instead. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
+
+
+
+ +

+toString

+
+public java.lang.String toString(int indentFactor)
+
+
Make a prettyprinted JSON text of this JSONObject. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
indentFactor - The number of spaces to add to each level of indentation. +
Returns:
a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace). +
Throws: +
JSONException - If the object contains an invalid number.
+
+
+
+ +

+valueToString

+
+public static java.lang.String valueToString(java.lang.Object value)
+
+
Make a JSON text of an Object value. If the object has an + value.toJSONString() method, then that method will be used to produce the + JSON text. The method is required to produce a strictly conforming text. + If the object does not contain a toJSONString method (which is the most + common case), then a text will be produced by other means. If the value + is an array or Collection, then a JSONArray will be made from it and its + toJSONString method will be called. If the value is a MAP, then a + JSONObject will be made from it and its toJSONString method will be + called. Otherwise, the value's toString method will be called, and the + result will be quoted. + +

+ Warning: This method assumes that the data structure is acyclical. +

+

+
Parameters:
value - The value to be serialized. +
Returns:
a printable, displayable, transmittable representation of the + object, beginning with { (left + brace) and ending with } (right + brace). +
Throws: +
JSONException - If the value is or contains an invalid number.
+
+
+
+ +

+wrap

+
+public static java.lang.Object wrap(java.lang.Object object)
+
+
Wrap an object, if necessary. If the object is null, return the NULL + object. If it is an array or collection, wrap it in a JSONArray. If it is + a map, wrap it in a JSONObject. If it is a standard property (Double, + String, et al) then it is already wrapped. Otherwise, if it comes from + one of the java packages, turn it into a string. And if it doesn't, try + to wrap it in a JSONObject. If the wrapping fails, then null is returned. +

+

+
Parameters:
object - The object to wrap +
Returns:
The wrapped value
+
+
+
+ +

+write

+
+public java.io.Writer write(java.io.Writer writer)
+
+
Write the contents of the JSONObject as JSON text to a writer. For + compactness, no whitespace is added. +

+ Warning: This method assumes that the data structure is acyclical. +

+

+ +
Returns:
The writer. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONString.html b/distribution/json4processing-0.1.3/reference/org/json/JSONString.html new file mode 100644 index 000000000..cf77e5337 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONString.html @@ -0,0 +1,216 @@ + + + + + + +JSONString (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Interface JSONString

+
+
+
public interface JSONString
+ + +

+The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object). The + toJSONString method will be used instead of the default behavior + of using the Object's toString() method and quoting the result. +

+ +

+


+ +

+ + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoJSONString() + +
+          The toJSONString method allows a class to produce its own JSON + serialization.
+  +

+ + + + + + + + +
+Method Detail
+ +

+toJSONString

+
+java.lang.String toJSONString()
+
+
The toJSONString method allows a class to produce its own JSON + serialization. +

+

+ +
Returns:
A strictly syntactically correct JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.3/reference/org/json/JSONStringer.html new file mode 100644 index 000000000..190f02903 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONStringer.html @@ -0,0 +1,303 @@ + + + + + + +JSONStringer (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONStringer

+
+java.lang.Object
+  extended by org.json.JSONWriter
+      extended by org.json.JSONStringer
+
+
+
+
public class JSONStringer
extends JSONWriter
+ + +

+JSONStringer provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONStringer can produce one JSON text. +

+ A JSONStringer instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting cascade style. For example,

+ myString = new JSONStringer()
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject()
+     .toString();
which produces the string
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONStringer adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONStringer() + +
+          Make a fresh JSONStringer.
+  + + + + + + + + + + + +
+Method Summary
+ java.lang.StringtoString() + +
+          Return the JSON text.
+ + + + + + + +
Methods inherited from class org.json.JSONWriter
array, endArray, endObject, key, object, value, value, value, value
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONStringer

+
+public JSONStringer()
+
+
Make a fresh JSONStringer. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+toString

+
+public java.lang.String toString()
+
+
Return the JSON text. This method is used to obtain the product of the + JSONStringer instance. It will return null if there was a + problem in the construction of the JSON text (such as the calls to + array were not properly balanced with calls to + endArray). +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
The JSON text.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.3/reference/org/json/JSONTokener.html new file mode 100644 index 000000000..d83b0c012 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONTokener.html @@ -0,0 +1,667 @@ + + + + + + +JSONTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+
+
+
Direct Known Subclasses:
HTTPTokener, XMLTokener
+
+
+
+
public class JSONTokener
extends java.lang.Object
+ + +

+A JSONTokener takes a source string and extracts characters and tokens from + it. It is used by the JSONObject and JSONArray constructors to parse + JSON source strings. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
JSONTokener(java.io.InputStream inputStream) + +
+          Construct a JSONTokener from an InputStream.
JSONTokener(java.io.Reader reader) + +
+          Construct a JSONTokener from a Reader.
JSONTokener(java.lang.String s) + +
+          Construct a JSONTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidback() + +
+          Back up one character.
+static intdehexchar(char c) + +
+          Get the hex value of a character (base16).
+ booleanend() + +
+           
+ booleanmore() + +
+          Determine if the source string still contains characters that next() + can consume.
+ charnext() + +
+          Get the next character in the source string.
+ charnext(char c) + +
+          Consume the next character, and check that it matches a specified + character.
+ java.lang.Stringnext(int n) + +
+          Get the next n characters.
+ charnextClean() + +
+          Get the next char in the string, skipping whitespace.
+ java.lang.StringnextString(char quote) + +
+          Return the characters up to the next close quote character.
+ java.lang.StringnextTo(char delimiter) + +
+          Get the text up but not including the specified character or the + end of line, whichever comes first.
+ java.lang.StringnextTo(java.lang.String delimiters) + +
+          Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
+ java.lang.ObjectnextValue() + +
+          Get the next value.
+ charskipTo(char to) + +
+          Skip characters until the next character is the requested character.
+ JSONExceptionsyntaxError(java.lang.String message) + +
+          Make a JSONException to signal a syntax error.
+ java.lang.StringtoString() + +
+          Make a printable string of this JSONTokener.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONTokener

+
+public JSONTokener(java.io.Reader reader)
+
+
Construct a JSONTokener from a Reader. +

+

+
Parameters:
reader - A reader.
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.io.InputStream inputStream)
+            throws JSONException
+
+
Construct a JSONTokener from an InputStream. +

+

+ +
Throws: +
JSONException
+
+
+ +

+JSONTokener

+
+public JSONTokener(java.lang.String s)
+
+
Construct a JSONTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+back

+
+public void back()
+          throws JSONException
+
+
Back up one character. This provides a sort of lookahead capability, + so that you can test for a digit or letter before attempting to parse + the next number or identifier. +

+

+ +
Throws: +
JSONException
+
+
+
+ +

+dehexchar

+
+public static int dehexchar(char c)
+
+
Get the hex value of a character (base16). +

+

+
Parameters:
c - A character between '0' and '9' or between 'A' and 'F' or + between 'a' and 'f'. +
Returns:
An int between 0 and 15, or -1 if c was not a hex digit.
+
+
+
+ +

+end

+
+public boolean end()
+
+
+
+
+
+
+ +

+more

+
+public boolean more()
+             throws JSONException
+
+
Determine if the source string still contains characters that next() + can consume. +

+

+ +
Returns:
true if not yet at the end of the source. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next()
+          throws JSONException
+
+
Get the next character in the source string. +

+

+ +
Returns:
The next character, or 0 if past the end of the source string. +
Throws: +
JSONException
+
+
+
+ +

+next

+
+public char next(char c)
+          throws JSONException
+
+
Consume the next character, and check that it matches a specified + character. +

+

+
Parameters:
c - The character to match. +
Returns:
The character. +
Throws: +
JSONException - if the character does not match.
+
+
+
+ +

+next

+
+public java.lang.String next(int n)
+                      throws JSONException
+
+
Get the next n characters. +

+

+
Parameters:
n - The number of characters to take. +
Returns:
A string of n characters. +
Throws: +
JSONException - Substring bounds error if there are not + n characters remaining in the source string.
+
+
+
+ +

+nextClean

+
+public char nextClean()
+               throws JSONException
+
+
Get the next char in the string, skipping whitespace. +

+

+ +
Returns:
A character, or 0 if there are no more characters. +
Throws: +
JSONException
+
+
+
+ +

+nextString

+
+public java.lang.String nextString(char quote)
+                            throws JSONException
+
+
Return the characters up to the next close quote character. + Backslash processing is done. The formal JSON format does not + allow strings in single quotes, but an implementation is allowed to + accept them. +

+

+
Parameters:
quote - The quoting character, either + " (double quote) or + ' (single quote). +
Returns:
A String. +
Throws: +
JSONException - Unterminated string.
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(char delimiter)
+                        throws JSONException
+
+
Get the text up but not including the specified character or the + end of line, whichever comes first. +

+

+
Parameters:
delimiter - A delimiter character. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+nextTo

+
+public java.lang.String nextTo(java.lang.String delimiters)
+                        throws JSONException
+
+
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first. +

+

+
Parameters:
delimiters - A set of delimiter characters. +
Returns:
A string, trimmed. +
Throws: +
JSONException
+
+
+
+ +

+nextValue

+
+public java.lang.Object nextValue()
+                           throws JSONException
+
+
Get the next value. The value can be a Boolean, Double, Integer, + JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. +

+

+ +
Returns:
An object. +
Throws: +
JSONException - If syntax error.
+
+
+
+ +

+skipTo

+
+public char skipTo(char to)
+            throws JSONException
+
+
Skip characters until the next character is the requested character. + If the requested character is not found, no characters are skipped. +

+

+
Parameters:
to - A character to skip to. +
Returns:
The requested character, or zero if the requested character + is not found. +
Throws: +
JSONException
+
+
+
+ +

+syntaxError

+
+public JSONException syntaxError(java.lang.String message)
+
+
Make a JSONException to signal a syntax error. +

+

+
Parameters:
message - The error message. +
Returns:
A JSONException object, suitable for throwing
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
Make a printable string of this JSONTokener. +

+

+
Overrides:
toString in class java.lang.Object
+
+
+ +
Returns:
" at {index} [character {character} line {line}]"
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.3/reference/org/json/JSONWriter.html new file mode 100644 index 000000000..3dc6e277a --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/JSONWriter.html @@ -0,0 +1,506 @@ + + + + + + +JSONWriter (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class JSONWriter

+
+java.lang.Object
+  extended by org.json.JSONWriter
+
+
+
Direct Known Subclasses:
JSONStringer
+
+
+
+
public class JSONWriter
extends java.lang.Object
+ + +

+JSONWriter provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONWriter can produce one JSON text. +

+ A JSONWriter instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting a cascade style. For example,

+ new JSONWriter(myWriter)
+     .object()
+         .key("JSON")
+         .value("Hello, World!")
+     .endObject();
which writes
+ {"JSON":"Hello, World!"}
+

+ The first method called must be array or object. + There are no methods for adding commas or colons. JSONWriter adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

+ This can sometimes be easier than using a JSONObject to build a string. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JSONWriter(java.io.Writer w) + +
+          Make a fresh JSONWriter.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ JSONWriterarray() + +
+          Begin appending a new array.
+ JSONWriterendArray() + +
+          End an array.
+ JSONWriterendObject() + +
+          End an object.
+ JSONWriterkey(java.lang.String string) + +
+          Append a key.
+ JSONWriterobject() + +
+          Begin appending a new object.
+ JSONWritervalue(boolean b) + +
+          Append either the value true or the value + false.
+ JSONWritervalue(double d) + +
+          Append a double value.
+ JSONWritervalue(long l) + +
+          Append a long value.
+ JSONWritervalue(java.lang.Object object) + +
+          Append an object value.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JSONWriter

+
+public JSONWriter(java.io.Writer w)
+
+
Make a fresh JSONWriter. It can be used to build one JSON text. +

+

+ + + + + + + + +
+Method Detail
+ +

+array

+
+public JSONWriter array()
+                 throws JSONException
+
+
Begin appending a new array. All values until the balancing + endArray will be appended to this array. The + endArray method must be called to mark the array's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+endArray

+
+public JSONWriter endArray()
+                    throws JSONException
+
+
End an array. This method most be called to balance calls to + array. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+endObject

+
+public JSONWriter endObject()
+                     throws JSONException
+
+
End an object. This method most be called to balance calls to + object. +

+

+ +
Returns:
this +
Throws: +
JSONException - If incorrectly nested.
+
+
+
+ +

+key

+
+public JSONWriter key(java.lang.String string)
+               throws JSONException
+
+
Append a key. The key will be associated with the next value. In an + object, every value must be preceded by a key. +

+

+
Parameters:
string - A key string. +
Returns:
this +
Throws: +
JSONException - If the key is out of place. For example, keys + do not belong in arrays or if the key is null.
+
+
+
+ +

+object

+
+public JSONWriter object()
+                  throws JSONException
+
+
Begin appending a new object. All keys and values until the balancing + endObject will be appended to this object. The + endObject method must be called to mark the object's end. +

+

+ +
Returns:
this +
Throws: +
JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
+
+
+
+ +

+value

+
+public JSONWriter value(boolean b)
+                 throws JSONException
+
+
Append either the value true or the value + false. +

+

+
Parameters:
b - A boolean. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(double d)
+                 throws JSONException
+
+
Append a double value. +

+

+
Parameters:
d - A double. +
Returns:
this +
Throws: +
JSONException - If the number is not finite.
+
+
+
+ +

+value

+
+public JSONWriter value(long l)
+                 throws JSONException
+
+
Append a long value. +

+

+
Parameters:
l - A long. +
Returns:
this +
Throws: +
JSONException
+
+
+
+ +

+value

+
+public JSONWriter value(java.lang.Object object)
+                 throws JSONException
+
+
Append an object value. +

+

+
Parameters:
object - The object to append. It can be null, or a Boolean, Number, + String, JSONObject, or JSONArray, or an object that implements JSONString. +
Returns:
this +
Throws: +
JSONException - If the value is out of sequence.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/XML.html b/distribution/json4processing-0.1.3/reference/org/json/XML.html new file mode 100644 index 000000000..371f29124 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/XML.html @@ -0,0 +1,607 @@ + + + + + + +XML (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XML

+
+java.lang.Object
+  extended by org.json.XML
+
+
+
+
public class XML
extends java.lang.Object
+ + +

+This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static java.lang.CharacterAMP + +
+          The Character '&'.
+static java.lang.CharacterAPOS + +
+          The Character '''.
+static java.lang.CharacterBANG + +
+          The Character '!'.
+static java.lang.CharacterEQ + +
+          The Character '='.
+static java.lang.CharacterGT + +
+          The Character '>'.
+static java.lang.CharacterLT + +
+          The Character '<'.
+static java.lang.CharacterQUEST + +
+          The Character '?'.
+static java.lang.CharacterQUOT + +
+          The Character '"'.
+static java.lang.CharacterSLASH + +
+          The Character '/'.
+  + + + + + + + + + + +
+Constructor Summary
XML() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static java.lang.Stringescape(java.lang.String string) + +
+          Replace special characters with XML escapes: + + & (ampersand) is replaced by &amp; + < (less than) is replaced by &lt; + > (greater than) is replaced by &gt; + " (double quote) is replaced by &quot; +
+static voidnoSpace(java.lang.String string) + +
+          Throw an exception if the string contains whitespace.
+static java.lang.ObjectstringToValue(java.lang.String string) + +
+          Try to convert a string into a number, boolean, or null.
+static JSONObjecttoJSONObject(java.lang.String string) + +
+          Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
+static java.lang.StringtoString(java.lang.Object object) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+static java.lang.StringtoString(java.lang.Object object, + java.lang.String tagName) + +
+          Convert a JSONObject into a well-formed, element-normal XML string.
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+AMP

+
+public static final java.lang.Character AMP
+
+
The Character '&'. +

+

+
+
+
+ +

+APOS

+
+public static final java.lang.Character APOS
+
+
The Character '''. +

+

+
+
+
+ +

+BANG

+
+public static final java.lang.Character BANG
+
+
The Character '!'. +

+

+
+
+
+ +

+EQ

+
+public static final java.lang.Character EQ
+
+
The Character '='. +

+

+
+
+
+ +

+GT

+
+public static final java.lang.Character GT
+
+
The Character '>'. +

+

+
+
+
+ +

+LT

+
+public static final java.lang.Character LT
+
+
The Character '<'. +

+

+
+
+
+ +

+QUEST

+
+public static final java.lang.Character QUEST
+
+
The Character '?'. +

+

+
+
+
+ +

+QUOT

+
+public static final java.lang.Character QUOT
+
+
The Character '"'. +

+

+
+
+
+ +

+SLASH

+
+public static final java.lang.Character SLASH
+
+
The Character '/'. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XML

+
+public XML()
+
+
+ + + + + + + + +
+Method Detail
+ +

+escape

+
+public static java.lang.String escape(java.lang.String string)
+
+
Replace special characters with XML escapes: +
+ & (ampersand) is replaced by &amp;
+ < (less than) is replaced by &lt;
+ > (greater than) is replaced by &gt;
+ " (double quote) is replaced by &quot;
+ 
+

+

+
Parameters:
string - The string to be escaped. +
Returns:
The escaped string.
+
+
+
+ +

+noSpace

+
+public static void noSpace(java.lang.String string)
+                    throws JSONException
+
+
Throw an exception if the string contains whitespace. + Whitespace is not allowed in tagNames and attributes. +

+

+
Parameters:
string - +
Throws: +
JSONException
+
+
+
+ +

+stringToValue

+
+public static java.lang.Object stringToValue(java.lang.String string)
+
+
Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. This is much less ambitious than + JSONObject.stringToValue, especially because it does not attempt to + convert plus forms, octal forms, hex forms, or E forms lacking decimal + points. +

+

+
Parameters:
string - A String. +
Returns:
A simple JSON value.
+
+
+
+ +

+toJSONObject

+
+public static JSONObject toJSONObject(java.lang.String string)
+                               throws JSONException
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. Some information may be lost in this transformation + because JSON is a data format and XML is a document format. XML uses + elements, attributes, and content text, while JSON uses unordered + collections of name/value pairs and arrays of values. JSON does not + does not like to distinguish between elements and attributes. + Sequences of similar elements are represented as JSONArrays. Content + text may be placed in a "content" member. Comments, prologs, DTDs, and + <[ [ ]]> are ignored. +

+

+
Parameters:
string - The source string. +
Returns:
A JSONObject containing the structured data from the XML string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject. +
Returns:
A string. +
Throws: +
JSONException
+
+
+
+ +

+toString

+
+public static java.lang.String toString(java.lang.Object object,
+                                        java.lang.String tagName)
+                                 throws JSONException
+
+
Convert a JSONObject into a well-formed, element-normal XML string. +

+

+
Parameters:
object - A JSONObject.
tagName - The optional name of the enclosing tag. +
Returns:
A string. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.3/reference/org/json/XMLTokener.html new file mode 100644 index 000000000..a5b23d576 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/XMLTokener.html @@ -0,0 +1,452 @@ + + + + + + +XMLTokener (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.json +
+Class XMLTokener

+
+java.lang.Object
+  extended by org.json.JSONTokener
+      extended by org.json.XMLTokener
+
+
+
+
public class XMLTokener
extends JSONTokener
+ + +

+The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts. +

+ +

+

+
Author:
+
JSON.org
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static java.util.HashMapentity + +
+          The table of entity values.
+  + + + + + + + + + + +
+Constructor Summary
XMLTokener(java.lang.String s) + +
+          Construct an XMLTokener from a string.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.lang.StringnextCDATA() + +
+          Get the text in the CDATA block.
+ java.lang.ObjectnextContent() + +
+          Get the next XML outer token, trimming whitespace.
+ java.lang.ObjectnextEntity(char ampersand) + +
+          Return the next entity.
+ java.lang.ObjectnextMeta() + +
+          Returns the next XML meta token.
+ java.lang.ObjectnextToken() + +
+          Get the next XML Token.
+ booleanskipPast(java.lang.String to) + +
+          Skip characters until past the requested string.
+ + + + + + + +
Methods inherited from class org.json.JSONTokener
back, dehexchar, end, more, next, next, next, nextClean, nextString, nextTo, nextTo, nextValue, skipTo, syntaxError, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+entity

+
+public static final java.util.HashMap entity
+
+
The table of entity values. It initially contains Character values for + amp, apos, gt, lt, quot. +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+XMLTokener

+
+public XMLTokener(java.lang.String s)
+
+
Construct an XMLTokener from a string. +

+

+
Parameters:
s - A source string.
+
+ + + + + + + + +
+Method Detail
+ +

+nextCDATA

+
+public java.lang.String nextCDATA()
+                           throws JSONException
+
+
Get the text in the CDATA block. +

+

+ +
Returns:
The string up to the ]]>. +
Throws: +
JSONException - If the ]]> is not found.
+
+
+
+ +

+nextContent

+
+public java.lang.Object nextContent()
+                             throws JSONException
+
+
Get the next XML outer token, trimming whitespace. There are two kinds + of tokens: the '<' character which begins a markup tag, and the content + text between markup tags. +

+

+ +
Returns:
A string, or a '<' Character, or null if there is no more + source text. +
Throws: +
JSONException
+
+
+
+ +

+nextEntity

+
+public java.lang.Object nextEntity(char ampersand)
+                            throws JSONException
+
+
Return the next entity. These entities are translated to Characters: + & ' > < ". +

+

+
Parameters:
ampersand - An ampersand character. +
Returns:
A Character or an entity String if the entity is not recognized. +
Throws: +
JSONException - If missing ';' in XML entity.
+
+
+
+ +

+nextMeta

+
+public java.lang.Object nextMeta()
+                          throws JSONException
+
+
Returns the next XML meta token. This is used for skipping over + and structures. +

+

+ +
Returns:
Syntax characters (< > / = ! ?) are returned as + Character, and strings and names are returned as Boolean. We don't care + what the values actually are. +
Throws: +
JSONException - If a string is not properly closed or if the XML + is badly structured.
+
+
+
+ +

+nextToken

+
+public java.lang.Object nextToken()
+                           throws JSONException
+
+
Get the next XML Token. These tokens are found inside of angle + brackets. It may be one of these characters: / > = ! ? or it + may be a string wrapped in single quotes or double quotes, or it may be a + name. +

+

+ +
Returns:
a String or a Character. +
Throws: +
JSONException - If the XML is not well formed.
+
+
+
+ +

+skipPast

+
+public boolean skipPast(java.lang.String to)
+                 throws JSONException
+
+
Skip characters until past the requested string. + If it is not found, we are left at the end of the source with a result of false. +

+

+
Parameters:
to - A string to skip past. +
Throws: +
JSONException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/package-frame.html b/distribution/json4processing-0.1.3/reference/org/json/package-frame.html new file mode 100644 index 000000000..c70171cf6 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/package-frame.html @@ -0,0 +1,78 @@ + + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + + +org.json + + + + +
+Interfaces  + +
+JSONString
+ + + + + + +
+Classes  + +
+CDL +
+Cookie +
+CookieList +
+HTTP +
+HTTPTokener +
+JSONArray +
+JSONML +
+JSONObject +
+JSONStringer +
+JSONTokener +
+JSONWriter +
+XML +
+XMLTokener
+ + + + + + +
+Exceptions  + +
+JSONException
+ + + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/package-summary.html b/distribution/json4processing-0.1.3/reference/org/json/package-summary.html new file mode 100644 index 000000000..8e335ad15 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/package-summary.html @@ -0,0 +1,239 @@ + + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.json +

+ + + + + + + + + +
+Interface Summary
JSONStringThe JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
CDLThis provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
CookieConvert a web browser cookie specification to a JSONObject and back.
CookieListConvert a web browser cookie list string to a JSONObject and back.
HTTPConvert an HTTP header to a JSONObject and back.
HTTPTokenerThe HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
JSONArrayA JSONArray is an ordered sequence of values.
JSONMLThis provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
JSONObjectA JSONObject is an unordered collection of name/value pairs.
JSONStringerJSONStringer provides a quick and convenient way of producing JSON text.
JSONTokenerA JSONTokener takes a source string and extracts characters and tokens from + it.
JSONWriterJSONWriter provides a quick and convenient way of producing JSON text.
XMLThis provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
XMLTokenerThe XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
+  + +

+ + + + + + + + + +
+Exception Summary
JSONExceptionThe JSONException is thrown by the JSON.org classes when things are amiss.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/org/json/package-tree.html b/distribution/json4processing-0.1.3/reference/org/json/package-tree.html new file mode 100644 index 000000000..6109a5105 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/org/json/package-tree.html @@ -0,0 +1,160 @@ + + + + + + +org.json Class Hierarchy (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.json +

+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/overview-tree.html b/distribution/json4processing-0.1.3/reference/overview-tree.html new file mode 100644 index 000000000..a665f3683 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/overview-tree.html @@ -0,0 +1,162 @@ + + + + + + +Class Hierarchy (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.json
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/package-list b/distribution/json4processing-0.1.3/reference/package-list new file mode 100644 index 000000000..6374a8ef9 --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/package-list @@ -0,0 +1 @@ +org.json diff --git a/distribution/json4processing-0.1.3/reference/resources/inherit.gif b/distribution/json4processing-0.1.3/reference/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.3/reference/serialized-form.html b/distribution/json4processing-0.1.3/reference/serialized-form.html new file mode 100644 index 000000000..37221761e --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/serialized-form.html @@ -0,0 +1,178 @@ + + + + + + +Serialized Form (Javadocs: json4processing) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Serialized Form

+
+
+ + + + + +
+Package org.json
+ +

+ + + + + +
+Class org.json.JSONException extends java.lang.Exception implements Serializable
+ +

+serialVersionUID: 0L + +

+ + + + + +
+Serialized Fields
+ +

+cause

+
+java.lang.Throwable cause
+
+
+
+
+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+processing library json4processing by Andreas Goransson. (c) 2011 + + diff --git a/distribution/json4processing-0.1.3/reference/stylesheet.css b/distribution/json4processing-0.1.3/reference/stylesheet.css new file mode 100644 index 000000000..54998c2bc --- /dev/null +++ b/distribution/json4processing-0.1.3/reference/stylesheet.css @@ -0,0 +1,310 @@ +/* Javadoc style sheet */ +/* Define colors, fonts and other style attributes here to override the defaults */ +/* processingLibs style by andreas schlegel, sojamo */ + + +body { + margin : 0; + padding : 0; + padding-left : 10px; + padding-right : 8px; + background-color : #FFFFFF; + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.7em; + font-weight : normal; + line-height : normal; + margin-bottom:30px; +} + + + + +/* Headings */ +h1, h2, h3, h4, h5, th { + font-family :Arial, Helvetica, sans-serif; + font-size:1.2em; +} + + +p { + font-size : 1em; + width:80%; +} + +pre, code { + font-family : "Courier New", Courier, monospace; + font-size : 12px; + line-height : normal; +} + + + +table { + border:0; + margin-bottom:10px; + margin-top:10px; +} + + +tr, td { + border-top: 0px solid; + border-left: 0px solid; + padding-top:8px; + padding-bottom:8px; +} + + + +hr { + border:0; + height:1px; + padding:0; + margin:0; + margin-bottom:4px; + +} + + + +dd, th, td, font { + font-size:1.0em; + line-height:1.0em; +} + + + +dt { + margin-bottom:0px; +} + + + +dd { + margin-top:2px; + margin-bottom:4px; +} + + + +a { + text-decoration: underline; + font-weight: normal; +} + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + +img { + border: 0px solid #000000; +} + + + +/* Navigation bar fonts */ +.NavBarCell1 { + border:0; +} + +.NavBarCell1Rev { + border:0; +} + +.NavBarFont1 { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + + +.NavBarFont1 b { + font-weight:normal; +} + + + +.NavBarFont1:after, .NavBarFont1Rev:after { + font-weight:normal; + content: " \\"; +} + + +.NavBarFont1Rev { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + +.NavBarFont1Rev b { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; + font-weight:normal; +} + +.NavBarCell2 { + font-family: Arial, Helvetica, sans-serif; +} + +.NavBarCell3 { + font-family: Arial, Helvetica, sans-serif; +} + + + +font.FrameItemFont { + font-family: Helvetica, Arial, sans-serif; + font-size:1.1em; + line-height:1.1em; +} + +font.FrameHeadingFont { + font-family: Helvetica, Arial, sans-serif; + line-height:32px; +} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { + font-family: Helvetica, Arial, sans-serif +} + + +.toggleList { + padding:0; + margin:0; + margin-top:12px; +} + +.toggleList dt { + font-weight:bold; + font-size:12px; + font-family:arial,sans-serif; + padding:0px; + margin:10px 0px 10px 0px; +} + +.toggleList dt span { + font-family: monospace; + padding:0; + margin:0; +} + + +.toggleList dd { + margin:0; + padding:0; +} + +html.isjs .toggleList dd { + display: none; +} + +.toggleList pre { + padding: 4px 4px 4px 4px; +} + + + + + +/* COLORS */ + +pre, code { + color: #000000; +} + + +body { + color : #333333; + background-color :#FFFFFF; +} + + +h1, h2, h3, h4, h5, h6 { + color:#555; +} + +a, +.toggleList dt { + color: #1a7eb0; +} + +a:hover, +a:active { + color: #1a7eb0; +} + +a:visited, +a:link:visited { + color: #1a7eb0; +} + +td,tr { + border-color: #999999; +} + +hr { + color:#999999; + background:#999999; +} + + +.TableHeadingColor { + background: #dcdcdc; + color: #555; +} + + +.TableSubHeadingColor { + background: #EEEEFF +} + +.TableRowColor { + background: #FFFFFF +} + + +.NavBarCell1 { + background-color:#dcdcdc; + color:#000; +} + +.NavBarCell1 a { + color:#333; +} + + +.NavBarCell1Rev { + background-color:transparent; +} + +.NavBarFont1 { + color:#333; +} + + +.NavBarFont1Rev { + color:#fff; +} + +.NavBarCell2 { + background-color:#999; +} + +.NavBarCell2 a { + color:#fff; +} + + + +.NavBarCell3 { + background-color:#dcdcdc; +} + diff --git a/distribution/json4processing-0.1.3/stylesheet.css b/distribution/json4processing-0.1.3/stylesheet.css new file mode 100644 index 000000000..4348b3814 --- /dev/null +++ b/distribution/json4processing-0.1.3/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} diff --git a/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde b/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde new file mode 100644 index 000000000..32041620c --- /dev/null +++ b/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde @@ -0,0 +1,57 @@ +/* + * JSON 4 Processing + * Basic example 5: Parsing the HTTP header from www.processing.org + * + * This example creates a JSONObject from the HTTP response when + * contacting a website (www.processing.org). + */ +import org.json.*; +import java.net.URL; +import java.net.URLConnection; + +URL url; +URLConnection conn; + +void setup() { + // Unfortunately there's a problem in the Processing Client implementation + // that forces us to use straight Java. + try { + url = new URL("http://www.processing.org"); + conn = url.openConnection(); + } + catch( Exception e) { + } + + // We will manually add the entire HTTP reponse to this StringBuffer + // and create the JSONObject using it. + StringBuffer sb = new StringBuffer(); + + // Construct the String object using the URLConnection. + for (int i = 0;; i++) { + String name = conn.getHeaderFieldKey(i); + String value = conn.getHeaderField(i); + if (name == null && value == null) { + break; + } + if (name == null) { + // Add the value, if there is no key-value pair. + sb.append(value).append("\n"); + } + else { + // Add the key-value pair. + sb.append(name).append(":").append(value).append("\n"); + } + } + + // Create the JSON HTTP instance + HTTP http = new HTTP(); + + // Create the JSONObject using the HTTP instance + JSONObject obj = http.toJSONObject(sb.toString()); + + // Print the JSONObject + System.out.println(obj); +} +void draw() { +} + diff --git a/resources/build.properties b/resources/build.properties index cb1cd53c9..601fe77c3 100644 --- a/resources/build.properties +++ b/resources/build.properties @@ -97,7 +97,7 @@ project.compile=normal # set the current version of your project. -project.version=0.1.2 +project.version=0.1.3 project.copyright=(c) 2011 project.dependencies=? project.keywords=? diff --git a/src/org/json/HTTP.java b/src/org/json/HTTP.java index 037cf4f58..e01675bc5 100644 --- a/src/org/json/HTTP.java +++ b/src/org/json/HTTP.java @@ -68,38 +68,45 @@ public class HTTP { * of the XML string. * @throws JSONException */ - public static JSONObject toJSONObject(String string) throws JSONException { + public static JSONObject toJSONObject(String string) /*throws JSONException*/ { JSONObject jo = new JSONObject(); HTTPTokener x = new HTTPTokener(string); - String token; - - token = x.nextToken(); - if (token.toUpperCase().startsWith("HTTP")) { - -// Response - - jo.put("HTTP-Version", token); - jo.put("Status-Code", x.nextToken()); - jo.put("Reason-Phrase", x.nextTo('\0')); - x.next(); - - } else { - -// Request - - jo.put("Method", token); - jo.put("Request-URI", x.nextToken()); - jo.put("HTTP-Version", x.nextToken()); - } - -// Fields - - while (x.more()) { - String name = x.nextTo(':'); - x.next(':'); - jo.put(name, x.nextTo('\0')); - x.next(); - } + String token = null; + + try { + token = x.nextToken(); + + if (token != null && token.toUpperCase().startsWith("HTTP")) { + + // Response + + jo.put("HTTP-Version", token); + jo.put("Status-Code", x.nextToken()); + jo.put("Reason-Phrase", x.nextTo('\0')); + x.next(); + + } else { + + // Request + + jo.put("Method", token); + jo.put("Request-URI", x.nextToken()); + jo.put("HTTP-Version", x.nextToken()); + } + + // Fields + + while (x.more()) { + String name = x.nextTo(':'); + x.next(':'); + jo.put(name, x.nextTo('\0')); + x.next(); + } + + } catch (JSONException e) { + e.printStackTrace(); + } + return jo; } @@ -124,7 +131,7 @@ public static JSONObject toJSONObject(String string) throws JSONException { * @throws JSONException if the object does not contain enough * information. */ - public static String toString(JSONObject jo) throws JSONException { + public static String toString(JSONObject jo) /*throws JSONException*/ { Iterator keys = jo.keys(); String string; StringBuffer sb = new StringBuffer(); @@ -143,14 +150,18 @@ public static String toString(JSONObject jo) throws JSONException { sb.append(' '); sb.append(jo.getString("HTTP-Version")); } else { - throw new JSONException("Not enough material for an HTTP header."); + // throw new JSONException("Not enough material for an HTTP header."); } sb.append(CRLF); while (keys.hasNext()) { string = keys.next().toString(); - if (!string.equals("HTTP-Version") && !string.equals("Status-Code") && - !string.equals("Reason-Phrase") && !string.equals("Method") && - !string.equals("Request-URI") && !jo.isNull(string)) { + if (!"HTTP-Version".equals(string) && !"Status-Code".equals(string) && + !"Reason-Phrase".equals(string) && !"Method".equals(string) && + !"Request-URI".equals(string) && !jo.isNull(string)) { + // if (!string.equals("HTTP-Version") && !string.equals("Status-Code") + // && + // !string.equals("Reason-Phrase") && !string.equals("Method") && + // !string.equals("Request-URI") && !jo.isNull(string)) { sb.append(string); sb.append(": "); sb.append(jo.getString(string)); From 9f49c1730036b7e7cfa49ea05d3ad1c05e17b1e2 Mon Sep 17 00:00:00 2001 From: Tim Pulver Date: Thu, 12 Jul 2012 00:05:25 +0200 Subject: [PATCH 14/38] Added an example for saving JSON objects/arrays to a file --- .../write_jsonarray_of_objects.pde | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde diff --git a/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde b/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde new file mode 100644 index 000000000..23de7bec0 --- /dev/null +++ b/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde @@ -0,0 +1,56 @@ +/* + * JSON 4 Processing + * Basic example 7: Creating a JSON Array of JSON Objects and saving it to a file. + * + * Good for saving multiple complex values, such as database tables. + * + * Author: Andreas Göransson, output additions: Tim Pulver + */ + +import org.json.*; +import java.io.File; + +void setup(){ + + // Object creation like in example 3 + // ================================================= + + // 1. Initialize the Array + JSONArray myJsonUsers = new JSONArray(); + + // 2. Create the first object & add to array + JSONObject firstUser = new JSONObject(); + firstUser.put( "name", "Andreas" ); + firstUser.put( "age", 32 ); + myJsonUsers.put( firstUser ); + + // 3. Create the second object + JSONObject secondUser = new JSONObject(); + secondUser.put( "name", "Maria" ); + secondUser.put( "age", 28 ); + myJsonUsers.put( secondUser ); + + // Writing the JSON Array / Object to a file + // ================================================= + + // will store the JSON Array in the file json_output.txt within the data directory + File file = new File(dataPath("") + File.separator + "json_output.txt"); + // Create the data directory if it does not exist + file.getParentFile().mkdirs(); + try{ + // If the file already exists, it will be overwritten + FileWriter fstream = new FileWriter(file, false); + // Use this instead if you want to append the data to the file + //FileWriter fstream = new FileWriter(file, true); + BufferedWriter out = new BufferedWriter(fstream); + // do the actual writing + myJsonUsers.write(out); + // Close the stream + out.close(); + }catch (Exception e){ + System.err.println("Error writing the JSON file: " + e.getMessage()); + } +} + +void draw(){ +} From a09e1ee77661a60bb4a51b85eef979c34b8238dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20G=C3=B6ransson?= Date: Tue, 27 Nov 2012 16:20:56 +0100 Subject: [PATCH 15/38] Removed exception from JSONArray.getJSONObject() --- .../download/json4processing-0.1.4.zip | Bin 0 -> 181555 bytes .../create_jsonarray/create_jsonarray.pde | 23 + .../create_jsonarray_of_objects.pde | 31 + .../create_jsonobject/create_jsonobject.pde | 22 + .../create_jsonobject_from_httpheader.pde | 57 + .../create_jsonobject_from_string.pde | 20 + .../reading_yahoo_weather.pde | 37 + .../write_jsonarray_of_objects.pde | 56 + distribution/json4processing-0.1.4/index.html | 132 ++ .../reference/allclasses-frame.html | 32 + .../reference/allclasses-noframe.html | 32 + .../reference/constant-values.html | 141 ++ .../reference/deprecated-list.html | 112 + .../reference/help-doc.html | 209 ++ .../reference/index-all.html | 1134 ++++++++++ .../reference/index.html | 30 + .../reference/org/json/CDL.html | 470 +++++ .../reference/org/json/Cookie.html | 347 +++ .../reference/org/json/CookieList.html | 295 +++ .../reference/org/json/HTTP.html | 363 ++++ .../reference/org/json/HTTPTokener.html | 280 +++ .../reference/org/json/JSONArray.html | 1285 +++++++++++ .../reference/org/json/JSONException.html | 298 +++ .../reference/org/json/JSONML.html | 404 ++++ .../reference/org/json/JSONObject.html | 1626 ++++++++++++++ .../reference/org/json/JSONString.html | 215 ++ .../reference/org/json/JSONStringer.html | 307 +++ .../reference/org/json/JSONTokener.html | 601 ++++++ .../reference/org/json/JSONWriter.html | 474 +++++ .../reference/org/json/XML.html | 552 +++++ .../reference/org/json/XMLTokener.html | 433 ++++ .../reference/org/json/package-frame.html | 39 + .../reference/org/json/package-summary.html | 248 +++ .../reference/org/json/package-tree.html | 152 ++ .../reference/overview-tree.html | 156 ++ .../reference/package-list | 1 + .../reference/resources/background.gif | Bin 0 -> 2313 bytes .../reference/resources/tab.gif | Bin 0 -> 291 bytes .../reference/resources/titlebar.gif | Bin 0 -> 10701 bytes .../reference/resources/titlebar_end.gif | Bin 0 -> 849 bytes .../reference/serialized-form.html | 142 ++ .../reference/stylesheet.css | 310 +++ .../json4processing-0.1.4/stylesheet.css | 203 ++ resources/build.properties | 248 +-- src/org/json/JSONArray.java | 1873 +++++++++-------- 45 files changed, 12335 insertions(+), 1055 deletions(-) create mode 100644 distribution/json4processing-0.1.4/download/json4processing-0.1.4.zip create mode 100644 distribution/json4processing-0.1.4/examples/create_jsonarray/create_jsonarray.pde create mode 100644 distribution/json4processing-0.1.4/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.4/examples/create_jsonobject/create_jsonobject.pde create mode 100644 distribution/json4processing-0.1.4/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde create mode 100644 distribution/json4processing-0.1.4/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde create mode 100644 distribution/json4processing-0.1.4/examples/reading_yahoo_weather/reading_yahoo_weather.pde create mode 100644 distribution/json4processing-0.1.4/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.4/index.html create mode 100644 distribution/json4processing-0.1.4/reference/allclasses-frame.html create mode 100644 distribution/json4processing-0.1.4/reference/allclasses-noframe.html create mode 100644 distribution/json4processing-0.1.4/reference/constant-values.html create mode 100644 distribution/json4processing-0.1.4/reference/deprecated-list.html create mode 100644 distribution/json4processing-0.1.4/reference/help-doc.html create mode 100644 distribution/json4processing-0.1.4/reference/index-all.html create mode 100644 distribution/json4processing-0.1.4/reference/index.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/CDL.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/Cookie.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/CookieList.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/HTTP.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/HTTPTokener.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONArray.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONException.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONML.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONObject.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONString.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONStringer.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONTokener.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/JSONWriter.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/XML.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/XMLTokener.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/package-frame.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/package-summary.html create mode 100644 distribution/json4processing-0.1.4/reference/org/json/package-tree.html create mode 100644 distribution/json4processing-0.1.4/reference/overview-tree.html create mode 100644 distribution/json4processing-0.1.4/reference/package-list create mode 100644 distribution/json4processing-0.1.4/reference/resources/background.gif create mode 100644 distribution/json4processing-0.1.4/reference/resources/tab.gif create mode 100644 distribution/json4processing-0.1.4/reference/resources/titlebar.gif create mode 100644 distribution/json4processing-0.1.4/reference/resources/titlebar_end.gif create mode 100644 distribution/json4processing-0.1.4/reference/serialized-form.html create mode 100644 distribution/json4processing-0.1.4/reference/stylesheet.css create mode 100644 distribution/json4processing-0.1.4/stylesheet.css diff --git a/distribution/json4processing-0.1.4/download/json4processing-0.1.4.zip b/distribution/json4processing-0.1.4/download/json4processing-0.1.4.zip new file mode 100644 index 0000000000000000000000000000000000000000..ddb6d7d1365af6dd48691f96edabdb67133aea09 GIT binary patch literal 181555 zcmbTb19WB4nk^i&V%ttCwr$(C?WAJcwr$(Com6Z)d39g+`$ymI+x5SGXN+_98Eda^ z?zQLquplQ13<3r4k57cZC;$Kc^Y1_Kf36mewl++54z`BIj*jLwrnGYZZEuW!(c9Qf z-`dW~*zqrBlz%fbbTHO;GS>aaAoLv^^xgl0!~8$N(X}6JrNs8$;v2FpT?GJ6ngp zMFi3RukAk^`!5eC{wsikv7@cC!=J$X3j*@LKyY+0{ENlEqW2#be}7e+|K>UWu==N$ zg!tcCCM-HRViXVnAQl7w0Q!%qxQwC_zm(KZCpV|0#IEQKx*sFY0Pf&~lF5QLr_c|; z!YRP8Cp0+5Y30sj5kM3KkMpLqhu17qc77qLguWjM$e&Twv5;PgRsz3vu~@izE95?6 zQ>nvWUXY?g4)z#_Cc7yxHr8ee_;iT{17_!$!5FG=p-2Zv4bgiCQ5EP^s#J40@sbib z0~es!{0e3Xf!WbZ>9}mw4`CWEG4orXJK@=C8ZkdR(VE%$@h$61Al@RWCA}58J^&Kw zrt3~(=_&b0gp**R%kXBRLvYp#kv}FYj04mA5Mr`Ru3OY)cNw4b?oQ$;w2zvL^cz<* zzF->`EAk<|fih9em~FUpeYR!xz*hN@;pRZfpcj7+Hqhm+L-7=L%mJ0BATA z`;{UDfV3?YQ6YhX5yH*%tj9(-VGPDS*m1kh^lhykjWE<%b!wH0sk?%^gG80?0J-+1=MZ{Z~4uUyH6s}r0 zlAQR@;K5qqDFuEV{@@I|UbzAPKZODUAnZ?Bp@j`0di^7G{vXkK{)Mmne}&?|Wc>f! z@YBx7*f^G7a*z%_=sM^t#MLUIP>oBSs}gsRyL6Wp;?gRrSX_L*y5eOgtFX0WpCES9 z^Lk=(Q8_!W|LO1)LDkKrndmwRL*Y@yW66)_H=DVDV-%+-LoHMrDa-VjU?b^!R};6( za$mx!YD%&Vz7O~+4rz%9%A$Z;VfL6VU&V7N<_v+zNGw{M^09h$nSFh9f(^XwHl}=2 zUAx+n=sp+9A(|(GtoDJzZXcbF#iKYxjnl=?$8=nDI8D;3XDsyfoW^{s8MCO~;$zO8*m5|6`*4&;0&}d;g%?JAO;1pYIRV;%*`0v{D3xQM*BLZhkuG;>bt` zz(2MClN&pxrjzlauCHv+%=>a8OcvNpyV)0P)~{W1;TBfb7`6H$<}m0bn<^_@M;U~W~o^;svJpTf(0;O&QBqj0Els{DQP$}ki0LPl7 z+6S~tssg|O(a0o1Y9%W9CDD;(BZ^wYg4(D~YPn2#8sqI;P-JJPnPh)G;NHh;4wVAQ zMQKiQbhlNff*kL$L=R}9*G6|~GX2%3+e*P@q& z*DG}Q;RBUN4E$>@HZduRKtWB8>6cl4V8#f-hs{8dYg90JTazdqlcVf1dRAp$qB#ky zXC^4zy6+g)i24H=6Jk%mw_VWhf%BgD7BJR1Nus1FWv{yd55p2~-0NR-tyML@sJsFH zSww@35OaV(B4+*h^8H_m`0o>r{~+DJwfsXc?HFlEV0!rAYv^}89glUIdP!k;YTU(u zMsO;KZ9|uK=`|yP_{)%eU)D91HIGpO#u=`A8SW`YsX8ysu3fO2XcG4tDNZH4AXP*s z_;r`SHJohhF!&DmlCY(bWFxVQUS394wT1w)1!60*_H3?x5fH1u7{l#&rE{|-VkrTr zu`wUE24ln}_heHEO&7q6b&K;gr3Lr$D>Y_$JP*x8-8f+n=P31{AbI{U8E*wGvE3aj z!9_)dlLLnK=^Rh=^_X^Hc07z4DlR5_G)sRYq)`x%uM*sM%8d{pByTODR+8sz*mSKu z)I)fjTA8%jw0#DVGoSCRWwtsznTR61e`a^}JIy-gPk5|>0s!d!kJ$Y$v#|fd_J8j2 z5B8&!q-8hw;Jb)!@kH3=u-2vFE`v%#{51$Pl1f1y=O>1;#{rIh6x=B}!`&b@B$aHGaXD3bd+G zAIarW&-IU|gS~a5T>{`o!r%j%$y2cIBBPSz0b{i5&|KH%hSK$FI91KT=GDl72lkuA zgT5XidT4P7L#*8=x80mB3;-`R4kOx$ZL${(-CBiije%1z#kanGJszI4&83$ph}^&K z0gC1}JW_vbWWDAY^ase3uoYHMIlK%Z^*TYZdJMH@nbbe7J2t$GHyrt;Ftg-3;dd@z zPg@41^SP&Cevx^n1d1dXB}E=;onXiAk@*u*Em;fOot8Y88Lij@-4G3c&#nT;WJy!z zKRI!DSFaK03<1rAP_@dWqCQ5OqcXC5$%|2z|KQ<9T?Ip-lizkD>96En-2SP ztJ-6Sd(J(4h1S`Rhiu#6!PUf&~xi( z8Oy3i{pMvIfu-MR5RbNGk;BkVw_SWi*4!A+Hs^+b=Rc*I%kk3hhd)8!_b1h;{XYc5 zzpotrn?U%tyZ;CRs%4+;LnmL1` z5M}Hre8>~edJl|aSQnT}E>pSSEXmJk7aw|VP(o6)=!r9Vm{5>@Mc4F|2gfb zNcu}Z|6v*F&-_;GZ%qH|<uk(HY~&W}Jd zset~&ke(QFa>2#*QXw4+a~?b{exb6;rG)kV@v^1{PFD|1Ub6^=Rk#*;IAt$FA$+)f z7w(Zd9W2%aMXI&4ovX(K?^UCFn5@40*LPtg`K*RcJ*gt4c|Rd7(eQ7m1``Vr@4go6 z$(NDW8J=BOU!+ut4$giV_1#vJ06Zz@KE>aWDcv<8JGzvI*2EANjL) z9)xUqI`ZG0p50JT5M#^RLu*;nC~9Iduw`UxRF??Y@T2Jq^EihN50trpTyWqsTZ+?6 z%Ttm^Yrg;NTmoV~u-AWTT00m3fWqIL>o3de|NhoL+$>9Z!{SdB^G18X1LHL(*_oM{MTA5Xr3x6+&hph-Nr0i*%+6|c9B2Bb!CRM?;N`t zIYE@7yY>!a$e>|vg#)!)N1O4{Q*yW;l3c^edTrMY*g17%SU6PzeWIP{JEdDFPni2g zM$_(Lm;1sjd>6}ex@a0-Sxu26u<=|Js^_7<%$0*9ayi@IY=`s`l5HJ9uWXh}U%v0> zq1hYoan%6sDHanD=QuCB@N~$v&p=yBljvIlg1$1>;dZ^1h-m}bH#8odG3H{V079WU@-y@}J!rz?tI!I0p)Y9NLl%0pk zm`tPcAF)@)VuCcOx;4%nX?#jwe2MAQ|`m@(%S5D0we|5NH$ke7WwAXq!l)ltLa_J49C+#yBBM+)Z<_?vn&cDQ7kq47*Mp;Tjjn)OIQx$EMLTGj0%HIsmfaz#g{k!- z`0+vb`X8!f_@AXJ(X2jZojm{mt{VWrzuE!(KYLC8X=n7Og}#H6hohazb-j(%2GRzS z<-S)R+D7xGRQGDL^+q#u-(YhBB-yj8Wsc{}+WWG$vUby#n?;q*=hOSc!nK94x)?bK z9UU88typXf#OinJZeMQiFT`>}srkEjYG1OxUgU3RC~(wUxJ2(MW%+l!)FIyB$CyuD zaycO#4Fv(=BnDzqhDSJ4`(+QFFoDA z{NlhrIyPp%Q_JEi5GH&D^}c|C9%I^n@7HjDiH$$n-^$zh?U>k+kO9zxPL_ISD<>tUzCfR?Kwtk{maq~tMm zrmOVHpBK@Wr%=z_W6;R`GaKAMx$+%$h&r@BE0JU>1;s7A+sEfS;=(t@>2bkP1@&jE zD?3ZU!OYQI@x;Z{kqo%x&Q3@k8(sV!)AIyB!`Cv<8b6T_JMK8QxsM3$cs@0wQVi}B zt2AOk8p9M-#kpujx7p1iJ3x%Hno1PNhFjba%8VK8-ezFQS1Hm84mqak`7a4x`~qm( zN%~cq%B)$ha3H~?2;2I3BSzB{_ovHVZclUx{yqxp6$$rRHaE!ql{zwaYiKQw6LBby zbT=Sv=~SVjqEdqXaD3!O=DJGuhy3yG-PLW?WB#+EAJjGE-W}bV6SLTerbh3~x~lbf zb9^v1b0LD{jnQes$k9KjWl4db+0&|zE6~Nma|24Cjmp`y;0hP(l4~ZE1gW(aV{L_5r4=tn3dAo?4VWmUH zBk4~yxl3Q)o{}MJn2q}*>9-t-34uj%0z%b%Z;+CGi1Ayn!+WYvcTnqSi&p;V2*aqu6 zi#7(`6IsPDr=2|8h|LMxl$3ep_@rsW z$b7?8<4S0y^jpEAa>;znq^izmhmL_~eciU_dmV>(=yhP|E0rd0*590X+PTuXZy}6! zV6RVx!DuLdz=){N@#bQ${Z*SSfAr(l1S`J3UXHGLnopvHo^RQZxwxqg+ZRyUXK^Di zDJy*8)*Y|+47BhVP~8%eyJVFI*Z85eVw8gbN3hQUt0$oz&+kg*ELJNAg3-X1W!0kT ziezawf-!*yY?R=(AkK^rZ2*^%pu9xjm{#3uh2K=FGHpx{`CTnVEnBx~(3}0W4GZ;w zbhM9;049psQ-b?q4stwhsKCS1#qHuXdr_JpO}Ep>k52pkdEEL_?epAc!;Z?r-Q%O? zq~1A5=ye>y7%TtQMHRrK46D&Gsk)jZJvd}*sc=Dq6;B^y7;oM0f+98AbXBwEXT)_(WAL@fc2Tw{Aqx!n{F33POZt7(9m<|?$a6^@|fVkEc&Y=^gi0Z7JiflFrS zoSN8`z5?;RRO>wvM$7>UufyrEyUOov{8$NmI2C38W8kvPm>%yd3EA=o?c!-(*&Z?s z705T%4vLSCc0y1rokbFko-T;4+Ry-=aR_lj=lp5-{mX=X8)~g##WaLz;ox`!Lnh95 zFmHZw-gG^v8Z&1u_2Im`M>DdUtr@5Opwtc30f?m{da}?;#^bFLv1aY+%WB=xB9en` z(Dy=%;`a?`KZL%w1Vjg^Cr$T*;7h{F=>jpSB}V>Zy($(}_B>-p4t^N%rBuecjc|9Z za4JCMO#**gcutXsi9J~10nH|jI+0#2Si3OpnrOC+vfUHfiWp7_Gq9)?lAb&ny=jV5 z(g9I5Ln%WtA1pvUC$ zMZQgW;IBVBkY>HHN*2`SgHxIzY9JjuAc77Z{i389rVgQ`nT5D3iivr_K8C3u$~r<{ zIZw(Zs*P;+KABjv%d9CweUxTcCuP*xdZUGT%vi6m+0ck_HMmE(AeWWINx#6~5rc+8 zhbu{*AI)UKdJul_GoV^;&^zDy!N-t_srq+N6ubJPCG!-}=;Y$^sCS15k(`M(g$KyA zGe5G0M3<`E25S|oTAaiSqY=4z8mVPTC zUielZ!osqsn0!+r6P)#E(=FX}J5089G}>`I0+8e-heN1LmhTIP71@C%gG%Lxu9l~S zJxNZPJ^}ok`c1xR1LlF6NU+}6sB>M37=CTr1W0e+P&vWc99ASHvQX^U$tm0I&57Hv z2y3q{xN%#V$pIjGjHkqiJ2PJ&GkvNJ6r1t0ml6x67H9a`vaLnm~2YEv9lKT zc(;AkekPT@OjWc^e!Y{vQlD%~{zc2wFQ-Cgyuj&6hrhN9i4oQn&)8&3iWDEr$P0Qw zP_a#1g^`_%`%^xe&4bSa=zQ@CCV$Mk;AT!)yyxcHH12dgbk z<+@UX>HwnE(?dDc5bYkao!L2zKRm7nHsg_Qvd5^7b<& z3W_5Qq#JaT5lK;(*IUPLK6&2j_y=;P+~(WOqrDehqt`1lJh%B z?E*HV5D0Z`d8vI1^Hpz<6irDur%GBK?+UTO_yT7oBS;`v-CmD!7vEuBLqmeo>5Mvgd-gVw$h^YX=4fo zkcmc>Btv=O?-g`u{M{9G=O4(`RT;19r_c!#EIx`MYKb`{mHa`GON0x0t2IL*c56PM zMjd@XjI66ja$WVjII z%G?v|wTmVUgm%6JUuSdcV5RhrYhGM;n7`@G$SpmY=1L;rxk7Qg-x4VZbK@ zzC0keTPo9b;R#KHd$yt3HfYhB9IK%ye-fDU-Teh*FRjG0YC?G(b}Pr{PD!6RY{^hK z2!NzUJ=C!Z4cyQDDDex#199`DQetAdVnM;V!UJD*AST{TaO}5yg_of#(KD@px#r8w z`6+ydNUJyjwI z9rR&TaWiphUW>BUtx7k8%oo>B0qaBTC}Q5@pJN9ZxCg)!rsBT6JqaWQULnh1An2(p zy!Dvh-z1XkRA?){2quwdK^(z|%R6d?tDjD?#lw~H@=assIUb2pqmTIGRNdYHpd;|5 zz0}jG#x1g+NIB+@*dNxC7YKs;Tk__;Wk*GOF|+T714~iYobxfX-?VmuKfnobUpQL1 z#5$&24VW6W9pzMbe)D4ECoOhGz^i)trepZ{?Q=YE2G)8T1XG||?u?Y8dB+q_E;K>U z58Ows;j4KeC0Lte3xzorc@NJHfrIn5cDBT$z*8ocK8LMIOl1$|k!Z;s5DGQR)UPL>XsxlEgiwBe zDl~V`HOZMa6h~a8ybRwpZGQ`h9VC=(JBD5_9rC-GFT}@~@1?F=Zoj9!p<$f)luam@ z5+#Vi^jhj%*mh;=%$d(wMceik^CJa7LC+f#RS>vIF~Msk$N}}id z{^TAv(9X6;{)Yd^g9}80cCUkN%46#DHa+X*{Ohh4h{bakxNC9R4FD1bl5zm3&=60= zUvA9~yoe8M)HAK+wA5%Yz(&N|=z!5ofZVgptW^$23Osd|3G$>tqcQpfJIgEk`=b z)(!))b{xE7MxzTV{WfsAGe)19Um|!Y$e7W9>d};Y6j*mmP5wn!VsQC@8LFFV>Ogdq zFtD3{s^7BV3;Hri2|? zZ|QZxP`bj#?`^SgAl28765iLg{ zj^FImEA>cIOJ0CY0V^y9mM~fdgnD2g3I)2SoKc`Bm|sqIo9->Fb;+Hu&XuQ^iM?4$ zfj*mjdJ+1QdQ{|y4+?)vGj+oOqUJk_x z0y!Sn23v5Wc&=%)l%VpGsw2i3Y+1`>TkLCP8_$`f?%&VC*DH{+@R|5=B=7QQJ{N_p zX?s1tRi>uXKImM^cqd2?G|1Q;i%9rOxy7naj}Qx@D)-YCCtz6y8@NNAL^ps3Fd2OO<;4SkUq%o5b&h4gED|3G1b(V0Az;@T?ZBp=pzLZR4z ztOz;@Y9Z)TlYAB%8CY7Pk7h<(n zV7i;{&UA9nI2M&OE%KZRN5UULZh`Y`1IXYfg^6Tr7mhI4k!h`n^6AyO>F@DtJ`=Xm zorqp2*v;E)p(BXXwWDsply%ex=BaxUaV|XI3K4RjD1&giz8<3(8gsutp?*(_1K5yU zE((+&;W-kVZ+k*u-u$6bJLj&75ITLsz<4NnxO5?Ou8Yj27-?5V_aJSf&X^rp&+@V} zTv#9QzKioiM=768z~v*ph#Qjp)U^!u?+BWU#9vUU5^Da= zbL^&-CE>4!{NpYBSFhMI9MvKQ!(u`6%KNyEGZJ(yjKw1=$56oZ1EU-^5_5}LzJ=>} ztsBzqI1J)@*qPWSoH8Gt_k};+@HYY`AtKBe=QWXnCn4G_R@M=YzzXzL*gqcX8|kL# zv}1J?1NEoHgO#Q(>ffHSA5y)u6^IB{td;IpZ%ocGZr~H~mR?xrkfJb?Kr1G1tWKI& zx`HEGfjH2q_ol&roM*p|B?+6+)8om7=C8$nQ$BdRca;9PcZY)kU|q}df#aK{)m15t ze>ViS7}}_po|)2H(vh=!dSMbaRElD$z&3*__f=~?OlueFmh)NWb@wS|JpLg1lD?&s z!ua{nJ(E$~W2f066y=Q8Ca?g|szFeSIKVCQN-Wv<0j9>-p-A{`hJ7P9P3^IFcKd99 zG)Zwy5q=DV3OJk=P`G(id(%P%>@Mr-Q`eikJ<64U7JH4*)^gko+Jqc1Vn8zQrZp!5sq(Ezibqyt{%qj7X?+ua0a`}2$@cVtwWuJ zAQ1^r-!~((0=vY$oLq0OR*#?G-sj9>th{_In!O9l-J7aGqFKLZd9@z&9FwywcKDCs zkk~#V0y$YCm=d*oe*H--10}(-pyf-Ttz|jb7zY z0Xt@k^7iYu`9Zrx*A+cJl#=yOc{vK+w1>8+If`KDyv)A7_zkvjrK(0H96S1XQy0vr zuGZk5hR6E1GZ>X$SZieXk68O%{lC@M4qO*!q}RH=fCB|#(D^%F+p~|H+^-d{-e)j} zyF*?x3S8Ati$ywTf-idZ0of7&txBAUZPm?lMd5CG1Pyd!?!Coqt<4)qbhA;++pJ17 zN^>x0jJK+#avWdDfUreHE>3qvFQ{Em_4U~c87KKQ-?ALWyyr$GWbMQG{o(obOxh>Y z-!vXFtbGTPeJf3wWXMvN7>b$7Wol<&AiJjbJ-p+dlnGbB($5%(b$=T+)K=$Jd!qi} ziUSU)XNRvId*)zL^eyH^elCg5F|X@C*1k;QGn1FSjbGj2WC7e}17}J*%>xO$%35IF zm6E)(jK9nWlj)q9jPep!60rf#rc{E1VMce1q?}=aSh26VF%5oB>$IsV`%YvEWn?Lm zp?30xm(zSpy5N@G=uMJrJ=0tj1-3Iw5z zynebBSeg=7S3Hcg53-OZ_2de0;J}DwVWnOeUfwhE+X+kDHM`n8;}ZjzEU+7RN}c0s zWfs31K5y0kZXsw2R@Wjh1z45d<%3N;(jB7rI#T=wny<3-$G(G}&+dt=tA$JEU16BM zx2m#pfrJ!#`55Ks+XJCfu@<|Kqo5^KeP(BxQnV7O;{*`?V*9Q7l|NbB z2xC*&J^@0{DmAit3lb|N{MbdB3V)*bI7awZ$DW(X&YMTW6Jozz@@om!fpm|yZ#|~k zCsUxE|MIQ5G^9HrB4A*dGMlf8#P1nFWzBO-zw2{TXS1tfY~&)&Czfq~>S72-wvU;H zB$ky^f-`!dr#4ZnsNu;y*YktT9#Kk=83IfWUNpi6LlYFL+~{mB9!!E2-*w6;;c z+rbB!F&9tw5G&JwOtsx)vn_3`=OS}w9p@pE(E@%1aMaF91XFywd`IxF zb463V-NHO1_0(yNZvX+HVsBgYPUs8Vo)8b0sk3&}SffBsq<2Kx4X#G7qt3&PMIB%8 zOkK(aSI{+#J93dLX%B{jd|i>4$&^rDliZCD##P_Zv9)ZcvfT>jlI&wrU!qyLo`-UH zpH>q|yz9Rs}gsdM&son;M9IOBG;QZ%`8!+Q4;eINTt)k9Lf*{VGII1M3X`W z*dNMn@-&{VvUi62s2on}Z(baY$i)KLz*U++JoqM?nouwJK!C>Pk1-&VK1`@~Ez+S* z`W~MT53+Z=1&KSbflTsbtpMA>%tHHfW}w13Y8{ZabIlER!|hElx{~&Ry=vPx8s^*; za_afWOS(5nhYE9^-yddVokE24Ty+f?Uf+E_s4RGXQz64J$26207-R8lPSnos?Ognms}L z!iiS6y@%*(Bm$X-0?iktVrGA-4Q>CCvjSr@<8AVMvVC1f+0D&jmDot*od9tRSze0+ zjC6!1`v$`9f4Fjxtxih{`Afh7DMq1zb|1~riO`vu&9iaLwuu;s@|E(9r()^JyTeQSSdVTI$@hGkF*mcuDVuy_hlT;| zp;8?v(r#L8BhhvC#*y1GWKTEJcOI^}tnn9XduO(Oc-U z+{||PNGN~b$W{Y&pQw@o*h<5CA9OTP%0f=)xbJyL`U-Hr>T*32g5-JyZZ_$IDsj92 z0^POX-VQto$9&D65sbft$MF7;>cpGtB!7;otW2Gj9q?3g!GRVB#9ia0m1fTtpoveJ zWH3kirlZaz$w#qz?<2^HFSIZzI_@g5QRNp)XS}i>A;2O80YMd0k1uuW%-v}iB0o$F znR!XZEnO}>a(9i_ASeMq6Us6#g1I=x=ywz(_g}$a%h+XdzxEh}>?k$XluF0YZkX}C z{n+0pq}-yT?m5s`@cMYLJa~NI{&vju5FLMLHISE|)lEpRGH@$yFT=~{rzAg8iJ@oK z##{j4&GJH7{PK)?p;d^+gE*$3^%aWqRwb(|9Gk0K@|)gSw8&yO?psLkvf-O#MHDKx zounE`e;w|PbVe9A?%H3}NeLm7qLm*Ou zb`s8m$y`fEkXjV{ZgCtAhqX{7O{KsBCmjdDZ$zDA#C|-dD$wZ zC7Mo^ZtrcUT~D`)yoXz?n*^-{T88Q19NLjOZOLV^&^Z1k?eV)Ya#qS4=MTjnC$H)= z#t&<7EcWHMVEy#jGo5ywcMALIX8M74r9?}}QVDCWDCK2q-eBEG6dsRZqFF1X9hny6 z9Ph=yak1!bevimqboVbTc8)Cgw@wHXF$Q7gh+!k*Jh7An(vUHgv#^G8E3~RA63a7} z@8OVu(zP(enIgyTV+UPPd$zSwgg(f$A{vY^CN!W;^Wny!Gw&NNkKzayQoTP^o$}W_ z(KRWA1x+dw)9ptU`KM#=NxZw53@MUdam9{U&SLc8_=Wo_4t%c))CymyC8%?DyIIAL zWm`({fr1aI%)KNtG{lF~kr3auqDR*z)Zv91QL-CmJgebd-?Eo4=ywEG-p=Ca63 zHg3>xYNj-)tyflN;wyQzpp}2kgoR@{L#QU6TuV|D)H1Jvh;CO|ZC8yI8>1~n$X%6Z z2B{EoqNT2Cjln9_6CVR9eqcq5)t+B1HCt(UWEFX_@1@ueml@MK>l81|a!z?Wz?tq*h_K2qUaHnZ8~*o8mTh zRfIIfX3qpV(nh%85gl2 zOYdq{%d8Oem{*Qg^`D&hazV~#7gQ#_f(9UBY|}(?^dhL9SgdIqn`@ zvQh3=4~QDJ6DV}969!V;8{tzo&|w8c*X1^TN+E}cGBwSJ3%%D!y3rbIC((B?zk~D< z4Qc3c#e3S=M`KmjsS%?tEl6ZNV85MUuo9Y)AFgh-itKL31`snjPjIHJTPRpEUu-}!YD)Zctn-Lff>SYZ9*fy~ky->igAoVCJ zV8-|e$T2j)%f4rk-y@p{IB&kDFL`lP2y40!`rx-7;6{iu6ke(GSs|a-Dj&ragY4qD zzdc@a8|fn+0y46puTJxdJmhc}29|`S6;vbze15a*#VVsCi@ZY%LR&}ph#h-_J2LT3 z(uJSkeD^2pD6Z)6Gbfy3J}wX1r|h~zzbhc)G*;4!Z7n@~>JPV=m$2q`pm|vj;@}Ra zTe$lrb5$}CGW%EL&PI}Z@st4uZBC6Tv*CIF5>f~jNu)%(GLmmavQhGC4~i#hw$iQd z;;UO3$x$n}&f&&TSj-WYFSNfper(ath8QJMvPERLI$3|(rs;AX;9Ey?@iL*gtg=pX zG815&q{i-U8umyneKkAC%5>xto!fd_+fII=4(1i5P&gddds;S%5 zvGWkiZnxIGmO!nrAX?kCAb8&(PrTaEgCe+t)$`&qli1bQV0- zhF=E3N2{8wYrRN1H)^wl(r$>sHFU5Yq^atf{Y)?N$slpoeG1AN(u2ENw-O`@@Fiq$ zy$-Fb!M$GLCTj=0!eMxEHt*B;05bft%TdHl4U%pFx~h&m1X*61+%c6s{@@n%K+I^$ z3bNj}?UCxly8Z#&Rit8RswkcG+OmPgbH1f)eS;cF5ZBQuPn#H?7}zuqMcn_AF|^@x zi&ic~c2Bq*O|QfDZ9_g|46|h`_Ejbo*CDaxo1m)13d)D!hk+(~?GF(3a1w68I$23i z)a#8o$o*^M)Mmv=H3N2|kI^WdqNG|bE~4qYRdk+yDmWK0Lt*!m*Q{X1F~YUIc&rW#el%=+SN_T>Am3QZQBixvH=Mvd{MT zr)?GK&2%{{oJv;-03akFF#A{kvz#FZeR{^{jE?O|Rv$~viW*&+ti{O;+7Vqd;eb+C zxFlB^Vk#;*71925n>#x7PHR3I!Kat??^@~$xLUmO7UUF?X%}v05^Y3ad)J`c&bReW zZ)k|O_ibaG(ArzgwF~&BGp;_$kab>_oUvFiAIbHr5VGbC7axm?fz@fC*^s3+f<^N=1Sv}qLa?_vbUPCat3OQHyya=L(qn& z&WY5)KSJO5P8V8*$vu93iqUzD7(vRp4#LT`FTI3@DdDZ^W3??QcM3~;7r47QN{j@x z(x--$Ps>b1c|XOAWk_g~#1Oz2@EwJWhP{=pNBC4 z<3QWu;L$j&(W`GQ$ILPu%FI*;M(G~BfJ}fR$P7qGoHp;SpP=fKeqSao?lUU8IlWYx zbNI7uxWyA-C%6Mj@Xt};a@J1qk3sixh^3ULn*JcraKdn@xOQnM+YO&ilf&gg@BG)) zsgJW`tl?4oPI9<%lXbivr9_C*5}%o;C9bBu(8Dt(4rL`wa#zKp`h6#(+@H59z6A&^ z_PBeco`+$m`Wkf#5m267AoOT_>?-mi(7%|B?;##se0v4G>V7&6uNkt^UizbB%Y*fl zd}aFZ3DF;y*l7il;J@{gnvxQU@}ZyF zKXKEUtCbiForfbZ+b&MI!a3xdsJxW#ZcUX_RB=mv?Xqc3^}!CCH2N^bY0OVLETS6k zoxzNKDREFiJ7m~#&y!G6X^rN1hx<4eB&IAWc5?>`el`zd?qe==n;$g1D8F8E;dia! z_W$@8Hlg`#Zw&P@{N4rf?je}^ipG#HE-7w*#pv(b^*v zDkq<>m9I8*KATJxuG`OKMsWYmaERW>%9|BWQl4$=uOwS3+l!6qeytjRLbDE6O`|dG zJ-k)HK~2aYMaq@w{DgwHT}+XbS!cylFXFQW#VjuM37x{=26BK|EbS4j$S<&zLA8SpHJQQ(1UKfnf6)*RktP+46#+;*sNAKmSInu0DrpN~|pn5v1ECn(NZ zgNiz)`POd?Viwd4NSe%Tf*e1<+|amfO`q_+H(GL^jWE3|#I1h6Y?>W;{Pvd{Xj3AmG(hvopUJez3j@Xd$DRC3}8_snYhS%WsAB^)qbwg|<79UF>G;>n4k!cID3D32{TNr-#$F$W)Gj8PCh_oOCq@EJb7b#f#Zal zBkoI$E|Dk{KM9Xj5OB7)0Ni7{(<`B%OKEbuLBH(4-k3!H9DmJ9q78J-&f3j_c+wFv z;ZYf9Ud>5-!?eMu5chMaredGx5es@7NX=6R8%5jbn;V;}@Oh;MPJ*y+n8(aa)eD(s z7Sv=bN~O#^!}EX}uHZ3k#lBR%!WtXG9Q7eC57EJubvsj;%1WZVNnkGr9g9}$iGlZ# zCQX-HsBV|mk~zRT9`ejP8taFasDA*^sM(IE`6k0(!PIMQE&4|orp3GOj3Ileajm2_ ztbpX0V@!e0#{Iq%8uQrUWO8uAuDVshvdSQ{au~83<1^6M{OKAfF-E7zxCbCZ#q!mw z;_60NELc_kA+M?;=ITI`;d29h!D}KtjTG+lMO1(HP2c~GtO+%|Y(iR{X!RYh^&tye zAwWk*hfFtlMR#^ZM;=f2Rk0PahWEa(Rn0jOHixHnMRylZ2aOk0owM|g2jt@%49MFZ zUXcPvUpqvsuScvecGTXHGA3Ie^8B05rQ?u+Yr*B{n@`pq92LQm{;dxVY(al z6$vp2&g37*FK}1T_6u(>4B}V8N63N7FnvS(H@Uq41RY)ccg(?^O>^^i(Fh7C3cgTn zy{BAF(40TPT-vWK{`UzsQinrqyV<;eC*aWCO`e27Uy4igh&8OU4BMg`*HGshse&&i zA78fYwl79jk$c6Uli6Bd1N_y((RDNDSfPv6Mt4ys+)nVoT&C;x~|=M9w=2 zQde~k#RsgN{KP^9Jz zl9zP`nkU=d%(OaLu{^+rF!tIUH$wrd#m?^>3QLByx|M!Z5rJ~)g~nM)c43UMYR6;c$#gv|;97&eVA~HsRN=^8_j~`A}$1jd1FjWIIsG8IU%ZjaYy0vUe zdW|<+T+Z;yXdz_#X1Wfg`xZ zapPq#t5-9#7&cQx7kL6Jn4^b}_9u7~#ZIC1u_WoGXA+niJ4-`IJ@ZnG32EM$N25WbLgHq=%XxznUzJQ0`_ z!^yi&z&f4Q5mu{o>gn!~v+sRjB=_Ffng1^UIY7q0k{apR+?k^NQ}Lp9-8VV|#{JKo z8+PA7_>G3sk3Xn9dt)y^^8*oVSo~A6TrbTLhl&?F=x{ zK`}4okzp@;Y`DXBPS|<%sDuG{?_k^tjlQ|YuL3pu9;z=4Q8!)P_kz%Ua{v^2&-9&u zXqr5wTi9-c)NlUfyG_i1y*Sm6hRC^w(SX6aA9FK^jLG2G0h6f8&p!^1PhzXKxhrgk z4ICe2?fpk)>N;MLx%-ZeJ>-7hba*9XrRl!FeiR{o1qU3XFI*TWbXV^)Y$k>4AN^&a z|C{o@s(UNzn?v?B8W*5(i|qdbyY!@RyaznKW-`CB+rBcO?;ZO5s(5k0-ch^zfzW#b z@&Y@_E;OTKrErk}*xa~d*Ix`s&El<=JB9@f;aRt#1^ zKS+NICa2FBf|8a~WwZamZ7-2s9BwVKeCt~yn=N;bd7y^A`{$FHO+@bS7|TC<*g;Nt zxPtiw(_VGh6t|nPl(tYFT?HLX#73I3up;CRz()+ESljS9a0*VGNgxSs{1ubHlwj49 zq3NrwQ*6P-QfF-^aeIz<2PpK}XnZ0pBF5KtnU0_`&hUD4-dbLP>SSHVmw;Pop;p;i z;wnvwu#(kawBhb&nH{PpPl}}Kw0Mv$VPH>)1valvj=y;(cdMd{L~_9WMYmL^=9Y-C z_l_t8^Wv5uA+NHB8fc~;r6UjCt>RBL-L9`4_f^^`9v`GYJ5mxV8TTdOteJ=f2+-dx zGZc!TFQMrs#KvyV^xOeL4>^36{~!XG>E#mripyv+PsQ<;GA^kmYUIvo)3+s5;zs0T z&STBdsBsTU)1CF8dPy^)r6?klOdZidNk4HWKBWS+#FH`PWXZoH2qWTCg0nh2s8ozU zqa!rZGRA{~DG6j_xZMiTOLJe;qJD&I+X2rZ818>5L#2>zP-Lx3gGTJUtmK&8j>#aY?(+~VQ17K{rCk@m5Tw!{t1*JG`~g{x++T6^nUrdHF!3IKJ6aaV*C z=2iysqJ{MHbMP$b5H32~5umYN{O0&+L3MTz;nX%Qs%Sprl59hFSv!@Z7A_7~T7{f; zDLE3HDX~>tcri6nq#0mB9xh-)&q)GAR65mK^=3no)w+@kpE#R7ct5>!J-n8F1}K!( z7l$ulEdcIM&t?E7^yHvI7|9Coz3Kzl%#aDsY(tZY;qq2}+cAkRM8~Nwh;CPo-G!2j zsGTA&25Eb(!XVqB0SYdL_oJQ(B(vy0ma&_p9U(ZfOBffEhv$Iqv|lJHBVt?$5vAWb zFfXFb#;J9q+T6r_G!0E(uI1S0bS2+9uAz&>zj2y)iA(4y5#Fw}VC8(%SXK5da7A1a zj4ac_FBp#+Y22XoS!*rjS;>QIF$*k9DsL+_&Tgb8xEW4d`gI$9^xOe2kuA~!3vVGW zrK=80@PWB4PCIw@x(V=xJkt*98`$AQD%2T*J{88x`n|arPi-DfEsvtGT*pN3v-wbzEjxAOY?*kSQZV6xvvbgIl%%> zhj4SUDP)%z@iQ+CuNOuHkKI7ylqpZBx)|QIl6e2vzz>Hi=H)aBgG>Ta*^@tW_1xb{<##Cwy znVMAUHpVgS@#i?eYO_IR<3RxmWCRgi(OujqSq@wANOhAa9@d3$6l9xv^`R2S;PX}! z;>cIcFhySHAn2Y3PYVu-+{_`5hS10tC}|Hp(o_`6MEu0sknr*jRo&8v@b>6vK@qJ4 z&XeU~?*$PqHa*N7&B{GG9%)P^fxJ=zIF(*e-lWDi0uJ5a7Ro|5=eSx^hr*`7lJj5U zX{W!2VMI8~dl)bjq&OQA>LY<5O5>?w?+KmJVi$;ki`-g|MHEn;(gu?1>A*TmvNa^aCk=q)AAc zPcpm4>{)Ke1l{0Y^TXK23DoYplo-v)z6yz&6di_eLj=~<)!vl$qlOuwOMt-B0cT`| zvF{v2VJQT&{nS8T4)|KHEz*xS5)&A1{_sn(}*{4W(65nuxTHPYz zJ2+X<*#=HVnoeVmPIcX~h>H;mPN$%DB~0#y$5DM>Ti4~`li`^|k$oI{p}Cow&COB$ zCxhV7U#89~d}wiYkua?^J}Q9`rs|lGIuvKZt}Y7ZK4ST?$jiH)m7%ipz(n2U-o5yH49T#d&Yjf zLr3F<-r#$QQ!P5H;EFGqmJ%;OW1SxsFt;_QFV9+1anl?n#Yeg~l$S9@NF3ydOS?6U zv|5^rC2CYj>M$tY-2=u-0UpcC>1u|Ge!2PLJ&LP8h>dY@s7tQS zCgDSq`R)f*n9=KMN%Ah#?LK&W4T!{+n&WEr1S^@O_G0tlx5`2QIB?I<=kn9$_D-CD z>`j29KMmF*7`otdi-qPFS%58y<-A=u{zX-KDJ^=%^GW1l(oFiRQ(y^zB*$s>cK|n*T^hw`F)GpsoZGJkk`HMHH)H6t_`{> z{#iX!MkI6Wl<7nmRx8~>f~aCwtE}i8qUpO^ z)Y|D~gR4(*&RPr=U(xSWw>ywPc9Nb)>FV&y+d#&(ULF@c;63rRh5;wZ?dZxR*t54G zTz^{@`xh;@cXN&utmT<}{5+22qTKi-qB^>0n?JWX517|5xlo#v@>#jpQhs6{;Z&t= zd>f*CZJx8kUCB?~We1e((hf`@r<+O~Eb4GxIu5r*vfoFj@&py5Bb&!)OVEUiz$Z2%tzOU1``Q58<(f}fqT822b8kq+fsSQ5nK_5j{y@HAnV^H zL$e9XKSZw=r0m0EJNylENM%^o2c`nIsLx)<^)akpjvQ)3DE2r7qClL?1h41*T}w9* zxTis~Ux%ZJOcNwi6tEDrVn_%ByN2Z{_4ob9hDQv<*C;9+%gtkLFXpx^$AbK6BLB?D zvm#D*E^$}?Cu@86HKQfuu666Hofh7Ztcyz==bt4>Osbu?Z$CcW7abt_v?c3=#2q|O zHFBXH-cLORTs*{>fU!^0zo8NOzJsld?t>+-dS)U!)5BTR>r0J8j7xd;$%|or%ADes z?ohtXaCw*7gdWZPn)oUSe`ej*UVcGJnbk2IFqRWg2Y0gn4MOOKtrrgbLww?R zppn1jeS6>C)SNP=l8xec+oZY{fV|YMt%0Y@GZ-!!wwFCGlJ9aYQZ8zV_zmiZ=r@kV zUCQ9H{LY@gq|2nNMPUW>FLw0{P&wP5t&ooQB6tQ6HZY+9kMSH5)ILPXNJE~q38n%0 z{b67hzQU8{*0FfY(Mgi1q%$;l1R&wr^f&_6)j(t{b>yM=U7F@Jj&)zI)-#nMAsv$@ z!PB*7$;Zb)lP%mI~m+lsvUQOosD6dtDkslO+Tx&4<5uWZMunw z%EJw6KZnn&-wl&hC6}}Zo%HQ;i};^IvUKBwSWC~aq<)UfF4;s9Auu?=+2%C z7gyIuKXdH=LSC8UL{?5Hit1nwK=bZ8w!%Z9~w{$U27%n)oyDNcv zRnBjnP((w;XnM>ybhKEEO7o+Myu`W`=5BNeuG?f8L?JNxK_1(%C#=y-AW(CxyDQ!z zzp!zEbbB%-y9t;o&R9Ar-Q0ry7m^%O=%9j_%D3ciAnN^-X-6D$l%GtDbfJnpx{Or; z2$`NCrIjEu$YivcLunXflu65p(WD2;kgeg-&Q^SJc8YI-^Le4KA)pY9i;2A&Qf92E zs5(Mj-5M7*EoTv|%!3?RAkMMVEt^+$Gc8vI@lP#26YPQbiA62MaUFN0q>YO)DvI-#el6VfN-}@T*?- zx7CMe!AY3#%(yoU9-C@>Kcx`7{9mD7O(yd7DMto%8dmam%;jf46<5rRF;o>~cjyqi zPas#tmaQWjw7|6=iHM!$HwbJ+ni%9Az^KhP$;eEV&T=bw)NQOfhL=1HVk^GYHg>vw zm}%)5TGKrcni~D}bGf5#v}+uMVWN&3pHo(^GrL8pwSR`|$XQqs<*TM<5B?0d2al$M zF0ZMrc|x{PyLF}*drjM4 zez;bk+lS|N$8D4n0eM!scU_g43O=ZqKU{&o!w+g@36gh&Nv>yr)~Z&g@Y~&#;F@-b zsX-l0Tp$=-c}`${OU#&{oQ4?2*P=l8`j{{1!-2{eGb_(&_ld7tiNm|~Y`PKny6=%@to*e`%c?EPZj$dHi0>1x$e>Kkv&3n@}T-(5spkhRX~j*CV0Y zQvllP)NO4xe4(6fC1SjuBg>?yT*fRli#ICN$}lp=^@{k#+>?(|9GWx1HlZ<3zH|$% zcG$kM&YWLVBUmXC--c=m@*nQbP82b zqBP6*!ra%Vsch~|w_-*HrhG`e6_iS_n;FF^Nht$B?|`DF;e;f-)G9I2U@nND^|Uq9 zcXP|~96B;A>fv4rndKmQD~8CR5qZhM@%frxp3zOkko_ zD&2`1&Cdd$jy$YbL;@hyQsXEGay&~`Wu8~;#YGwtIWc>3X{2(1<9_k?F=%n#@vtXT zELG--D}L--j%?Q05`7!ml)adr)5x@hld@pGB z)Rb1hd!W}2(rd{wJD(L1+SijeuQT(!os(xk_ELx^=WHEi?UhEa=sLV8(C^hFgyNID)OfdvY+__PsVLbs6w$n_-GO)Z|?aUm*cQXJ+1!kJu05{kHFW%j*VExQ%( z)K^l0jm5f!o{p{d>YL?zQp8H~2U8M=F)7)l7H%#%wD)IEHiMyI%emmK29`-m6=8m} zcyHyW+5zF!+9d?TC|TbVJ>r?;ANp6Niq#EX0Q6`bGU4q0^tb*`XqMwI{B#RfMQ4?njb-~pH8g8!ljEideH z^Fxy!?@j?FM)2*K2oS&jdsgCPqbII~+oqP#-`mpLWxtmAk-9C<)DWYyQFKH1@yyfS za6CObTF0oe9p(jM5Op{Czzx<*-ADmwjR*kNozdM7(*1R+YC`jfEz$=QG;8xXg|#Js z?V8J?8P_+*VlsVwuZ`r;^$CB&k9JKAz-9jE?Ck~$-<5+{mB0P=OfLg?d$tpbq^O1* zSWE!Sdv=SgU+~E5DiQedROc6Zft&@_NwaYC&s1>$ZO$c5UAX>&MVyi5!3Lld%-(q7 zw~Z1-hp$EJGJ+4(7}FO8kjYy0&`S?~N4H>FVP>>LEIe6`7eMB0xmW<_IeI6C|Y|THn!cdMz&~1L#{w9e z3eCkzE&w;shmMWq73?6WXxy$?-_i1smcD#j{%)6Gp-&lisW{>yNS(9Vys0ZXF^7?W z{yQMMyeafu(fdxEkeR@LreOnA$nI)5ySx)S#NtxSnFt3zmq{Ce(iI?LVB3C6N|8zN zM#!C3^g;{uf%#T)sX4S@=MIRQ?9J@4rrNYf+i1{S4ctES`!I&{HM>?#1@+d@B@pEGMeSoaC;mpDk~t zgJgiScFioKZwa%G`~zsJb6SL^a#?^ir$-FOV19y?)L8Y+LJBI|powthCcj(CWl#hF zOf94vWWoH85Ph)nVemSy?V($kwunw&a9E>Yss&8IE*%gdM;fBky9;n7eZosl>{X}G z`vF2Ot=tnqO#6u);aHFAO(6hs8#_Q%a#P#qohYAhUx*~?hHsAPqE56nv5C^g!*d__ z5jpS0o-aXZaY;@>vFl|Ul%R@R%#{5r9n>R-hR$n%X;yNb4EIZWd8BR(CZ@)tIiXl7 zd6XU>lZi&M)s{*El3W9v7q=M>88o4q@eM(;%<92AQ0aj3k{2&w@#|(0oItw``|hp? z_;yp@lx|g>-sIURk~?jYd;7F`AgH2|Gkjar1iKvbb>AfX1CFYXow}#$+Ww&?{NBT^n-V)sB%WDX2pj2>*Pvn!#q3-3{x5Rtgg zkhCko5Z;h>%nttvGyZU+M$sCw7bFw>U8S#{w4#hGDXh(3~El^ z64!)sc8JnPH^dTt)Wa{AVzYDo3r%m-LyV~yhHg0xeCNaVlcR%tt#!gj;hnojg zAMm>fc8V1v<8fB-P&xN2a#5`CHRL;Qcf8ENcT}18Sn`IL&9AdPQjIO3fTlop-VQ9B z?-cKj;**ezJ@dL3g0z8vfSiH;MwC=? zaxk|s{j6rY{Fj=|DhiPq=T)WuqiZWJcdXq>6apDuChLC*)Ws|$Kka-JT76XQeKL7# z4S@qB|6AM6c8~aLW<=CI)H~EY)(v6^@=2+_jy`0;2L=Kv1O6L{{l7ob|Ex>Zi5Zpc zl}8Hd0^Z}N3j+yrT?d9uYwpKFb%8MUn{K9^iuux5$okBAv1VaNI^73(l@n1!N4rP+ zK9=I;_;h&q`xckoP)~swNfpka{6Hb$3l*-ix>7k!so=xX{o0kV_~MD0VBtO@9x>+g zI=x*-j(p|(D#^=q<3J-@eVmmNrIS$G4^Nv-y_Jrdyrrq{5iRd%tq5yV(9$|MbSmgmcJ0Tu&aFAOnfX5KSR z`fsD= zJjO?P51q3AtfMA(X1AO8iMYKhJ;C$@7JvB5D{lB!nzvwQmJ`lPv?$t#V@w+mABBXbz@msjlk4~hO{_e&aT-MQ(2_MobpR~GVb=8vsG;bXdnp|)m^g+a+G z?YTxgodt%HVzA-b2T!YBdn)*9SNQO1?)xZ&Z3BCpmmLFp&giyBZfLfpkCjp5Zb|^= ztjEkC-1c|x!P|brSRK#sVYpH4nJZA2onRcFd;?X$Dz#7f4h0N%9>rJ$M`|4-OacKo z0u77k8WW86_4lz<h>25y&yNsh{&Mb3-E%X~YiN@ZPKyY& z4qN1i9f={C$Y)7GwOn_qdluWK~}K(m^|&Q9VZL-rwFa%($*%Tu4dfWkXb; zFT^rg2Ho)m9-jf#-JveW`MBgK2}Q*;Ucp8N54v34#>!dC_lfkifJ=s?HiTwR_Z^RC=;vX8x- z7EK|{Ca+R>OkS?u+~18q#^fIC)DSTKofc0n4%CD;onUx!QO$%eF)n(n|dBuR}B}{MBfl zMfZC5$JeNgQ@B@*t~`j#aML=xW$dr|pk0H6aBBcU`1W7}i@NF**t+1$csIA^2uXv| zV|o%Kh7pF+02oiu5+&7{Qt6oUO#fENY6W>FY45WPdZwahDK_OqS-?Y7vQ%rVW z;yFk4Nn`q~3ui%Sb3fDoBmUXCFsh(_{nl!yc5J7J%6tP&5=AGNt{z8*gB*Bt)+V(W z-ip}D*CoNA4k&y%{OIyNb`jIkDkmnnvzHaxr>&B9Y@p_So9%f2K2~|Rj)ph6JT_Pn z1t2u)-D()}SmpT}yw83@Nd6VEY4YFVi`ceXKrXpYf?wY`%G+_VbJ0yBNQh-kWdleA zoxTkSFPv~od0lT&MoH*B#51tgwhT92bDpGnt?CAgdRY|?H;K`56Js>q_)}pF^!4gn z6`B-U^@59aOo|bLH7h!DjhDChy}HQdOhgGf%L0zosnvHk$04KRv+-TEG^%}r1iq9N zZaIu0-TFEz#5gFa#p?BXmTd8?I8D8xq^0{$c0Qy{wHDSynWzDmh2B5dQ*#|mxv|;x zPo%F-8&lk~QzVjlZCI+0N;R}A<3c~)S<2(1fi6xkFN6oGNXfGIwJvtX?s}2z_Y3$_bbP2Z&TF}jxgy}!$sb3d#2E@gvBEBdDSye@Y$28Zj&Q*pYO8Qd&Zo_&;PoM@P6&;Ts6 z12Zj-JI*&zZ%yFXp5t8Xdv_}v`jc7f%5Nu3R+U^Qw<~LnX2NvY>xXTTQQ;3WL1t4X zg2+FVwXL^sn0E*=>CV}cwo-rdG7Hwmi`=XY_lqpK#D#6?v0rTSbsbdFHYyd=!wB!p zoyVA;@4m`YY4?vzp{WLVJ*&70uF83@iQ0 zloCUZIbf_t>9BsFn->#{zzG2 zugYX_)F}8gAlaJ>H?ijNa^@j2Qm=W0KoN3nR%3a=4ywErcWv5X=Sfu?Mr1=??L;8? zs%z()Mz@@|p4Od7Pc~XP74RRQ+$~s4Vf5?3fq+(E|K_4s&B5I1e=darRV^J+jnRBq zo7VfR#X$=ERG~v+Y$SiWfx=KSqicC0YZhCJER(Osv5p6Q2Z;2+>R$N>baqF8`s`TR zTkQ@N6B@kAM7d2|m^hkqPB?A;Ucb#8b)0aYDE#s9@{$Ggux$baL;iX+K&2}i{%h|| zMz_!{1%rWPy8?(b9eT^U9WbhaOf6+XmJgbr5Sx9?OJShf%K@$7qqSwMAUF|Cwg-B} ze^@}Y-5&6Tkb*RU6boep<*Rrz<&Gi{mwgKSCj1u6hEYY?mkrEoKOl37j)ZBL0S@5a zY~My79zDjnc6-h7L>9LFTXA2uif?o!`Sf(%b@`^uoDcE8&}PFySSR65`=9m%B_=6? z2L?q4O)%^0rzyIvkHCRD!~4r~(7^+OFy~+`7|SRqWT4F-5sYs&c0+t4uMb8qX3@$w z;SQ8w!RfM)r>rga=U%-W)+kMGZ@t$ed+-;ncOz_s>7o5z1??YzBJu#BPjh?9|aQ9jpFd^B{d}4*vntey+!n*j1&vcaZLS^$-#n=u`oIE z7cVA_`QfN0Z^iux)&SJCy{IT50`jnEZGoVyjAhENK8TAJb ztRdw+#G(T!VdoVlVS7CT?xc1HcuawiPrRD8Z1$DKdV3s9GJu9~qt?t>Ws45eoxKv^ zUat0oC@3n7kpV1cC4N0v<_{^=!=Jl6dJEV)l}VeSEMF$bR7U69aTZ#b<8su><|Z8H zdh5s2C!ob_)kbqPjY7`v@Kul6P5`Q;Q=q_}N8^FI9%d6qXWI&SJiU&_8`EYf4yj*P zetxebgf!z3xAi>U5P6X;01>dS>MjVVrLm(i;C=?pM0e9TQbM6Yx&$rcOGVRMekNbr zs`BE!MzTgEk`Z}D2YXla3FOM(^s^$EYh#y%T%@a4+k6s)yD#5?<|S1n-V|De;yNlJ zGF#mY)PtsD#6SdSvcB2se+2LZ<%#D+$_7()!ZBb)A%wE;AU3*h6{$l^VE!cSO^3Y_39k_!8mdmVg34+8#X(+!T^P)J-Ok z+coH9F13~<+~?~VF*+q5pqBBaepMuUq%?;K-HA4hr$UW)L(-kWsiEM;5&_+2NqGvN zS{R?2cB3Df)9v`$o$&>wOMjHQQC2hGY^T@uNV~xpQo}?+(G-Vv5z7$bsJ3Ow&wPwM z@dkh@ovx$wQ-GoZo2w#01T5a9@WX`Di7J*thMe2iwA8=o7p`;u(gHusw>8|}X$aM+ zXg~ZL*5PJ$M{U2Xv**6EXXViwBt>zuumB81S7gVN#6oHKOreDinXnYkkjDA~;R~*8 z7k)UgD3}lZpZp(a`LZ)ggV>n1@FB;8Q=;5bZaNS3k4IWpb&;l?JV$-aab_V_z&uj? zmRPxVwm40oj>56zH5|44T{5;yv4~50`7tx@;Xx*lh~u+!LB@kdklI4d2xT^qsd$;y z_%_=cQyZe*Ya9)2{-&xmmUM}OcC}HzZQ_5g`T%UWoa%0x^Q?OAX@u9^V2xiP|NTrq zu^aq+@z+`20P~aEy88cJ7^w#Dr8JNJv3Wptxqsgfz~8fkv65>op*fN)y{brCV8}wJ z4=cW07|om@n3_P^UyFD^e&H$0cAzRRJm(^tF481_PM(Xv%JzG|bN!%`?f2V$A;Qo^ z%Qy2`l!RBG%S^{fj^AsJ6Fi4&X@?WM*QCDvhAC0HXG+&p_#8_`M$i{~+p{>lfCK^f z7Z$uJyX2s@6uX#UPi4FryQ(NJyoDO5-zCj@!MHEX+}(EK0D6F@Q#rsi18Q4ffVXIy zI7rORO&xIPektb0n7dsZRp6!!Fyj6ILDZXz*=iVc!`k1rhnJ(ro4q1i_%Mc-vtX~> zrb4G+=C0VmMxU(B^`?D5ho^A%FJkse40Wwts4{np3e__mVOv@hW9FW`N|W`1-CVfB z589l+@{cF&EZTmd_Q~G0c#R44$=@A(3=P9{eq46v^BDn5D!*#?OSShH5cuS5C%2DQ zxh3lz?yx=5A$A!>Q+aePP7fbA?I6VMh1J zK;t|J$M~t4`ntf+EQpuZ`|)$IMCa4RtNQiLC7%Z0yiSTWR9m9?#9KC`CaM{9QVV(v z`WGmws0pd! zI7uduFdDiuNSuXO(F?s{Zplm1;PYlQ`XWb5pOMk?ot{{kK$~5MkTDp~Ch#v%>Sl^u z`6KZ6e^Bn4%|7#s6BPRapJDuBQE@Q-Sg7bJ_M2rl+M8rEur*2}8R+*ywz`K%u#SU5ZMB&w*;|K68vbhIR(e z%Wv>k;Q|YzkpzjgTRVdulpKr0Dw2~R%GiO0%Yhm1mKBEEM&l&2c6R=0-W!tJuS zQD0hd+jLn=J3zN&84|887%C>A=@yU^77njK88-A-VL~a|XP8O3{VqR*I5XPu7#?(i)qv-bvP4$Cx%{s(^_dzl}WzS2Le0*pI430t1&3w^A zQfSQvDyukmjZL`W%0V_p??U3*EJAdAJxHC%0oSo1K*6k9G>>S;0Z`0TQSD zD0%ud{7rH$8(0~R4qOTK604L=VaK|vZ&(*7#jV*3mh()BW(LNyxOS$hCg*ITa#p*I znQrtZ_vV34PB6-PTNAZz65&jEcp;;=DXr6POv>uQt)>K*OiP{OcVr%+NO~i! z{mp0dYNcdJZzCJJ=Z^a!OzK#`r8<~vCh~0Nq`_czj3AcVLmq!Q7~!FX9U9i{z1(Y< zq-!bu(`XR|`rP0zN_J{68>Bg?{@<){HU;XA!AcYW7d#O5XfYsj9g1hWcic^=YivR3 zGK2cJt4W@y@;G5(h(^&(l)x{H1^n*fm9Vuq&m%`#VtO3jQb%RkwoKmlcXUNnex38Y zO(ek1yYv_@YpH=M&ug-Y_LGewGC_}i!JRp}zl^m0X zsbM^V=>v(q!(EHpZjod5J3P%P>H4OI^7|!>=#xBP zhYJ*>3H!JYB70$e8p$h3U@m0`UE2J zFG-RF^SzF|E;S055Rk^9_s&ooTok<&Dh{Rz0!^VH&0Oq-YRaCG!my0{u3Cr7b0Zr` zgsBJyMhq7Zgo@>=94968FNnS-?xa;XlQke9f~#{t0S>TwC6x(!~!s4|8{^%6R&9V_M(c_{>_ zh$!4lm8dEe)2<7rv}H+4OVJWRCpj!iBO6=S--B8$3YybeJAs5lq*N~{KA8Xy_Q4;8S<48oek8Zb18b18X+PfyCtCU1)=m_Sq}H_B9HYj{^< z6W)xeUMhs7Gq0AO(3CI`D55os61}FRTuSrQd4F+JS}%XImcWh*j4Q8TDfpf~zny zd>%#weHv|t`*8oN5-UH6W5-!9g@2c5POK)5T;_O~I+eMILT&ncgSJ7$_K8fRks0>& zO7Y~}Y7(Y{_n`-RCKa=m8&q9~Nc|WuTwsZGPGpGVH%(X_wYA`RT}+ip7RYROG5hn7 zMfCh-9rYt;7O8wgxObVkajn(j!bdH~Q(j5fjZ}(u&wD8I-=1PaSt@hrat3tk*o5&{ ztm!dV=G-JXiBPbyS(aD>cTAK>xsm=!q=u!#`}B4mvPPj{h+Qx>iv41bC{L8;_0Ja# zbIvW7szophd_m4u+s+kpAS;jzWh3hXJjO`wD!c;2($Mdjyw#mRx#rC|JHEvv_6sbs*97=8>6xlS(euE_;gmrYr|I*nnJ)|id8B~)^ zEc2t-D5_52gi{#`(wxuZjfw>Mx#KWUi7Bp+ie8d2TA!o(`>2S&e=wwchdX*gNrou5->+O73{d1w?@sw>85wnljm zD@QZ#H6wX)F+uS;37uxD-quM7qm*%_GM>lw->^6ydNFV46W5Har?{`hs zE~i^ij!vl3b7#Esn9t5&Q!Ilfd1;K&6|=B+sXNC@BvPTRVpV2_kCB@fECYuYj*JOl9-C66RsHg`+%mo+D&0&B4r6lo65?L z8Z8{zFC;$y^IxPQjd>$csBPwLjjXkJ?giqfHQ{1Prox`P-%&u$Jw_ zTOBCjWE#xN-R>~q@Q#L?vS`m;almIC&SNTjDfB0UaTgj>oWp{wl7tT^iB8sLNZ;cz zIKUc-7DhL|#H-E_pg}n$JSYVv9)&J1=O-SWa(~T^$lopWU1XeGB?%594+e8_a@we% zsirf*y)_*=%V$Vtq?!T~=w|cq*%(_Iu1{3DHum!vlwYZZUQ|^=bqqgfmnrlrXQuXp zSIsgHPR%V$dE9J!sd9v=T1|&#xuX4EXx0=jGEZxe4hGN z?O67Fb#pvxlH{7l*%?%I`UufUWjC3?k|lXK<~9T!5oNo*%Gvqz(7D|g)7c9%*{OW1 zHtKRaJM8k*4O&gP{KO4g&G{8b!9j2k(O!Pg0B<{wZ|2%adpdTI2Bhs`AXd76yqtej zoiUk2ptz%oC!t=DV&F@TVkTn1%F=|~uQ%nvV0->S7VX3RNieYfg-KJ)2)G{I-0DCp zlAPT`xFgK5g zj-p!881~N`Ru-;OXU0pDuAm{5@Djh zX5r_Iwk)KV<^+z`?@V|Fop8DK)JERsEnB5lo>Z!M#;*K!WWz~`Frrb{xlJ35nO7`K ztj0{IiJpneI&*4_`j|!o9Dcwjd{EdJA1w(-1Rc%w zkv>dKn)AI8gQq^VWT%KadO(FDPL0U@XyL@+(ebq9Z--%T{mCw_xbXwyDcWcr_Y2z#p@oMKC{Rg*aEiOIgq}D7(ch-I)m7 z)^Jtwdb0<;xnHxo<_G!-=Y>Xm^`N)|IQ2PejEfN4x;8(_aYIFJObMsU-r z{QyJCxAzwR3ArhoJP9{jAu{<5kFGWtjE*am1s0I~!t3Lkc`M86d-BGr?$wpYEovRP zGJG!?0>lQ^hl<|#L2sQVB%-&BcOCFGDWEjirSa);%pa3>gNw-dz72Ttsfm32mZ~>P zbaF^Lsw=IFKL{B(8<1yTa@K=H-LO469>`th*L%LAi>Yusq!*6_MkkWcJWPwnqFbnZ zuj1&x#*4))_$FE(Y!-V2oJ*_FhUXb_5b_*q62i`06bcbaK*1^g-TCR#6q7^Y6bkvA z*u(coAUAlyACwG;M%&`jU|fIH;#%+2OskBjtT}4J4U)4;OD~a<<`!sTYSMmy% z-mBD;lUtsMBzBA#e$fQ-yj0dfz8v(ilIU|nEH7EU9QLu2;B!I@?=?Hkpb|IdZ#zRt z)E}lL0u!nzbD{VJV2O-Qkh%i%n_KrEkSq8eGG;ZmbYoPhMbtV*SjopQimmKqlWiV6 zp0GzJDxfD->yXT9RVeZxCn{%O8<=>QDo@8X`OPz0i$lDwvw-EQw6Ked1I;HpY;F0e z^e@rPDuFE)!)=i5Am@^|cZoMnU1Z-I_EFYG?k(yF7*COb5zR66w*Pv57*ntG(Ht-u zou5n~abl7L`R=Cu4zu@P?&H89 zXrTW&Nb1be-Hk5agcuoZ~7As`KRRX;vxT( zto+}w$p1VD^uJZS{(E@jpS}CL_{cwdM*{qJVUnNgKL?Bbsh5EK4>4n(5uf9B{vcf7 z{vmwlGv;$h$sbHG;@?J=d`s{!5hlS7Z z4{j)*F`qjY|6pom{-J;IGv;%b;UA2M>_7G#eg=JRtovVwNbaB7?2LU=cWB|ZWNh2E zZQHhO+u5;gXYbgyZQHi(q|<#L?l}E$yMM!~uf|++7Wka`qUQZMM9+T+6#a*N)OfxP zj9h=@eqMEcJmnrsy2tnN%_Q!Xb`gHOu!r?qa(kYICinE?zTyA7ST*Xm`SIg*3y|)& zSd|b00Dv9<0O0>>c%*kSH8XWGwKF!QH?*-awlQ>eHg%>ob279wrL%CcwJA!`wO?mI z3B4h|;?I6B?~;(AphAL@&^5TAg0e8Na%asrM1koOYn~YCsmZx*ii)6+kofb}edFxp zWD>@{Wr*^F`Ls*vcQ$bP((*k65iWjq;VWXvevO6=+k+-hnLfMeK&c^SX)o|+GFr2V zV#|i@`*=IeO6ox0#Vl1b$V|!VQ8_7bdWC*3=A;jRotRDZmZxQ3C7zMd78#|@ER=@V z!arYN2&R}}tuMPulM1<2w_qL(K49n3+TR-9-QZ^s9|E{7)C)N+4kw+T-SUKS&w z1>Nm*03>zyESYqolNrON0Odj--*|_FeYSd6COhqPa6c2#n4I`4YX|#rUiO%F-<_@q zV@yvd2SBxb?uaczt4On+C*3u-_}HhAWLF_8<)19tqd?=P*G;X&*^_l0LC5E)!V(TV zRU;1LvPTWN%}Mpp%P(}znS;GuMat$15w3P=N3RVK_3Pf!NiMSF{Vo;k<9@A3hU`hk zGB#UsZ_4>q3U910>HX(N#T%NwiN<($IZDE&%cA8JNFHD}oYxo2l2+G{W?`uNWehoi%^)~`Fr|AgMfm+w3FFZ7;%JAE1df1zh* z|KH$?Ns+eSXF&LKLw)6+{=SHZgd7po2c4Rk|J4b0KrzTi}%y*)?X2( zN+T+@@AGYD6PNQ^%r7_JlLW|9L@%8F`NsH}0su+j+a*tNRq}N%Ol>0)PesPUt^=i} zz=eTG0By{ME9Ksy+u8wNl)3Q8uAA;U_b((FYhd%R@a0R}2N{H+e=B$jF|fCZ0}6`l zSU2#W3EJpA@&_^~l^H|W8epo;gi}V}6J7A$bz@+xVY zY^VTPh@fHn;8+j^ROS`auf7A7f~H+0OE|zQzyczDVECD(m7QfFvsY;EgB3Bg%CwO# zqy1P(Odgpr>FsZJIs{Xid)j0=(aJ%s&0%=9y*vau=QVN``GFgh^q#ol(Q4EhBY2CF z-6qQ!yl@NB35yi810WhCu8>!11m(rhBG&gsg40l)o~lu9GvUhc!s)Emg>t5xl`q^q zQ<2k=)uObAiFMb^!riGNrCVuJt|a}5LEhf5tq%Q7#3>Fx7Cpwd4+rGp1Sj-cN!jJlh_Xc-jV~XcZTo8W#rR+H!1#E6{b&eI zS-G#Ev^hh3B+(E$8A8yb;OrP+h~wd8dkD>%mAQ9OlBH-8brU=s6RJz3s*|6eD7Q!I`4}o_$e2U#BSYAEe zXYa5+b4r~wDU<2TA?dg{h%@0xXp;&EE`9q1;tfEfg$y$39JN;ce*8F{ZgRImn}J3= zaE)ufaS+iN0F%Wcas%C1iI%v%I(3#=L{1%Y+BiBJw&c-^gp#J+bv<0lqL%CXHa4Gj z42=oipAfgoGJi)*#cb<|Drl%grn~jzyl0?riSU)v2Ukl;z1;vDVGMr&zMngvm6bxK zMKMy3`st`9zFk3rTJ(-vM&cmu+6cC_I#8TCrlXc-$J?Iq(6H`>7LtuY4Px1y$_P}Q zsxl&D!%3U}tpnLC4L*TaCmmFP(9ICGW%s_mE{xr&el?auCIe!YXc-fjau!oZ>*p8= zs#B`6x9*_OtJnl4NZ31x}Rv??ktZ7;KJM6qEP7Ov5{>6WHNfvRSWKI<}Mzv`MJ3i8eH)>~=4Xj`s& zRs>cF7hqI~khE^@*`GSAQKhbZ!*XKjIA*hTe7x$UgeE^k9t3smi1V0t!qi<;t-p9| zkdaDX`;{A69%<7nr`=4is%eo$R%uC%tTJ;4zSM6&4Qsw=tGUXxI`JOJf(b806NbJ@ zajR=!c;&UgCorTs=#T0-{~bL5FurQe=w2&(Z@#Bhr8rzHFAemYg~mFG_%a-13wT1 z21Tnl>#MTwxaeO08(9C0uo&A{6>qj%VcQa%OGG4!mJn#z73t@z(X(81GgVt|L0D-l zE6`HUjp$!Mz^z!QpnaDD%5u2lf~#~2haM*nbdsYNQ~i^>=`gkaUvOL z@dtRh)5vCF3syeLg8D1)8p>U;(o)h?ftMXq^+Cx_EKzy~m8{47_A4_|=Tl4_{UpaX zb1WNn!gM@pas*tK{mDyfH~lCL?VgDHMr=jQ(2vnC6PXN zxFiw7M=ejZR#;awoQ066`g60q0biS=F{fINF6r?8K$oIDPPmLkjE+m3=I3-zSxxi@ zAB=Y9&3XBq)A}pUtV-?eN8&)u^ckMZ@i$4hJ+#{E_`JUz>vEiHCwqzlf6OT;U>W++ zxb=%Y`ZSp;IAqIz>=|{WZWOfuYg_UoaVVE-b^`8_JDRWk2n07_K4T4_nHEy#6Zk)g z_)-#A?h_aQU=;TMMZ_ki4o;@VhAyTiv^JK`F8@Wu>bmy(94Njui$4zJ9}Ktg=?qK1 zX)Tq1+|1g~0jwH2)=S3Yp-rszN7)!GSbuzL4nUMLtJ^>7u`G!|Vtr@Y@Vog4)9kB< z2VQ5!SbZY-clr-o`mUxBc=GD_w_!0mB5OALHD@6S)p!=lBu$4wjaP`_JBt|KK#e!9 z*jBrt3$12YPH{) z$`DsO`gQgy3A$vP0+wrH)%APPX&V}J#xSjN%%Yx2oe}!0XB|dgp@``TE5VsFFehaW zHNpKb-nSlzd=kv!@)bmK*|-C|A}n|qIm+;5PzUIJ@~oV?8wPuI6s-w$#G8}8fF(}ooB-voW@HfcQrI`+yq zRFwrY;orfkRE@p#rlV^hpVIu54$j^`&c*=Lg8tD`K4&! zeLxzyS)xa6%Rgtkm0Tryr_3f{8~6K6FCC3}rRkAFvN9JCbK;5j(f`UfQ2zTMT`ReQ zW^yGA+OrBM#HjAzqp$+|tvswT#E|rmyEkf$Crc1-qAOP9$8q)Adg~jXIoxcgh}uR6 z3biZhGuM1yu|#>J$grz2602Ro8o$-b$Axoam%R9`bq?t+d{|CBr)yCZN%DsDmcm2f z!j3OL47?dlVJEfqae;c8^7}jcs%1mQTq%e>Sasfa-idE5npCTjUZUm3+is;+Pe$7? z1Eq3}iPi5sbS-b!*>%0P^nTY^@z@Fp?b0Fyza<2 zch%AhiY}b-+XL(+>iG!w6Dyfe99g*gs^8!{b!HwRRJ~WwNUzn1Ct$tYeDnLhR1tLR zJ0Tjps42FaENu-^g7c0RZ&z0RYJV$AQkm)W(6<#NPP72t-rgeuD$apMLg+ zp~8C=B)o`A+a^FSTR5|DW3x$e_O-dSBrtUt4O?|)t&Qe<%_j5%g+P;<;UmY`xq%u5ykg?k14XcSlw>l^wkJPnHGwe zx(q5obneL(Ku}Bd=z>D4N^S2vOyNwF^%dVeh58Z&+8q=si_w6 zW;tngci>%IjlBLWzmA^#-s8~gVvXt;)xbm42ewC;CZxE(JJ6K%tC7lG{UVi^u}K{V zUla~4O|qAXA<4_2IbNloQ;1`VE|F&m^z)AVd%xGKO>JIORu zkD8*53_#hiXBtssfm@U0ZSR1Z#-fK|aU!dKmc~T=d8Dy>>)dX3&eJF6Y+m+&VzE)* z9i(TS0ve=WR~Ei6{Z#m?g7PL=O7-1`ak`8F3t#9Dhu$}J2-$&Nw)WRHB~}O{`3=xzJs3ZS8>%-t1Pak>N9r`u9vZFEK3THARCgUNW_ zpR~S#MZ@V8F3Ab~xd-LATO;Pk&Ls7d&YQO%Y>p%7_QBnQG}!(kPPp5PwSi3I&R4wMNnsu+Y{}!;jH`il$31$?j6VkNgshAsdU`BmXcx2^0;$N zepRd!UFw4IVxL|O-jv(AuEMNTi`i+nbFHIHtuD;K)?ViLp;C>ZX^**#PC&Hn z@gXai_Xk-|vQCZSC&th;PJWF<@)b)aLP4|^w$Sjj^`Ri-rew>FDh$LdJ}$G5)cyu$ zw+h=rsH=v!0!?HWnL;-~g9!gvcs2;!e7#v=4221XJAkcPbYrzmjI;CC6{ypTgUh1V z)VCKLjCbYeMF@YUKr>?9rA^OQwU-N`>L&{~BzN^HKuN{rIN;eEf6m&%?^jZ>13YIOTR7qsCDNB_=G!5+p(4LEeQVxreCE~w0iEqgXol{JMKXEsAs;ql}_2<*# zLtX}op=<`ZL%4WybL|`waxDvade9u9@Pw-*`>{l|qQsI#>uI;B{>(S2a*#R2c558MNqiKn9oS<nY*Msq4SElhMrh{}9fgRmxJ{|dG!Wa(f>9{P)~FX8Jx*0J z4f67q3C58^?8soACJS{dk!%n`71G~1T+~dg`l9-TD%uNO7zG#$anf8M>cXhWsCY*= znmc$Z_r2riDm>~kj_?fqS-D#qznifE%w3fGxLKFAo#l;gl&(nFeEkOXt*AyoeDIm# zGu(@~FZl%LCt;3P?YR@?+D|wO|NbO&XuRX$zm*Y=tWs*L8?7Ezz3o_X;8X980*-M@ ziu>Z0TpYwum;T{+^PKU$_n1%WwM~6MMkjIgoGO+J*E3^{lEz+lGqF#uPUmp&~SFF}DeI9cD0Dctci*Cx-7XJqng*?yGs&5iLAgkZW&dU;}X&Kb^gaps?$F)vM zkTI&X*10h9wyiLwN`+u1*|8xBb(r&PXjFm4F~w2>S#o)lscdQ@yrH@D)f96hXLWj@ zbq0DW0wv#>g4idC8-lCt>|I|>wI)o{2(GQ_2*{2VW+oZVHgR+ZdssKCu;D_0ra8W~ z9msnE|7v^D%U2E-HHWvAj>|cpxH73gk7K_A>^f@3zr9X(7QTaxeDD=Kw1eat$97ra zTV&@W(l=lQ&kLmBj2X+5F0*2u1#aP#H^E}Qc$zo82;geV3Mh3JXDG~+JTn+2D`9fH z3hi2GGWYAJYOP&rx6n!^-Q#5MgA12n|5kHdV!+uZbfHHA1NJ+`4Q3r&H*BxF#_a;Q z(hQ3%#K4rBY~@sSfWC)~1vU#Z#%@RLzc=+!s?u~9r^+bZtJky ztKi=+oQ3Fi-pke1w6MEY&+b9Lsv*p(t&fbDg-kNjnByXGIgPY*mi|7r+EgTWV6@njj8EpcphXz6AhwRMe9KE%bW_TDhteEeP9*2%BrYF_SczVvQ9 zJZK>JU3&ZlLlX{|+1-G5?!3B^1hX1T9C5xkFQ!f&u0Le;YrGabj=yFf0{_fi zljJtScUyP8OP2_Px%i!JD$So6KnxS*9_(DVl+7H-lrbwh>MQ4o$;ptLJPP=^U*||N zka54T7%A|0&V7}Ae4X6*Z<5|J$xvW|yc{0M9}dOw_k7}g6MrQUdcJ){rPWui#_)PM zoXel)nVeLO#(c^6nFss`V}Kfur(f(`cb`Xu#~XAe#IRw4`^kKH^u(;W z>2;oVenzOTJAZK_Dcbk^>c!&fDT^Gl2H^<{qtEgj?I$&|WQe^QcCMf6Idt)+CpPT$ zjTvUDO9U`LlfXYs4@O~)d4)xUgPY+IDsHquzT4PMMxck`*yPcpF4|w)(Al|Xbe98M zSOU#9;tGQKc1S-y3LlKpKBWtX{Qn~Nowx#~n}ovGn^7}b{}A23zPMNE$>(n&Hw}pM zkLHqJe*qpl({_)Vn(Q-~9|~d%Q}cmHiijyPn6sRBpBtJ?O3eVg8R>r!uM7-S5VpOh zz|hl;?cNT|?WO!1R}14AU3JC)-VJov-2~PvSM)vcI~2(y~J24 zMdP$(gb1s=-qMcc5M(om?~%}Am`=d5 z`l#i78q7O1_J7n9ZPBM)YL@_Bl7t8Ig<7bd{0C1T;Qp5!x#Z>2M&#{91k50LUs!Y0{W4X6A4VpbuZZ5HdsRd=GSKb-MAie@}P>6t56R zhqwt#zGM7LM=X{a{dSdU%LE50x0SoPDHvt;MT^Fy8$8j_D#S)7^C`TGjWa65#v~)>XJb&-1l+GncmgN0i;Yt%$i*bL z2zXi-eu5?ML?<)nXJb;H2yn71feBz@P@)U8F(}am{6;}_0*`YOA3;&5i;c4?RL3L} zDujxSd*^quEAasw1tr`gQsBoV%L}|E7eI6$%b4PH71J*mqJh&+do848>xUGE!|T<} z-YL()5dZbxV2d@eub~G+FW5QLh$fxMW*m(e45~8$KaxU69lmzO2{^A4uSZBQY4Ob; zQm-SCb>XQT0X&O$#*z<$bTlo3P|1%%Jyk1J;o^uYj1QB7)yWh~!PPD0OA@+4B|6(> zsG@Ci?+j*2?4>|J4BMOomxWF|>j4;%KQRaD9e9wYIQeAyd0SyTMKPveaZ&`X2oD-} z!301k8Bc>RNq#JmJB$`&B%S$r-ke|2)6*F^>EAK)zj=7-cK@3eO!!2O>Kz{50oxU{ zqVg2YLBROuR0J`4vbh~n?bP^CC`*EX@dZ~zlBW_fD)osNLlsUijHTZw*#|9jM@@oW0`-FX}%5F8|FyapgZLk*Hz9)1N; zx!@5Kl2~6CH=yRA$ix)Kjnf>+IfqQH@oNauXt3Aysc`0E-$j2oes!yfjOjqtl~?k3(@CYA2dW z1c1j_U`F?i#CnLF#;v#j))`v5Vtpi-12$4)C0P{deOaY%QlY$MleOe%m}n(c0Bk>= z_mYDLA)1cUkUP$$#W`!v$mY4^3>JOtnI)OlLIfV_M)`VJFhT_FN14cjK>otG_y_=> zO)Tn_<7b+S<;)}L>L7#Fr8PPwbLt=$}&_cVm%aR+l` zwv*n;oG`~zaU2LD6Cav1%x(njY=U8>)=~Xq^9LNtZQg#`2x1jP6WaDR6iukKnalz4 zez<5mxW<{WspVIe0UZmbJ(2v(3UG=neR^b?waF}7l=Zx=^G2rL%1*jLLS}YG7NJeB zGp^8Je)a7IQ3RXSW$#kEK6x*D6!OOY9IGXRYqrk-W5-~RtNa_RU(9wbt0;&aHJ}L7 zQdkJ7M_IwU%ry$p!hq=o#m$muum&QJ2wbydev466RBoI+AQ*ip(>9RWMg~=!yzwOM8_R!JIK_{QhfS9@+p%3YH5#X?6@>;V|v8 z{UBUzDyO%gFTkmcwu3T&ru~m6dikBWzg0ZF!dABtE>t`ij+VRb?Ut%qL z6_1Ebvn#Jk3TSC?i!hkY!dzQAYfV))0Tyv0>8s*xnakA9@EB26FcA))(p(-Sg(Jg5 zLIG=*kCYy%MWH0XscsCmE0!8}ADTUlr#2j*tgd}E$d|8}Vus`)>L{7%U zGQI#bm{D6klVzG{Dajq1omg}BN4iN5jCa$q><`SIF>dJ#aE9V=ehhoa4Z_AYVoB}2 zBa_sCLUp4~2&Rfg0NvHUlPMlN_!LoK*DIAyvbn(0qN%gAoP;p51vOStF|BFHYKNv^ zmOt>l1}?ggRlM3+^uJ-d9%@t%Z7~avs2e)0HwWqE`zRgBb&H+e2gt-rt3GDQuU2*} za;V_hxO*s_(Fd4BPOr`jHSqo(ga`TF;5VUiO`2g$L%*#my%#x~{$tQ`!0XHIX z7Q562(ahBot(?7@JU5fqqGqW^A>?y6=Q;G;7cQZ9b!dOrNPT6!+esF}Rg0%^T-z~G zSbNFM66w)A)rQkz*p^|NEOr@n=gS0LwGOJyF`CG!i6w36ywJmPTtO3mJH$zBwH3Sn z0i6^K=3(Gi(&89a7#UrAdQc*<$xB2|o@J@tWmFTNjpvuOD3ecsV( z&yS8)MEHX8M`>%@$P=#H+$%iupXrU7h{VzJIJ@jo*KAgJJ>^)+Bj{#hYCuwIAF|Ai zGBa6kfayRI6DDXZke?v3RO$nKUs^ap5rdK)qPuVIxF(Y&pb>;~&^0Q1#`+XtGcj-# zgQhHBLnN_kU$mr;;MZ-=yJ4W%#9{_2!y@GdbfJ9XO)2KI=+R=c?$*NH0g|r^ufKfJ zygX;X`mF#}r0=+)%F9qnR|&6L=k)zjaKhjHH9&40=Zn2j(_DX+RoC00s{Xf&k{ zNz7;+xoNn~^Tp;qL&M;(rsgfAYBmCb01<8Vv|uS4Mg}*PApDn+wuJbZt9{JwQDv*j zqt5IHt1oXEx|~2o{YvXfEjD%{#~7L{%zsAwv&KftJO-bxC)FF1qd2Rp0ddaExV`Pj zBz)(@VFe(QvhR}n4};xp*~ys6LjkVBNpl)$bn}hG6mcdc@v|ZfW9NKiNwi!sqT62L z;KRbocgE6K8Oo-NYlTEI{qD^5bo+@{&6D}u%}f6v(rfq9j8c^eBzhZo6q$tY`|^d9 zVXF9d=K2;T#0~zApmD9ztWmCY!dmy=1)=QVWu(4T zLLXVSn>IKY-?AbPNp2Q2*aS0T&wbWIyssfi3mU86oNy*(DogB~$~%b)`yHg?5omNG zeV6Y}jmDp36mIKy`B3)lGx8H*%*%79rqZH@md8W|XJ{G@83YdDUO6Z( ze@);!EL@_)VSPGAM0V&0vW0LX%+x7L(gCl~MEK25k$pn_%q>PvqT_~#I4%3fAZwNL z=zFQeXrPM-d%Iom#6ich$J_OoYjkQ|!G^+Cw3QaHo0;i#@Yj`LEn8b@os!RZa9~C3 z4hlO*QH6IwvZoUgU1K7kPI(TGO{kCRrMNiw8{%tVp z_}mRedD%?`R{bj+jTcAcU@Kf%URL)5dWa(G3WKthEiN8n;tF5RGY5JIEv^TSUJy+OX%qdCgpJ*|20%*!m?>IMiD@w9 zwKrq(9Cl8IWga3i@{8*1bBh*(x)Rc$3v2$-zKSY64omXXk%8{EplO*A!zQ6qujwkU zPoP1>!|HIEfdom$G0xd_K=?Q$?$i4Rb_j{R#GU=UZ^h$3ddGz&*^o4_<>=7)CEZ;d}x0NpJEyVc6xw_gkvKMCt zIIfjbubHg3sx-m@Iri8%$*aasKw_Z_{i?`wwK%)P9&0^Rs8sg6tc~DxjjPlaqHsT# zj}0?eMzTg82=ZhYqxp2H71E-T)cH_Kp=`Ep4`wacW*d?T47&@T9dIXl!)0O|3nb1? zxDjEIM<@QqzzTbA_BX~3`q@TQtrE1B)C;J@Um2~E8rpNBz(|5wak|cO>O5#&Z>oz8 zKNSlV%2$;8XWK`^YLNj7h(?*2WA9>#HCQ}3rW7lLv@5&2&oV}p3$4TaS|jYKPgOsD zoZ2$#c}ijjY{0Cq(*5yo2@7)Pg~Uj8Xq4IHF72GM3W|5R)RckQiWsfX8bOn(Yr$c1 zIxPd+RHi^VgZ%JxM(BdeMI8*YihV8&gY1XprNUpvEExV$JK=+gu z#T{NhY}O~2`|Gc=^csGv%5iF9NzwLrt_K-^{2R^;Hbbi1_|x@%jIn$nw-{d6a`n!P=dj?dcVA?KoE8% z2!^7Sf&*#@T=0gBB(Ci&h~O3Hh)#$Kp0@Y_)#`)lel4;kB^$_VC%q;d+sC-lYt@i9 z4G80m6UCWL2gmp=ag}qGZKDavg`Ocb7Teq&% z@{9+D@akfETr(c5=U;))VF9-XmgmlG5L0>JFa_W^ z+^rqM6w4*R2<392g&WqNl@X5HUleR!R4lgj8_2sY6eD<_t8Wh^kw6EmNnC5OYWhh& zN$LPbDF1L zd6M6IQ_KM9wn>6weQzBy{14vqMbmh--RmcASVt`j+nnNl| z6pGP(sJBWhS1MGv%Ga6N|IkhOA#Ap(jI?a>%g5T;^GsXSs*FEa=nroi=ZfieGNZYh zo|reO8S*%5em*J`H)+6>n%wytU`(u%*N0) zG(>9JjY;jA=PxSlS`%%rJoFewP|4@Kj5_irJXw4pkNHMY8X*c2pjUquG(T=5o0scs zTKKoGtG@Ty{0%(|+(4kEMUP6a6KaqQ2wk-igx70if^%)mC0W@OnVSTg84G~zY>kVD zJu}%HB$qtKCa3OsuEydkT{G1pDVPeIEZ30@)MsdH5o-Am@K@Dg&*j-)=GkgP zZX5U`nEnz~W;xfy43R}!;P3|{mdhn+C2;w3Jq^99oIuqyq!#ZIsj_kIIr+s+W^?nk zy|m5S;&@qyHkwf`^C(zzbgM@dR+zH-l~qz$7~f2h{*O&cD2*$KdZye(y$B215XCuH8~(OkQ#f=|W11n%9^ z`_M%(Me6$PE4!vU5pz2)N$xrq_2*banC?~#QWd&GurSXC{SkY_n5uuhV23Eatl;ma zb&z4>C5a;<;u*ZSwkB30&*tSpD=d(mpFx~XyrFS*Ct~tS51f5F7e$%Fx|N{4k-*8 z{j3(AQR-oF5tg%oh4Jx7`VCH}^x-BUcvPVwGyfd`AJ)1RCIHi$>S%+y0sr#NJ$_oZ zSMh1(XxUM6dK}M6fczbGNZFyv?gG=N>&{zmve;#2-Td0kF@D&U!0M}14e?X zs7od&%Qm_mt0O^`$F&n-1dA|@T$A}|Cy-=f;v)Fu?gS^8WMkqZ5DId!aqIj}Hl=NV zqnHFIsAOg0BU*)REXp3hBX;5=7z%T-aZZKlm}Ec&FtKq^1-fXI&WZDR3Beben`jgl zG*{EY{Ja=zVo>={xEK^23orY^-S%N{Vo=x3I58-=&^(sNeO4UYmmz*9UY<^@#3=o- zxgiG+M>()C{8+de63y6rE@yB@oJp{0-kWKo*{7V31Y}<{l7-tWRY+fTm-{=_umd^b zKZn~;K?pNXHyR%T#q7zC8F`M;fu3XGc^>8S@i0|1^Z&psDS66H{Q9~q(}+|g0DkX5 z&VJ)e=}!-@K6wJsV=2D7%qt7%S{{=I0`0b>wBVWyES zl~dU148DH_@w?&7C)`}n1?dwvc2fa6d#(!#pe3cLCAKDgv6&17QGRre zKEKJ2{&V}>1)E6l!1v0jF5}x(N7c$VmG56-ci&Qv8?Y-Vb!&z{cj zi1!7m%G@P#N9TJGsdUHZ&6aZ;r|$lMHapzDoCK^i=Y873kr*k(=y7)ckl6DoO1~DJ(&R{kgV{i8j~Eq^k*5p-=bAhob_NL10C^?B8GR z%S*1Hg0U@+Z(lb^{Np@3!{?{3t0@c#k+YTt#-gM*5}oXk96BA#W}%?e`3XwEL~ZRy z%Bpgz>S?2*G?(v;V>i-i%Vm?{GTE`yqo_Vbls=RSOl=~Ogt%7`1R1(85YwC_V(FH) z6$(Y>C`uYOhnZy>RY(fR2PDJt`_4eLL&EkNS37a$Xf1-^8+)D0>IG%S68O z&##Iv_O;-XuqtZfgD-$Wbu2QiOQHB5??0B55DKE%5N0wl-OSVMXLipFG5L9ROe`>c z@DX+^MjguW6o#RNE1Z138=Pbcan2HCRFvuzw!PI!5gQmgDcHZY*_Uyb0DY$>66pv{ zLM)27F<)*-@z)$Apwf8RofQCUv$_y~vXBfJKxt^M!<&hM(D=wM-lQqf(JM)RL=N27 z>@z*ZuJvQ}mDUkNi*>5fw|Nlj*d53X(dOlYVoRt9h7A5P4 zUe{$(F11>`DtT$6&>$@1P`?yB#-Z568is-~nKUo{R(2hq^%1mNtKZPcZuP`5#mG`t z#MDF;1f%M4skA!KIf~;9(5AuXI`tB)q<>BP%(+B?SuYO1apv0`deLW2zp!0@Klg99 zTe-i2{{XYWU-pQQ)f7?9ig+*lkOI)FIW{=&1^g~DR z16%=A!)8!rL~e1bBn=;V$wFzfR@*}RK9=uhX??Kd)N!b#xO4IIZRT-Vv}CA#Kc~S^ z$UC~{5W52d@BGsdl+^t(az^-eh=-rBpwExvd!1xfvGx5W+q1>z0RI@(GJT=DPsV~2 z0OKJt;P&A#OEQ&^eD~qz&6L5B#11E4y?(9fO)|2#;WpZ45KI4M_M&S1)1ejxvwE1U z$2f1bhfE_Xgr)16Nuy*c7X99QIYVOvnKDT}K=~$QU;1mMaUDPcoJ!I?$$5C+e~Q}x zvD-{e0PG?3z8SrayLr*;+4*8W!*4gadAiQEl>YrBTi<<%Yww~9NH=5XeFZI!{k&u% z2)ed6Ev}3d{AP)X;jx+}XTZp^`*#xc5^k9ijZGaJ>)s_Aa6zY;Bs7;SA=#la(HKdx zL?w)i$(I#2-a;&66ozRz#RrXh^zZrU?||!u+;w zidr>TAbfqKYfx?Cih^)#XCMhP-MKn;UkKr7i^h-?)x=53U$wGaxby2w_tLf@6Xy%@?N%I0o#Nc zBV>$kF>h|z>OCyLUU@GPcM)noCz*Wz!-$ zFuV8>{Ss9Xt%1?fD)e5%3vNm$d`6` zPLRRwWsG-rzdD6l)eA8mqmXjeTkYDXdZET4blMZ0f#DB-QDMX%6@~ynKVegKr-7_abiZ8-p<`|uCXEo0Z7*;BI*4*)}62=fk)FuB*r z#hiD8is`GsrOX)OB@7kxTALiFXdWD#Me$J@F|>&j!Y2PkZhmrb-WG8#XJe{kN*c>) zqq3+!E0(S%EuBHU7lcE9+1!EKT2-Lk1VluskQv zal5wrR2Dcf{S0$yEX*}kHz39DRMeDFooF!gEa4jkx$Ol!z59qR^5T$EzRT<(Qnxs8 zLx0;K6W7!KrYraDs{$i;jiQ@0FGy5OmWkz6a|fEhIJIX1XpjpDb?+hCRs~ALuF;!p zBl-1xgwOOF;22oN#zP^(O3i}39etY2N+WS?5whI7vZ_WM*SPF)F~OZ3EDXcA0zL&y zCJ*w+31`Mj=SG(e;sdpDiYC(BiOnh=$IoaK2r7kp$2&Myhr%1v6;g2*23{cmI^}mu z^|4mu8)Jd`*MXQifC`Fnz}DltV;{zQ5d&Fb@12((3HQ=K!9mX_R1Y$B0b(lmJv$IHNIy_@{ z6(o=+4-{;-8xfbv?zzk>Y(b@${V)cD zstPU!leK#!K1+QdAs}bxTyf0dW+mw*HrtTPsTwExHv0Gm7)h5IVw=n>$4R5%g!$HZ z7_r~#){Cj{_Of)Je&UPf{IM|znaR#e$0`$C?B3rvd#l|7Hfq+oYd8d@z^CuA-A&$) zrkmXCga`e&IB#=*6~iyJ$A(@N>?Lb(jskWvrSkqk5^R8b`^8(Gw>V1(!2>b_WaVPX z&|PVoGZuZ}+CP7#WPJI1HG|mS@dmHTyglsG{{S#=q(9H&ni?qNqNJl^feVyeQj@4F z@@?Oj20B*V8KKu7c3MEq_8T6ucd&soq#8sR$fK45!JjShxN*z_tQl81iPMsa{o&QIvCS$CYzrxCX@d0? z6l(ULr)OADyU%I5R1%vf90|KFNeaT`?yR9ydl>LkD^04N!Zv8jDZk2CZU47s`8&Y3 z#zEMaW^o_;Ibbr_I?zR@RTiaC;mu`uwP(GsD^Ddcsw4&cFUHQPSrlkV(%ZIepKaT= zZQHhO+qQkSZQHiZIWsq6Cc0myBkE!Ogv?r5`Asz~QbSSW>YI_a;9Akqn`&9=K3}!k z0u}ThYanZBREEcC`^GS(?};2MnuKXC2?-gL@Mbo?(;rp2EN^(K0)E0bXI@bifNCwtd+>o`@Y*JKhlJrbU=a21BvD$rWkhes7_Aa^>y0k5;0UW;=EoXQ}cqb!mL- zfCWJ-FG*zP4Xmsbcz<6HdN~D4rVkQtf@qkEd4!z(l-7uZZn_xzf;N5AlfIH2y5TL5EzFVO*QGXPH!A1?8S$UzOCM z!jU!X#Dv=mNm2de7SwS+b+tbw7Hi*oA~?pU3_W8hb^)brT;j5q*=1l*gS-}n<|0RV z!;wUdSQ4V6y|jGyzTAgrk$^`Du`t7%nJjPPAV1l=wwFCJlP;a~4=|%^LzkB5l;TPS zy})sby_g9J?3C7N#{K$&d|~BwN=?7BoOjzSs&H>k92TaH;2tm0bIku>oPRXGN_GP( zny?eD1y&qQoHK>gvJU-Iuf`3vzbt=U^w{J>pI_^(4~=?SvMewLWwh_84}`_pX_f8? z)5qKivJ)m?+_7{p`h39+!|jKn!)&ehM|H#CSTMUfFQ1aJvqRtj%D3m^BYE52thK2^ zp>Ss?6y-t3C5ZsWfh%JJ>on*eVZ17P&nPtw$r#2Lq6CY?z{q#-i^by`opbeAO$POZ zE3wr76a5}sS>Kh8^H2IoB4m#XW~uj9u(tx8lv0w^z#ejhKRgGGCtVZz@Hi{I51Z4} z#LNLp$#x3nkQpwss(Q>jxaa9%NjqJSL-m8Vz1z#%d(`JH29UL} z`S&#$h}AlFL;t)zC5!Jk6&{e0E@Mp0{*;vEqfEgPaW&^xlm7)F+0>Db>Euyq*@S9( zvL8^bPuVvQMl*IuKx9sC(XkKi`_L=GFN4OAdgU8Zu-YZ-sv(GmYhj;Ei}hXGI@93w9TGr z%3n+9S&a$~){>L#l&|y@c=B2=M{V9rlb7ri!nDLVt2nyFI#s^@spQ^4LetKZNe)xG z)AZ%HjeifOo42o6My9FWY||IV%=Mrg(^dlCWl&9Qv&(~0*z5*W^|4y>wbOf)dkdJA z)oD4J5OFr?J8d}O!~u&^cBCs2-+^)hJ}2%QG;lQI$<2{PW4C?`RKhV{)U20aRhI)A z?JxZQXJ7tz4~^?Igl{-B0Kg*i|L-#R|JfHiJ1dL-)X-dOUD|Dm{vQW3m?|>EXqnK8 z%*=0iohNpOvwE zaTK;FVE6X9jOoGG-A$l|zoVP|8omk@xU2gVxaaI{iP!xEA2%jHCrw7Rk0}$hSAB~} zr%L6A3$l2=l-G0D(GDNFDo{OgK1pz_&B&*iujTR>g~tmcI=8VR+4}d7guW=ycsivd zBd4hi9S{dM(t~t^bPLbXCMTyQZtsF(nZye}h}34Ta#QknI>Rv{%VdCJgB%q^$&)zs zn$G6qH^9%NLyvFiskIlIyH*oSHkl}Q=6)B9NMaS0l5#}HrHj15EEdR5BG-bnhxoiG zuk1Ow#t<*;O{Q0bH6Sjsepf3Ja%-F1hRp)!2Kg^b^IMt{pwyE9M-qds`Z(*K884%M zr7P8lAfl%Mi12hwy1HWHM&R#T>7=BI!V$$qDAcg6+4m6y#QkN7kiR5-{bQ9A0Dp_F zf5xWky?981+>F`ViN0_Ac3kVWm8`t>1O}2NAu|s>@^}LWvQ3yi*b5KPZqQ{VsWtc= z(it}69tg*^Qu;&2_jv0)rEgj$AU^^@enQ=SV>i2m#X+OASTVb070D^)v`G|EAD^Nq zt0z+$G1CUdgt9<5VDSk?G#wf7lo%cvCc0-*I;xJL{52oTrC(Ab@uU`utiU$T_pcq* zIZ_U5K#WrF5oj;9Pf4THY1P9Mwj>QCQg52uyK*(V?4n95O1MU6FC`39PiX$R>w7$2 zRmebz%H3)!m2M$f(G9LtO~asn<`UhM*Nj0%HZi&n0YA)NZ7kb#*mw_ookv}?Ud)gs zc9!cBT}`%J=%H}#>~v-moL-%yZh5{{b53-@@XJee32{bmg}XqWgg=PWrysQ3E-AIndp(Gi_|o2S zlDvb1l>q|3%&zdGjVV9{--&{RR|Q|4OXo04uHbikag>zz01?sjg@l!T@t?H4>XXK0 z?^3N)w14RZh%UGJza4~S+XiXPYNoc-;pum1h+g6Kr!F`fsExy; zaEL8h$iRPe6(BJhFPO?ZW7Ukov_1lU1hO(xikN*9howm(O$nV=M%P{&+MmIT;;5BT zv2BQ4r0#RnUA(4^;to+5kRxkFDNg4M^c<#-UyTZ&Wxt_1I+El>Es!!Bj4hxX9?qZc zs{@uz&?Fk$osHGdR|pU}nU$X+;Eq#2}8!W4RUU_L@A3oxC* z55=i|6njs;u-;lhJ-k8b%PLqY%!B9qUblh z3wejRfO|G`w+-n#&^KT#G~*yp*B)?JMAXGIZv)6`l#3s2Z1jh#fI~65zd(w#EWd!F zAJhP|sSeV*gp7r(RStu7*9OEm2Y4V&Ae?OxgnnXeEK)Bs=@Z<ae{@n~!q0{Rig!UB=lKR8dZ#nv2wRzSl%EPnvAn z|Li{x6!NW*n>jsFxiLrDUVR<<;C_@fFWz4Hg{j-_*x|Bfx}0$vC+<@;<+g)hsdVbV z+6UFiXPW$S^kZSvh)aQ(G$2*lq5!mP+ByBI6|EET3LFfYV>X+9uOI-JO7aAlf@iW! z3muAVV@}e6#FG&O4Ur4GXyzS+r- zOmm`UvU+}xjn+z~l#)ssm~mp6Fn#>`9uRRD?9xy!IQDFI++I={zS**iHsO7ssZpea zu0dQ`vse{)q^V{cR~=0EYBkbh6XbQPlHhdkMk2u_TE|BQ+m0NH#A)+gq$)oTUgd{a zlzwnF91#FBsY20PLDf^l9MjsAY&d(7y}Pd|ZO^e2WkrQMOHG9pU^O+ojDwDep`>jN z<)>i|dER9z$(jI0Qo?-Qn+I$q9N(V$>$dph-_FlTpp;pDVYSa^wb2v96Ke5!jQ)!8 zOm_HWy~fkK<`cKiO4(|`Fx48V^!HFTwMEK<8gV}OpwsuwM1g3~q=u69X77ahW7CDT z5`EkxgS%{D8)ZD}$s(%rxKcZYd9%_rNfTFhx+(=jI0wF!%D)D|7H(VhhV6?*1q*W| zVu-GjB3}p$6Tyvm1UCC;@EH`4`8XjIs1gPHv@-x;4(41qupB89DnuBuJRZ6Y6UdM? z`--0IRFMpzh+RYH=Os549b^^gqK@UyY*MvBQ_0i#W=6mbj2TBChiT?mIS&zXg-H-5 z|6M9_w>kkerIeXw7b!9TPmKveVB{Ei5ZCaYtNMCXzzxJ6%G+S4;RgitV)cILP7Pqc zuhEOD4G*!YGjoWEOmQWwSC5$@;#wVsTD6%1B#V@F8-ugR{U4y>IvcqCk@!CdRL=kw z7L($z6e2$K+h|;o($93yLjtPG&9CuW_SO46#DEy>Qjkf%$ z2@rW-evRZqJ*++2SUI~=8gqP%`9y0(E0XDN9o{)RWx*Ypep&>}m(R2;FC+-N2UfiC z7i36VJctJsP9|E&-$%I3uZ0#{P!}iy=a^%I>_{dCQjgPk^Y1(; z48Tbm!$4^Sd>DgPz8~*k^tVK%ma%Qzk>BWTD7@U_aJM$6h;(E6-!@r=&-5jDr|6DHIOnuPef81#GavQtyTq0l64T;vP+ujWy z@q_06>AnWTqoeOOvme#9#Tu!XqieMGvZEU)fs0M%X+F*S@9g38Y_*;<)L0t#u`G%`D-nqp8ZE(%IbrXyq_1|E>I+Didpw>6%G_ zPci7tSg2;cLj4of8D5xMb$pMyYhu>`-tuBTmY9Sm6&spNF0=y|I@oXW%{+cEACIUO z8JCuO$sE_pw_!2Lx9?n5@a5b0_z5_B3(oy}0GykW|9hHq-#p;Qck=$7e#*vm(m^Ig zD|JenMK?J^%X2DgK-pDh5qHWYOsTVx%!d`=&57jhZhA9H(hj^dP1Ijb(rf=UjmSDw zjCpe?=NYRV0}@h%w)ib7`g;XI``^1IV*r*pDF3x|h*JRoF#Zp}B>s=4m;S$vKbq(N z3Omq#ZS#Kzv0+V(jBF^y7(f@+pjTzfa7kPds=CtU0BIN+kVKZkn{|xbeqMdJoi%wg z$)afE3B;)rZ}+%-Zxx=_OcstV2?Vpbahfe|3aYx@*$NL;YZ{+2=Tj1mR zWWffmpWd&d z=>vC@H5fv(|ALG4<>BES(!>2SlIy(rG#>v!B&?VwFu7 zv1mQL^(KUV7`N1^O^Gw43$A#0%5WvG99cgCXlNv7p6pQBB zRv1kwacj>Vty+H!hbYZr^?M3Guw6+#y90JKVVS61$rKzD9_QWapfWmZlVBf+O^qDp zcV9RY0+kd3WS?D23F_n zg9q1mbf^P((UQFPz$j4w6Z|qCvS!HH-eW~%tft%*eb)>U4Wmou0e}EV`$TFLJ-xeh zp)_8opmW%a#2HZZ{IR#)=MQ5>p7!g71(H}e7&a*u@U<1t@xPiWKB|@Wu`Sp@5;v56 zC9{oD5ab}cjbpe2#2}ZC7*3%*HyRjx7U_2x(*4!8q`GV2D^(~)hb4F+n?}uXvdou3 z%VYy~ow1Mk5Ev(iyi>vye7XqzsV&v#5z+7%p+-T4 z6%?zXpwP?SBYZ5!PCA<*B29uCfe%5=6x_n3Dhx5?82K{4s8ViUz3^bf<8WxtH$JN- zd|)iw>?uU-KdhpkTgcQM4C>)yrC=qWu1tM+`XgW2FN!>Nu$|95a199%1J5+P2FN{z z&&52&#n^4}o-{NX%Z_Sl*h-m>9K86jmr)L?u~CoH(vjrGysHzhu!Pr~Bf+DCdSZqKWg422gSrY;r8_Yrm z?q}|jA10VWk_-p|w^DfQo`wBo(py^X`@u;f%cnE5ywcv} z#VB?UtdWvnz=$Kec}@%9>IofBo1FZ4#$PUeBm2?NTs1VbA?M^`U@t-o3b2%pM0Tl6 zy!NCDFK9vo)X8K)lhz2-*l2-c7_Bdhj<^MXsCO&Oo8QXy9Pua$u70-~;FqxY6DMVd zo_uO^Z1qI>9a%y-fo&95?!JmgXG>`199iIxG(*f?S_)xFL})_fR#~Vw^{@p$sty$3 zMXd@p4WMyJyNq?>5hgZ~!C1MURO~Gt{)WgHgF8@Hf1BemRaRaFwT#PSwnFip&Bvy7 zY@BRwlg@IVUDaNeh2|?DB!=n3vn55a8#3wiy6E1Hmc5Iex188T$?Ssb^IshulsIy0nv<&J%d-nCa1xS*{uMuAEJ0rtH%2Qben0(Ry9(JbZyBoHC&5 z4zDP=vPG&++}ls8;-fcHnCZu4W%$5D8B}@@HRAo^KEKm$=H*#9Cx;=1;@vck%wg>d ze|L|)2%z|T!fFu57I{#*!FfF(VgWk{MuJVVmTpi3ySP?CE%ck6gm4c7Ur>o_I~aYp z4p6p%z<{__yYTCdW-D~j%StUl5b4+Czp+q$V_o)C5aQ>?rE*gidTRUoIQ-bAbdG41 zXDf*hrLHB*A=Zz3$MZy6soJVuLpL}def|&^x*b`?K>o$+u6Eu^H_%$^Q zecZAr@Y-if0VJYD7!SRJpNwI6n(SoW#|R;mu9z;iCYzA{VH1vd+Rv;#ZWO&$U`+u3 zdSV0aI1aVvnrlqJ-wY*Zh+bVxO zVA-;B>k{2V^nhED4@rkxa?HSK!wJO$=1i3SdCmmJyXk5BmacaD%{VRYTRHGU2FeqVnkL-ylY-OfHQ{ivOpek0q?vm9TFeEetP z>=SgyzJ7bVoQu9LT|WNJ?-i$y)W1~axrIdCpLvUzSf!wlr`TX%v^o+^9>b^S2fH%^ zg&eX6w4#S;p7ph7V!ndlK|5*Rc_loa{PUKhSBf}#3{>K)@RZE+G^AxWp8G*R!2h~T z-7LEqx_|-zAo!=csQ+ieOI%r5{y$+5Y%94<$rmog-@%Ta4KxyKAEqC`ZwuQiw1E;MywO7hWKt{mB%bE&X0 zw_3Nu*dun|hT(Q1njiV#phIT9)3MWV`= z{eo@x8spfaBRoYkHX1@R24v!qVo*m`0qJpGDK> z!o^kWNRZ%!J8%X~%xm^T4XB`GIZ&w_X7TVsrJ|ZV&XdU4IY^9@9=X+P@sU55746Mr^=QXau*0U8%8a0McA1v zCC(T!$inJa6t``d0u_mEZ7im*sRJ#=fwrjN%)9d`b@U)=qeWO@IdN7yGGF`XTcZdo z-skyL0YsDLs;A2MF;Q!wf}!h087|sr7#mE>V!<&`wSLNCDy30qeVAUAGCC>rI*AFO zNCWO+D$LHhw+m0JqwZ#$QIMO!>ZO7xb?(|(3D_ZzZYttGj<#R4RZ6#zG4L^NOX^zw z3*6}|Vpp~uJzI7mkOC0IIRXi1So+&|HhHIzV;Gp^IxxoY;`ho2&&<1`w&zza((xgN z8v|*zv9)tc4Qp~kGKOCrM7q>TnHx+~8C+W%rD&LX%XEsl4%}q=pW|Q(Yt1tr%Z!N4 z5O=*DK|m{VZ}I48?3P3Is*2Pmhtlgr<_G#@+6sGSgIw!>f{UT3uB<7_-Yw+Fi)vML zaGR1UTP{mRJNxvG%0Ubj3!LeS2xmdEK#}%6Zw+8(+^EN7wrwV zr5zXW3P!Yh=u=Xs?s?1vG~2)nad`4mZ_A*35ASb3&Nt%cq=K3)9h;l(1=^&sj?A<} zrO8*fm#W^-sYy4Cp7QsMN!M;zQ|oHz$wZ^vUlggDW9M6i+Gb6U$m~g0%OeZrVPJXI z#uJ%fQK}pLrWJJsMd{J-PB9rW(a-_PLgS$Y@eheU$GZIBeR;8~C$Kzq0;!kv;7q&0 zc|jGLmh@UjPQu0ctTr@I@Dxf(IIUh@NtLup-iG2fvUP%3AXw-YR57VC%jqUuOYtQ6 zzK7Nbbrt2D&angska+)O6}8G5=)@rS-e)fz834P(HGf#Cd67_uOOoVgllq*3sIt*V zEDS|XV0OqswE5x+Fm$0#rJ~sl(}ANA_*WE_#l zDKqPwqQ#zM{7D7G-g~W!b%i;9C52JYsW9$n`C{eqLxYCV0*B^c_j9^~a~`Ax4MZ1? zS}XT54oJR{ZbYXXCgXMz#Y>VsLMzCKNC-*5r8LS5m^Kl&1nc(TIufQca!#NX*7Qoy zj}|AVceEmSJ{P=MM3$lt`R7IELJK|N%;5g`hI-}=i}$G;9h0|XfGUz-*}BbF zTVChxooPjRZzbWS7tpGMLL~sd-?MUqRt#d&{kE87q~)@xG`yE^)H=G!pX(mEquvdd z^UWJwT~EoGt}e4Jw%r3YFXGOv<&M{$*Qa-nhH>rV@J_DJA71t2rZZp74I3W0#Sg-y z=Jk`;@r5ewmNP9@*?Z9Pm!mS-$3%1-SM(~V5&3stmQ=KW7SIq;Z7s43F3y;UELs%gx$<@ckW!t478JF_T9x*8ezhM5zn9~uq0t<3k( zkha0(I6Ksl>x1NaO3Fk|7)%1j%!c{Fg`ooEGDX-=;zuKCQ#a{K4m*6&9t@Ye61D!i|Y%2HyWw8bG1-23c#h6@LRx5gXHaRx*f1k}ttR6<1)*j4Rv zzbV!MOIrAr7d>s(jOuH>d}af;36YHRzVAs)y*{A^I_Hb8;Mvg8fI6S$n^8ZDe5+*j zov-mY!=UH5?nJ6g#UM2jyjqes71B!vRO*l675-5X4bpw!&5>vjno{rxHr2x5A=z9d9WxOx#s&m0=+7LKy$) z67YV+sWeS+$u%auMx*Skc#lJf+Aqw#RxJCs)x)5o!yvW0n+YZR58MNWucmjgA`c&* z9W=MrZ!p;`u{yn75ixFT)*n{!T=>kG)4|d?3SW9dRvukh5ASH22;4czo_j#(xAfx| zdz>uv)P&#^5HU4rE97`!sZd^JFN`LG`(UKzOz^!>$c)9=C|&3v1EPg^!C=%|l+UUwZS&4;IHMnWHjR)vOs~d&Ndh{obzOxE8P7E8&6*Q~K z4rE7hdP=I2@5D>Vu8d43##1A}m4sw)QX^xR5VJ=lNy-$F2Lch3*z+)ijcfjl(N`8E zVgzN{u!QMng-;cVtK_a*C!ns=*tZ8EuNJe9o@&c!N0WBl;M$VBwLF)lb~b)n(|vpgLs=tV z9%t951#Nj@JHGxxb|rnkzg(}T!M`3)*QfJs_`heHnMhiz&_^}=Iu^55pCoFgQ#W7j zgXBz-Hb%~yst!>2QTGHTZcWf-kLSDO8xrY;e$cn9GlXi@?IF#XRpv$CC)iLHs_f21>(h24Spi&yavyxrCU zTtZ+@5etn8&>z7wqhx-REv8I41q1Yc+(W}ED2R=m-<~=+J$;DyCv!C@$v)auu8Zxu z33NW4=Z&AdHr%&^UG2f^w#myn8~cmg*HMkl$J(zyk9$F0-ax$M5#h!|NJw6~WtaX; ziH?pp9*^%^Ie8t?eC|IvY>9_&LFi0m<=7K*7Cl_;Zxy;>v^l$p;84$jQuWvtZX+nM2ev$=~ruH9*vc4RA zJR^MOZr6XP70_k|uQeLNB}W6ASz1p8sDKW8AsN;xaAFE(`6XWLNnoT>$# z*SUe`nibz-;w_sDJY3RevY_VnXsD48M1x=sl{+n61j=y0uxCL}Y(vY*sFp`UBTxy$5U90 zzS)TyHCLpQo_PvA47Wt%G4BXsga~+py}%YGfw+>`!nmOdr74jaRi(#0n9i7 zeRVyeqO)7u8`jE-oo@+|4Qu6u!k5*K*`6Ny%;czchLd(=T|yd7d;(Ly)Sa2(lkQo> zNT4l5MqLm(A9cTHPs=0(1OAVu;%;!oqaO({!+VQ9lnxa=d;0!wHTO5ly!-Vax3$rZ zs8=3X;=LC(0z>z?KuOOjqCP3Tp#hv%(JdR+_61g5eRlZ4GU-i2xO~xu6)ff125GUT z)Z>cdOqFCjr8Eb*Tc_GGCdcIX@Vf_;onG6APrKzijd}I-ekE_=mPX8W50t+wQ;Zj; zUC|;lt7TKDptVEeKwn?2bf4puvrKC}3!x>@ai)5#BU5-H;&B3r1iuoOyh5K!N!=#4 zcUb_n`6b7kjD$X=Y^@CNd5RW*W@PVdLqY*XM7gyH_6^hmbOj{3g-BA;azVu&@A4sW zt(Eb2Op34*Bkqub{)wQ;z@LU{rkyTe6;yIUpzc6-wc^S(D!L8f?NYu%5$vF3=!ip5 zY649C5S}POC=wVOaIle_VL%wnRRZ<)DkPjWc_Yw60;0Oy!FCVCi3`Sj77^<&?kYe* z)ILDk0eL#{XIFNNN^+Hp8mdC;@-3l?lJdD5m(QQ=w$|OQpr5v^td;G&Nd*J)FAeP~ zX{eOvx3eiQO&(0^+JSWY(k`jx=Hg(Cm-43YnQI(yu;?N*tQm$8jOuD~$)L(}9;R1{ z8~)uxr%8~JG8M!83Y-9{oRmc9sVHIsiSS=@{`9P*ZXSqmSL&ks1EfaHI&&!Tf+YQ} z+)@N9NJ^v@#cNZ?iPeM&qeqqpb`$Q(v( z!QE~Mb@2o>n@a3Iw}o*%bTCT~@tbMduNBAa`Cm&1dKp$ngfKW0LJUghv+D~fw2`qq zN7gVPFp+|6e+C2Dxoh@ScBx91z_y&f=>Arr%DGoCQKPe8e)TEC^6h|5IH%U^j`YyL z?(TW=Wc?O*zBVrJ*3)B&E~R(Jf%;iqlJ;3O0-2@0JN_d@Yp7|o>RUBe^rrx@$bELI z2U1GGFU=J+W;JrzIA_c%Uu>1=Gt3gwn=aJg9+Q^R-q`2}4SF5ty<#2oRI+={U@HUa zD`2XvmPbpNy!nb-77R8g}-#kmPnXDs6yO4P{!)I0c0 zqYYJw3?IinlOj5_e9{OreAH1!Fx2tMS9skKV<0kE9u^V*>r@JjdTK)*6{9Clp!QXR zHa^_8JT+t$ABy5ibG&q1zSq*L)9ZDTXme_{(4GQQrn*DfWO8vNJ%H+wA#A8n`IWEj zxbInN#(rEInpPz3X>HhPLD*fw*hOl&{?m{^%Q9NYz)JQfk`!&J05nj>gCAOXrF9w` z>brYMuQ7X-@+prATPs~vOS63N_H$^G8TGJBx1Jp=ae1+hyB{;P;z)|bh zAhF57OG>T+ZXf$K|4(c3pO^ecnzPB=+gIC(&6O&zIbbqUY&AU6EV0czvdwod9185Q zHm2kM%x?zMap33gFYX_$lU>==fAia#bPW66NYzm0@s~=jEW$Gpini2yYN;yD5*^;MzreHU4kSi_c%V?ODWj*PY}a=v z>i54vw0i5(Yyq$V0K`uJf4H{)o6wY0l9Ls1bTshzk37=x`WMn{{ng{|9ju1h+VH0) zwP^U?pSi=bSadiX^~*FbH#!(79F6LW#gdAy&D*}OUNhO4Gk27dg?O$=AQ8gTkJ-B( zQyKdiYf&z`-$ejArLu(M}j_?>jRjRxlL3D{i$ zb{>Csx&*RX$Q`(Swl8^jd0p{)Z^8C$?A({LhF*8zdFUXBc3ce0d>&*jr}biE*Zlc> z8*MqbI0wkpBRx|6ytYnyD46zBiza@ieDE|G+}6xze4Fs7$?Mnqf#HeIa{pfatob-R z9@K@w^uU;9!v=!CT!_6q)Ya+z_3yoU+K&J0dH;}d^~cpHF7NC6!*LE?$Z7`eN0vsk zZrx5{@0T7HI7=+yau=`XT*08+W!5O_eT9e5mWw`_wF#K-#MgUkq%=;qhuibH2&4V< z!;SiA$AK&I6fce}d(;MPwoIPsB=0a6SHy-D^8KxS`}$?Cj&>EbH-a~AbM;M~d0lA; z19S%GH|}aKXT-Ef9MyA!S0K}8(eQ2*w+Wc8p2k=Sz3Zy8XOK@X7QV-+h`4-INPpJ> zXXec2Sn};W#C;L|*=+2m zec-kBV)a%yhpll8_a2+QGv1USD^$>Ec-S@@4|TLm1}uSS>@vP9&y^nR`mq;l_ty~E zw_o?QUWFbhP(G}wmnsV2ec*YYCqO3U$;Zmz7?j<^W;fONC==Tvh|ND1&ruIn$flNkxEQ4m4Y2k}sG9I+Ba0bud*j-;so! z<+>Yzh1mSn&koe7PIAl3IJqa)$a2s|A#71oo2vT+&+YNQZBF)qk&d)m$wsWujLD$T zTe>X^7h{;5kZln+z6U+2#x1pnrj8cD+t>rQ#w|{-np%dvohJxI3JY(aT9csNNyP8J zh6-olrUZU5Lh^r<+(G*{3yiITi$Y)2Q(>m5XH1l9Lj`^@=9aHwrM@6PXdI|_;H2cy zUAao~4Cm;D_nW5aGLq*iXC8oM`HdD5HJv~R-w1;*8W!OK{-wL>yVM{m(grX5z+_>Q zrkYwV2=yM%^YDyIoHjto1BN(T#(})NXj-o$aHA`6!^&F^;rfAG(#DGln=_$S=YZ0q zbkYm-llPg!xBKg_Ee;CI_X7Fuo3}kgaeQt({J}xtsxs_bsKrH47p`aiEc~Vyh^b-R ziW|Or{2P&OTOGc;4uux}OKhT4QwYe+h(fCc)wEurdl+x1)k!&r5DE6eijhnL1NtLo2%)QvzsMse%%vr}RqY^~o})iC&B z=R{`Pyf{8$HXHgY{_R+UJ4ePAq9>^cm(vF&$WmVOyAU7j^qb$_NlUi3Yf z@LbkCa2Spc7?)bDae`k94Ws(o`y@=_3RrRkedr_RZ<+2~`ximdLWP#a*mC`o;2&@W z9`_)Fnm}0&AmuzUWZj`FCukE_4Ac$Dtbus3ls$~V;rIZLze~w^1t7(EVM;Fyq7v9e z*WjA0&qcAn_YcG{7Gvl8oKu@Em+TlO9qL(`Q61-IS$!EoYciV+>WSg5rxP6K(9OM= z<>oI_ul8&Z+_xS~$Z_A7^v!NM42i$nUShqi0ToNeO;cQhJ17=Re)z&Mcfe^)?HgI0 z3|E@v!<35{(msXI`zw&-%+nVFIB-S1xt}0<2O?h31>{rK+@pHJbnX_~K^x}9@9)(k z?0+-_QpBiDX+=&P4z-ZCuMop&Dny$D6u_Md5+Ec88W9vyl%|3QjfBZo<$9C)j3WO5 z`xl}&eF@%l6Gjo^wg8;Z*TRVBFf#TV(oeXYvW^tZcUKjlK*}76{mT(3Q6A22 zj+kD^p&l_yo$Vn>1xq4knE5IY{snKRQy{@FGdxbew}{i6eA*J+nLa|%lz*|WH}~mt z6{FdEJdMjuEIxQ$1yElqN?1nO@Wq2Q>_d@wO`mP3Ib0m(1cI}0=q zYiV!!)-@37z?h2@RG#FlxWujx2D)%M$9x974ZjC@k-r6%I_6013w?!TR9{Zw0#aV+ zdrl~!Us@~k0}MP}wZvY(@O;OVE>{nWYgt`rD_ORQT(8H9L8W~47B=<({+aY0^_}&+ z_S>*p4J`X5ccrBi$!OyxU_Z+J8q1_t{z$^Gzy%Ngd-V-YNqXXCQgg*OQ|iPxsrAv%A}Hwb%P=t@p!h#YV64+jw80-SSU# zmP}9DAHoNyBSR#d*IN+~jG(B>A^_^Iphpj1GBXvz-7(d*lDu8F)i zxZX*DJ|Lo9Oys}L7@_U*wldqYf^;wp>}EZ1hwG{IZ9@)DP!a?q!9Y)UGj1D_Rg@&< zqV}Z&B4T2yHFDij>cvfCaHWCyWDok>nNk1qQSEdTmfNvta#NTATdCq_U_?8qH<=+a>%9IjDjBe{!VXD6y3 zPZ_RW3X`C;q(oO_u_0?&&hGGz z!*;d^dS|fTYM30?gfo~gpE9mI2uZ0DTh!hiSx7IgJ~}ib5k#`Dh%}V08poi$)xl4R zR5#Bm1c{3%CgN0~Ad^R8 z(MpnaJhDQrBumZK2P=_Onuq2>naL{0|l_R^YUY(B$OjBN0TkDJb_> zgZ5ztM(Zynk(D1Ip-V(sJy3s(T)hK{>a@D(%%!~cdW=j`_J_pc);~i~sHBt?)`3nU zumg*50TgM4q!Zq=LIMZpt~J4MscIK1ztlsPa$zT9I3CjVbeY z9}e_r+br!}Nmk2xn&ZCJ8$*tfT_h(Ze3EQGUkf;syU0;0Zeu~}QZ4Um|$58JrqjO<@5=Kyin!$ zv4HcH2?2b?&09zrtSiXFNa`+yR~Oq{*O1ID)YyRXsNi(>jipRk`S=($4uoG0K6 zdSWE3cGPxK-aJh|=~}*o=u|28$7Z!*rZck@QIqy>K;fwNLnV(G31&bkI}&1NJfFKn4UXB7MskV<#Hej{nim$$n3)sORp!!F<7ovp~0 zUAn~7Y=X)8wy&!-LqosJ;g6CKZT%aC?4DIbeV5uzOUxfk+#|ObrH7bYPOri#sg*Gf z*9@yY(&B#YC*ObpelljUDdFSQvf?^57d--6ruiYqKrB{g3D8(hQV-Y|GgJ@RY3~gE zR9_j`XWgNMIx0WC4$a!vsJHfPnlZ=~wXFPsz?SmA!3|@HA64`62?3hPD~JK8@-;$$ zdQ_z?p1E}57Jo+gMInYiTR=wuLhnl^B>S^4pFPsONe#GQ%L%sXl<;HfRUW26e>21ZD;9y{E5ia07sPI*& ziKb5;`U<}*Or-$?HMsZ7p1>_+cxhsD-*%MfV5Dpx@!MCJca_X|tR4LwQ-NsI+f;-U z5Z6LkBq^c$di!g#%FWIV>wz;{Mo5ZZ z*@*dID$FFD*PT*~?h4xRcFQyw#d(!FTBcqyNT$ln5t7H5UN?+8yZq}j3k*N$X!N)X zf`AHnf@X?QARRQnfhoE`DLS(Q`+15!ZHA%XfjEg_cru+Y9UHk<$>PI$VQ=8On;G%y zOMi{w{W&7tCq_^2Su<9m#-t${S@Q0YLSnzxug#W@Gr-MF!_>->>};elC?t?4txB|gHF8!8=EYk&WJrWq zG*Le?NRJRqIT@M^?%L0ggzMkQC^7sq*vO4NqPbRVD&s!^%ue(~@lcxpU8@NEQ$_!o zH9FcLX_8iaXsN);l#sDBhW~myfF}6rnrK(}DKakZJL#zA*vPK8U`au{F{};U>nTkZ zy0~3kSdmySs{lB{Y@dSKQBr84gWKLmx0U&)~6&_Hz_C;OS?V4WrL(KJ?- zB4HVctC<5*N=b-5ZX6k)0z=LL!USW6CD;ni>M%^gW_6B|X4@~XjuSbBkKxvxCqfi) z7d{%7{dpBqZ+D@iOYz}Y@VB$@YM>+c^WFS5slm&a;GMCwcrg<*irJ2KTP~!&nAkw!6v~})$}y=+`ZzRoLZKs-I~nP|)TSYvWFY^O7Bw~} zYM8O^-Zv#8XEON9K>~7aa$)3He?QTkIBR*GV_6;WI-ojZ({@&NW$H6LH*rdZHb8on zhS(pB>M~OQ;`u4mgns>4TN6T!6Ez7*h^Ou;AYT(m;Zx^>jFc!dhT`rE74ty~q>w%S@qj#f~K?xmmO$=-X1t_+QsqF4zQ3Y^P{r2@eE z7LN>USt@c1dZ7~6XkQX?mhV3*w6HOG17$@vwiI}hl80s%5=_c%iztG|tKMQvMHbA< zcmaaY)H#Pn!#>#m}m zrT@6=mbjjL`Q0#$SE1svtJam;pCP8*x&jUgn%kY=gz3AfHg<2K!dg{oFt#Q@3+J(c z+|547D$4gU8A2~GGPlFROoUjuk{ullWt8*0@XFF_cNaQCVKU_46_-?dL+6LX(qa`- z1ziMr72H*O#FdF!ZO}2Qu(Xj;xS^KR-~BL`@CqjqHWBFrD~}8#5Jw0p+8s5S(XXRw z15+!#bRH1tkrxx{plZX4H2+IafsWug*a5=~n&&5W)nU==n43rTj&_YJOLR^&3rkl` zlYIw{yPLaYN+qSE2*|u%lwr$(CZCkhR*BuivGf({& z&QqS9E7yM2vCZQ*WHEIeO#@8I*fHHxSfRYHu1s{YLkk>qVdSa~5F0d#>S&0~oTxw( zLcp&C#sP0dO$a&^x4q_zKUoL&zbut;Os`EPs{8h_YTq4y04KJ3J3NA~5Uj2wxWbh- zZwO!&&_NXFP=*;_PVCa*t@KCj38Nm=N)fE_0XY0594AFEIi}jAHaALe-51|sxd<-G|jK2jArvo6*Y;`uYX?jsjIxO%x1A@_~hRhP(Y*sy;>GtGWcF*SGOzFcqgce6`LcPHuYi_J-H zq7&CRz2U!XucjJavBX&N&N4Kgx|euizTEpg$l$DQ^BlRSg_U_Zjgl|GSHz5?u$m@l z#m(SQ`PT9VSVoPxd$p}uNvfdk-ZPtfSa1F&@>Ah5FtldS0j9i&2RDZlm%;kRk={jB$F8=8}<(9w|&Y0QMe+FxKRbYK)#f!6l zQQf({XP=m%D`5EGf?LwQ{%V6eQz-scFABigThjtPjvr9SO&-a_Q!W>C>GKq<_d0TykVWB5Y$N=uPnGU`ln!k9v$5g zM0?;cGRLVE!?FPtMq}1jkoxP-KyNm| zDjUchW=Kb5ajh>*^=04zz1Dsv>@csOgSJ#|t{_H(QhsVUquLJfkEpatlfo#Gs& zl(y4F%MOBV&DEeADUC+!g!>(GGTP9NbeDJ4iDE@3@{h;V>Z9VFNu2|I91R<)*7n|d zVQlwNzo|PD3LgnJ&<;6n=HE&-C3YwF67pr(y{Ti^Mc@h#63+~;es(7~mB~&ND~Ag( zGZuKWpQIb60}PIyjiZK)Ht@xZAiNm%ol5|Nhn)l20wN#q54AmWX<5f0_T03*>|IT{ zK3bjT-c;v^+eWv-*O_5Q7BTqv;Gq7YU1w_^q*ijN?>)42S$39?;L+XjDOb>l&ihi5 zc$UJn#YwUdt%^0dyx@t3?+zs^7J5d>41ebast&o@Mmsr+>PO2Uyop2WG>P~|?)?p~ zeQJrx<;FjGM?1UenKq|Zb~g@(qd4y-%6wAJ=fPd&%azqV|g)@}S)U|nc3}Z0{xC~|V4(1;VJ=jru z0$D>?gdn)UCL_HD2J>!|3FfN)?hj7|0*Tw-f6Ah9Ss*mOI#&9OU*?8F!@4O!BkMt#wX6AL}vmdS7YgUH-b7keaivOzl z3T0Bn(}nk17pn1lb7JrQkpTPo*L|zcsN#_!5H@f;h)Rzh=AvkLRT;02Fo`P41ZgD(JJ?9Pjnu7h5r1)^g48WWGqApawT}Xq83b&UP(lH17^Rs z$@T*g;0=#Q(uhR^^&uHUGJC-YE~lquQ2Ew_zK$dQ0tNrdsFQld6~~bd8*gyTxoRVU zv;5lzh8gF;NP3l9I#+EC4KRXuey(wsQ&hIHQl_1q*AYm2^&LQe1`1OIOCrLQ7%)jl zj)veX?BIThq5X&t;+|-Os`ZP|&mi$pslJM=qfi6gl~>?IbM?QY=6UEz(8tI5p|~%@XfH|iXT2v^ zi9Qrp+J2z|2QWHvjw^u^yeuIvsHs1gz#YbCJgu%jnBf>qKR2>EM!(9QBF6oHC(!uc z2lDIj+RWII( zIrCUdLFuND;hEt@){E-3McpNP410}CuIKl@4*k8ZZR#IIE601HaYyijnB~~~t6^bW z`zlNSY#`mYqIW&Wo^PBv4w~GaZxr?PVB$7AW_q%@m}gDJ>%Mx zo?NOxkMGq-xu6Rimz4XdGDCkwM3^-XI*yxz>;koq0e8O4rrx`KY0~R6fHgb}D^u`S zLa&#@6X}!vpeo8xPN?jTcmF^b{NMjic%lO>Mcn_7Hv;_EU(Wi!W@``6CH5U%QIGLzr#Nz(@@p&84KF#;8Ct%z+??Z?&h8s@G5zwqqw1juK{W zr+sr3S@aReivn@3qzE8gI%i5}pQ@bX{MoRc2X^dd_l(`Wfm!lp>S?_9T7vg?MS2L? zA!eroUVeW8ganl)97mNCK?Xebfb9~`HXIP9&z$^xkDVOwgWCp3^2qLjf}JFPIO2L{ zx7f+~o3-Z4p0FL|3s#hfEzw9wdhEPdR-DL^hiz}^SxN$rSwa_p_>#bpo*-QD%Ht{U z;J)F1e|LW6yZqS?qJ{GK`wzf5-Y?$m@%;+i@CFZl2MSVBns^Fw^uvOFKi0xcEg|cl zst%~)4w{ZHzGUvhr6v}?c9QxL2u_kuL6n$EZ0N;Yc*5N?mssq)B7Ls*^IhHrsq^Ze zp&>Gxc{AvdsK}E~@s6WlD4jl8;fW}D(;>KQy?XKY?KtPw=9;Hl*;R%zP4;1!4j+Vm z(h>|b^-L;h{)qL&Hg0XP`}14Fa6`t0Yn9cBeA2{RtPQxIiIZtdh=X?4=R{%tIG}IZ znB!g#`oY$GPK5W9ewt@*sOW0Uw6^BGH66U1ZLtd)@E~B&u9!?tU8VCnqvRE6VkRLl zONv2$;)>F|%k)d!cN7ouLoOSSR89(vNNxS}GhFY6GPL{K+XMgH_Q`d%-B!ea90Mu} z6^j5rR?Fkf+s+P9dSDJjN_oMk-+eqMJS_K)TU2EbN&bg$8;;PBWqH@r^p9Ji|8{PX*sgxAT`{p&U)lv zGgrPq#sBl3KyZ^5iYFcKrxv<+TDE7aMLKpn309ck9Gc`@HJUQcfW)ZiwIS&wmT*&x zu`6Fu*d~xPIHz6uGEW4PX+jq*D|ruZQ3*0gKl5X2rJTn%CB(*x$@3Vwrcme-hO@Rm zWtjrefM%apMPOhv5nB)<6%qD`|AqJjSiQaUFndC>GODY~C2NXPHLQ`bDzUlA-zi>s zHOmb@X#lJlR&89FvNN zt*}kR7-E%b4QSCl5yMPfO1UJnp`c=@ec~y&d~|leysKXDR$tR)+s!C~e(&BH9Vo2- z=RN8Cde^XN3Z_v=W*>}w7*V<9UjdgT*-2$Pp{$8#L-~;k{f9X`R%6KuD_6(>82Pi66pAc@1jWG{(b-sEQ<0yVj4ykI%&*u#g|){ssIi;dw(_*f2I`V zqv@vDk$9zZvc$D?3NUF|Rjnjq92_Uc72FqHCj-h-TPB@-V{PlhSf@p__}SEJ@?n)4 zt{1Q$L-(%=bU0hX_lwU?udgjfmrt@^Q6C#?xtOk?i3HkrPp0+U2$u_qJ2zDrZb2Nk z8Tjabv=Y3SjzNdD*O$fx!kHOKY{q6NeumexM)BQ4hbqw3aV5jN(yIWVM>ag_$q8OO z%P4=oJ|c1Pi76@3W)_)sr8I@T8EdY>pa+&0?%Jd^11Fhf2^aa3q^55Ypb=s`;#{*} z)U3I)x@Atv3#i*CvW?1=I0qle08*~Ka_^IS#6MTcA)~0SOSc`!vCI5tEnBnlYJef# z^Q=dQeK|&(lA0-Y6~SRjJN%Yt6GaXdwS*xc4VZL^@$9@is5_++IhYnEjcU8Qs~vw{n5TP=|^7H->G#+-AnBL*Po_d zIy26LnAWY+&Vv_63*UlR`O663nLli%%f=qzUbJbutb^2zLjQ24?@a^eMu$C!SsAhQ z^r{8RmfT#XcH!%a^WA}E`?Z(qb*9@qj(j$`cXG>NR0s5c9O_kqOU1D;+BP{GJ&}!ltJubPG5#5jn4S zGdShkhWo)UvD{t|r=iD7(*^H#dA&nmRrF$F{FG_OO{8LiPY| zoA`k!@s(Z6^zo15+epIZ>Ui*&sZHv^)aK8e)528g%q*;;xJNr}a+Mb6^AX4>&KQ@MsbW~@zq1$76U!{PVc3KA5BkoQsn2cth&EzzfC)LA}5>XF~ zrzcI6b(@`Bz9qJgk$1Ci0{8WPfe43y{}$AH*ak{uUqr1S({x~x3W8%EmzZ+GzD)Y z7Z272ma8a5b;`aK5MNgk<-+A9^w<^b1UoEh1USA2m)Mq9xN+}DJKSX`@UfHzv9*6HXV;j*^o336PbrR zzD*@ExqfQ5?%w-!atq*pM>spbzi+?)fOEpmeXUK!p1J(g`rc3Sa*6Q`QO1eNC}+Fx zYR(DDkqjTloXwm$x&1DdSRa3=>yeC3P}3JABeSCvEO{z&|I{uB@G|uc69;0!ZV-7D zfRq)L3M;LU6LB>A_>oZ>YQ!VJqMbwM9>jx{^ASe_dpTeCy2jbY`f>@}59A>&7co0O zV&VRMK0Su`Ett)SlZ%a&hoMJ|3U21pee+^S`y`i*?Gx1JkkyyPfQ2}7;Ns$VahAtm zA_FQyiIZG{6odl@WkDrDl@B`V}D5^f)_A!ATX;5G=& z;ifP=UVqVE3;y@fx7M@Noh`>|qgujK4H+1V?${2m-km5?q(sWOYAF%QOHue98D5dM z05Fx!kyM&pPS|k`f7LJA19%h>tknvNjg%iR-xQfO7JlCEMdO2c0H*Xj(6RK-$EZZB zuEVUh?C~2q>)aC8TeJJ4jnvbdA&-?L*P5pkqqyPp0|B6P5G}g%8@*!P&z##0_1E$`o_RjOKz7jSd2yIoK7-W;${bkwj)2!` z@i@#={dMWgEAPLhS&Y!xwDCM#vFU?E1&*ZtzJNZw-l+p~G$uMj2bJkPmuz)D!zs@x z(b3YB21eSH$r2qYvHa$6*8V=4QT0IC5u+)zx>&|i=W>k{9lRJd7O3eR!&N*9XD?BH zPOSB8*GV;v%>V>ru#dZTX(x@Q1X(l)QzAB`%tZ8+X-$?m^_$H;3F8sp-rhjyU2F|)BVeO?=zeA93z|GN;71Ai~Ce@KgWOsnfk7*iV35kBb$-E56@dJKd? zIb6pZ3{h}h)>&u(Z=~8-Z3^m$;SwOe(oFCkjp)xM%VTd$G8`%Kk<1OrLS^N#wT>lw zJs4i-VuuWYY;pkI^b-x?<4xDdSbeY9BXCIjLp>jO$&yDCWDI8NKl2*ZLA!rb5(vG2 z3bQ|nLlxtf+lLU6oGWhDVlqmoTE7or>m=9$qS|ww6|AzIuLQXFW9vRB?;s$K^V46o z+}=3J##ckQt@y@)sj`6l>rnur{w&Mn(=9oGNdNHAk9Fu5kD{fT*#_tok?d-@2fQQ* z)C#Ye0XSW5P%GA~wp1rQ)xhRIlbj#bYc;dunsRinbIR^#-9A1soi=?jnO08iG%*lP zY7JXy^=HjAnh@}u9KS6BD#NxK!95E14pmM-Q zHS~Y>QcP;A1Un6iY=m!Abg0!f^rqJTP=<(v71p3R;!#~g*J|$IF{*l2s*f+$OgP66 z2i!(cDTk-Xm&Bp7YMPZ2idQM89ZwEgl30Eqq68|)&l<(!IRLiE`8S_Al9bc*7QCWE zxc|kbQjDmK-`odOW3yrg+ZWMbh1{zdKl^>$e3{WRfR|3&zLp`&VOZJdtL!}?arNst6YaHd~TlC1@$A-3qylsPSp z3j#|Pd}hxf4%es9Am@Pj(-G)h!5`EK{DPT_O-OL9ovvkuk!`Fp1dtM zDg9K*-A`58JQAfm4pml24G`9Zvf7K55ksy)vFe;im>sE<$~Oth)c zoSbSfP$gICxiTsZNeo#x`vd=T2Q|#QT%NA%&gHh;>F~(QC}XY>8LNG3;V(81>OJ3;u1L7THk)8Kt$O2I#G}x}c`~%@`L>^j7M6 zRmKjn9>|Qw@)M3bZTcpq1u9_%mski=DLa(PlMWO#uAz@vLU6Xxn(k_4sjK zvozIpI`X@tKZ5>>zRrDXcdU!QhRqW9(x97sZ~@X*;hHDr%r6^d3w2Lb^xH!04G;G) zCgjZthBua*>Dtrmsb)|rW5Ic6H0o7KXfsUjUW8f~&NEG_`r>{BGRO>@_4 zt^F%ugURFx78(6=a*~77BchZ^{5RteB$bw!Xqj%4Fp?pT>;7B;NQp;heeZ^ZQ)IO_ z%slpwqW4U;%@E((Y7SD*+ys8NveGWqMefH<+}YP2WkXkEmv!>Fk8zc!G_8KN`eHeP z;@C|oY`^-35dLneD_{$^M(#%FE*W-8+UJLnpJd6G=B3?InP#S1mE%;Wjrx!6l8r@A zeYHW;n?>qvTtXV#OruKjsUMoc2QiU{OkczJ){jW@vNrMG&7MPkyO5w+djt!eG2)Lh zC>cC$r$njf;cm4}<NKH(K&6S6IEi^ zN#%4&>GuDvoMB44jqbS37`JSPL_?jkjg!vTHC#nEkq62 z0uLG@bBBC8`0d360%kx-^eKVPz@krjqQ_Mjkt3EZLPi;eHse1^K(m`z$0Ey8;3UL6 z#7ZJ7Mc@k~PLwWMH932l-m zOM~E`hv+)xdXvj{=-wA?_);4Wr+o4jc>K9|uFapa;>n7#vL^*XuNd+ksY0u3FbxVP zLaB3Bo?jGfN9?9gLcUa{j+V-;iQz!JY7`VILUb#H3XAEBk~WSHJ_W$KVqxD1-*zzY zT{wU2y5*D|xJwVYWPP(vb@$%B&`+>As@5#PR3Nx&yHTs~Z+sb7pZmskGB9!+*o*h?c+Z)31u!0MG;kO-6k_f&N}YS zY2!Sb&Tz{8dvdb!@$R?VgTx=Zrx)(V-_!2yME5yXv@o}q6DLMLM*lJLHe{C@>2N4& z5fAEc98$DUHPw4Q*J%A<&C=P`g}v*;9-Wl6@cv_-Ix}=9ZirLncy8wV_ql5KsSgJ~ zO4{RXwkzTA9V2gFo#?qRE2%g7JS*eb`{!oQganyBskdD(Lcd#kE{^>0T#bwphCUbW zFWdL&5&Pc{k$(E45|p%un)g?`!wWyYuUG7M`RqQdD7!w7&l)Uh=thOy-?y-;sj4ge zV-jTXzcad}bHnr&I6i$6hY>PM1f3p_-oyIBO&!xbh#pQJi*JT>K8z7XGGZH&_+Na! zpU>}GeGAh=1fL{Gn7PkO)~J)tWG1WV8&tXG|-)6noi`-aG z#eV_umD7k}W3JZq5Be@hAki{*C<8Pp4+ z!7mt_lOXr+NTgFAugDLNMR53ihxT&e%s9vJm!~rU>;3|}J%6e9EQA~K zA5tF1DO&r!25l){p8?ZTON8JT@47%>fM?epnh@0{z0;*k+P0=Qa65Rs#-W?ty=aR9&xfT4>tzBxAC8o`K?^Lc$8>L5(SJb9IT@i=Zj2Aj zVYv9o@`FbGxjMqJxyR}3gtdjZ2D%^&`R#Dlw#kYv`#wqkhq!n}+S%8DYGd32zA zB1GB9=wQ?&1SgUcgSLBwbid)yojucQ#3E{Yk>7hz&Rm1gQpR63pzl7`2|ZYPL&|rG zjhiturPy&xm8jst8;Tpzn__-CAxc0#K0iW8E#B;z&RcCGL*jcKRA})E>RV&an6P(% zQK{7WhUnXb6`P9xRV+496z}XNyRYS%*@Q4G?TEtoT+pjHTgy z#_2g03nVbf^~wQ=DptMPnSWpu_bz5V^IFfdX1K+VgEPQZ-OC3c1z5Gq^1-u!;Vn{k#O3S4cEs&^W~bq@XGli zNE9-S2^4Z5?yucV4dUFAK7#$;y}HQEX=;4~Ff|RiW_J4P*>k-ncs|v%k=1qE zvlp#sE$}|+IksSX@9!g&&u8rmkjoR=)sifATG>L4ThC+c#ipK1)?w`LTl@JuX95;To9xmb@o>RulQzM?`6R$)<=Z~IH0R$HbYeN z5;HVxx#1wk6onkXQ@)AZAw%$4dF_aD;p##SdLV7Xy#OzEB)cY6bL%$p5=VwII#EfD z+BWH~5#Ub$E|(_R0aUZ)V18CgfX)u@IK6UZoc6n;4hGVU_XWL zMBN1~D^}zK%$t2~WQOE2G9$eWm?fdi#Rtjj3FS4$ocJ@c%K-e5=x;nH=ZJ4GyJ93a zTs3(p8afQ0Q z6gJA2U{cwa%v4GQVYDOadL`y!R$1O?CTn^HU;&lU;9erRJ5vLOG=da~^v3Rx+KAd| z=O~R^)xr#Qi_((LGfE97Ei5XHp?1O`8ajUk_`rS5EVRC>1Ef^R;OwDm&{s+dSkHhZ zcgznNiw&3?Ua)PE#O4OR*h84!I|pD4hDxnQ)_nT1U8d>het%|!FBuO8l*^5L3U=shujC1dSS$NP9!hTDKO=6%vK|j#(W*iuC`D`6?JS)D#3$1G&04WGE z=H>uMDP;N?gs46`lg2_!!YKrO(thc8KZvB!Fit`iRG^LNDS?gRQ6r|LB>8r^K`94YWB9z7gA(F@AFh~Yef!70mjv$n475WZ1io>|3;v?}J{y;NoSaXX5?M|TQAr&LoPC(Xteq7M!3Kx?TB5?EU!w0H9)=wodlwfRVHwr)%#zs+x(g2O7 z!45!%wRc4CC6UF0$8S)eY{_mIqtLHc&aMHVk8n7b4=0=aI$vd}zHUIy48IS;E&C}G z6}C5gcbIpmZ$$E|&Vvk`|As%TZxf(+$sTsJsVBOvQrnq*MSm0sj8;zb`)AhN*om*{ zV-qG8$TZ7)wp*xHcLV3X8NXAP?`$doexg~&-k5lkZunWRJQpI@%YXWlaMS{q{7S9& z(Ncv5KtP6WUb58D=|{ryc6)if{_=;gTQAzI_}M0>euK!7Ute>x)rCAt`D4D};*#da zX}RGA$+=*UbHB*y>m<22EdB+n79t1&r5-2$xqEjz*8RlYtvZnZ3^4?G;YTR(z>{`lrJph>L z*Bp{ag$HWzjx1m>1nR)m2WOl5z%-&8g0Z($Xt{$WSVA=jFDQxX9{T9gNynr4&@d~9 zfd#cnOw{D!O4qJ3TSvzqz4zCduh+A0G?4otZ)r`jUTlqCry?a8w7$)pfi?;=lsL@HgcUZA{vP$ZaFA0(dHLhOTCqNJ6)s zXaY$J-C+d!WKDp}P01q?yvQoW;$;dytVi&xy$?NRBYkQD{%vt@Q0(vP%KKQ=?abMu zrd!JCY}oLZ`exKo^2^INL2*LmtPgH6Y)$G$1L95xQ78S=R+dcalgYVBW8_$rSMx_N zWSn1ORV3`#ZpL_N?a6JEw~EgrKy-9F8p9yn;zI(FO+$Rb9)jWXP3yR234 zbF-)WXgBWY=4T~T7)#F3PMqMMgg-tYBYi;8QFBrCr*1I(eQ2(C@B0%V!sRnjUgy!1 zcT){vWi4-q^{C{EfUG@G#NFnV zrIi${A$voe$Beth&wGjisr=uRVs>$_-FdqLY6(w37x+4!WmQJX?F!{QP*WY~lhxW> zBi$^UW2(l>e{K!|_Pw*AK$1@vV6h(M?m}GgW0Xqzb#I_4yysbkl6ySyuMtPTmf``# z(C>Xf-{}q;U7NA@?MdH+hEY9F`Tw?va}?T4VgZm^_# zR6y(9w?j+xBxlH+3X-TEXY}A#%(pEM$IJa@ZweyFB6TvH3W@wSLOXXaKMhxcV84OR;glbE` zYukmes&JspYWo7nbEW0C%=3l?0QU^BA<*PNQT-_=ChFCBi;E$*!5#V{$bPR+wIzuUoe@IzH2O|U&QUiyGX8<2CFx#;7*{_-F`@>Tfl7LM|lP(;=kNRgJvs1 zj}_Wl{1B5_*oa=?&M$2XZL^(!z5k^1FFAY<-MbD_XTv!{K>DRka-Zp?0^D7<{5nkg z0{;dmXrg^~!V75Sb`(e6)__SYDnC1o!Bu!343)G{M3{%o$j zALvzZY*F5x0L)$+u&kWDTCVc(w_WPk0kk262mA&EG`B**P=(IAYfoSiS`fS;c{`Z` zL{P;yJfVLZVC%v)!CjX$V8vLo>uLt5wsC9cx17Oxb1Zx}XEU1KS31Kk&|%Wfuil5< zz_I_f&0sth-vkVd7{wdc{R@HcN3LY{Nydh@{`k_=D>-A@{t9BqTUN=W^x%#HewKCT zfc=tz+y$z-nRjx`=JX|mT$(T2Cc);*rd6=camCwkoU6M2-w2a@oEvC!A21uxI{xld zAHLYtHWIqf)+PvEv96z9v|&4(R7KqFgle+<@FDuOFqft20i_f>2$g})E@KX z{XlJNR3{Jt^-uuVB1aE>uOxX&mh1?X-_GO(5tF14+GNKdl7ShRW>p!sE@h!qa7Y!Y zW1e0Yq0Bw!0~~L8UdUOzfeq0Y!B>C?j{r*HqFdKmFFEM(VdmHg-m^gCgP>S*w`dQ# zYU88OV9Gjn?rNtqw2uC)iJ+T8B)g;jJ#?J_z=adccR^Ep<5Q(g-@S7#XKCnB zhvb^eQMQxcv2`pS((qD26ywG#;%srp;p~yq;12t%C_F;T!$lqzQ!YJ&B^(70EUMmC*sZmf- z@7)E_nY;pOWq^R?S_z{Y^lI4k3K8hTgE`3S7_Tm2=dd1p)G;ChP`N3BzoCXMV|!~u zP;IZ#(gen*fnhXYiyFleT7AwdeOP+Go)#WGKX$5Up;B>>a;14M39RzkS2~zUk0qyPS*G%S>6svg z;rCJ{?<*z3Eo;&{AL-jqO=4-o=N)#R)$X$x8}SZ;c`V@SVux#Mm{3xAFmLpxrDV*hV%BVdSxtP0OlSeEm)~PaK=aX$yzQK82v) z?`vp34e!DO1rCj4?SepWk-?4y>T$)0$a^p=sfI^M-GGz_4~-ht{wP^gIHS=EM(Y(# zYl1A|N45c~HxJpZlVWX)xHGTD3+i$vyWyp}msoPTN}|w&6*gyUKnETPskRfUOHTAD zx5+=r*RWt(dTaxoDKnxwN)?wZ(wGKwS-O|(V8lQW{q5XmQ%LH{I{*-|D=n44@zkD= z(zS0chmbvy6zS@I9@D4uw_#Yc(NJzOMc&IwegGdk<~}R3o9KF7->F|XV?wXEZ2?kv zoGbTUvdA_0w8spi#zlnHfypO@ zL@PvaCFnT$Gq31acHM6VnI8jA{%A;U|TC8RYrkOdr3MA!+;e*x!Zecohj zY_w~(5?FZ-&UGd)SE5a=jHbm6K#MYgYnVP+CutZkO5)+=QeH;d>F9rXd2u%6CRGuo z3IJ`Gywb6O_wW(M{ShGOZ>&f}!+#(tJFlejt&W{bpF<4ajzlv^gCH#-W?D&AhN>no zAUO55qD|M8mG4m~LWCwhyg|;7fK*V5Py10(DcZzhMqa^QxdSzirGDTFudaO=ghJH8 zSSw+h?Pi=sh>EOrTTI~SVY7hMm}?241ga9?v-0dpZF0IxqLEm3#Hzp*StZ=Ccj4Ri zVi?j&vSS9SeEH#0d{jg1#^0}R5RW?wSK zbxUy(-j$vk^kOaM>0N0##ah>p+x$Yl2Yg~yk#On`2%W+mmM;VS&vU9GjT3I>i!1}7ysW^Xxc3zj8`#Lfe1^ z^P{BKcdpIuO1|L_TsGCK>$;~Cd8#h?sIKU>hu(hqR8bIIdzCC`Nour)s(=MMs`$*_ zJfLmZNCAj%viREOVS1X1^^~+}&(hIN{qjz7Nq>P8a4HtP_rS=Z55Spm5Pof~Yf6P) ziz~;P=uM?8I8o(l;unqamXwIDjgzY=F+1_?g?GN`z^#ZO9qB6St>VPdi%D`Ymov<% z;5lihJN#zxB-If?FCMkBtGzcKM&6Y^l@*y=-BG2aVsqgLg{uG8l*Y6Xjg3tL_=SijE565|0E^Tn|^g^ zC<>4!WcwXRP%(c=RX18n&=4QwT~tpi@4^tx9gmLoYtBcFb`g~d?l6=eA_X|{d=BKC zs0k)XW7WWRqNMd4l(rhO#9khn)6>7?|RI7vM4P`f)Mef}K2odMPOkg8p9f44#A zSV<$DYufP5*&ho3Ra!&A*Eb2U5&T5ztl=*5n%KA^`}n%l7!heFcpYh#gG*ewgWiF$ zsEb~S!x{B4P7TZBMrGNI6{PmB~FC&we{{a6);yszK-(3mU7f z?q4zG1K^>iz+5?K*BKkxL4=Gp?eaE`8E? z#ZgX-QSbknW}(AfT~)Rfb$G5dPmQc*zrX1!T?prKqw4cDSdP54(ay^+4|C?tE`Zdt zqONrd(XDd)>e=*IiLw%5jei*6=7978@=gz95y&X4s#e83Rb zfDnw1)cOKjW;I%QMoNzBd8CY)mq1XLDb1mA#V$@EWGhwBq;%OVNN7)3>ToaDx17LW zAt`1_R0_|2flx8ONZv_*9^3C)&uGQK$uwn9fc!S@9wdRv>>z2*QqG2*&NOoL3yfn@La&kfyz zK1PM=^vT8ZbPD9fQCwYj3`U)(UgSL znm3l0{`F-<+`@=m;M7_V1KeI#i9D;w3vV!0rXrTb0&9|Gh%0X6xfqXG$N@;aGA>Gb z$K(WDCEWb7b=c7xe~+Ws4la#LM)>$n_(*N1N59HZ=c2}Wu}ZoNJc-!B+be_B?>JHm zsHUp1nH_Djvba+u@gzEmNJaD_0krK&(pN9>ANmG&MXjC=_RJl>X-htdr1X_b%oZeD zD%TZBcM&0tgF!(f-l=9bx2{Rh#x*-gDrflfY04>uDb_Ucvs`&Rwurr=Ao~37&8wHz zu42J8!V$W(noHO19f{e>AkXsRHabG+wIr>`u^5p|%#QpJqd7`cZ3XK&!A5xL26#eN z?)*z$ae*fY>>OTHWD8Orb`c?Di(hTBhs>xJk=WSyN;05kxAbFoj^z?*6nu<`4Iw7G zWi>Xo0zqjWH7#=Pc%!>0q9DgngfM zp(Z}6KF*69e!3opdEPPVW%@?epA!>5ETnvG{2c-RoYHLXe1W$ZlJ+|Td)DDogZs*k z=E4M7!2|u|A+K$N9CKWRSh&RbNYiGEbu~$Ak!bzq;h|NeH~iyl_(t7$r_$!*MNMSK9^{0YGig5*WA%if z#9tK>bxTS^Y-F1aRZZCzKb(y=Y*o5cx;eQw@KAcv5 z@W_6en4h74+zf47SE32!C($zpzZdRwN}wW?FZCx@byFnQnURNZufZ;h1^m~xejfO>b+ z(WpyJt3qV*F53N^g!%e7>{h1gM-X?)=%0%rHFJ&M571YuMR00PCu!L? z=;XxqPkDN9_Sc$7_i$KDrNsr%M&X=gXl25F%sOy8-&w2sgt)}%sJp?oc1bCJ9e2=Y zJ*LTe43%y_&VJTStt(D73fGnaYL&>?%g5|7ZrG+!0s>TdA1ymfW-Ya_ed9wW%xJl(Z8#-xcNaRuJpwO7BlUCONw4$AXqjbS&C@$ z=d&nyXUTIB4X`AF7|4~Q;v3!oF10Fuen}G#;$5+iu6q}=~&7!Ml(#ljgG|O zYScUkk1dA1@7O?VmE7xp=8mO2HOos@#3*k-X}&1-t&}Y};3xpw4i&PU#<7uS; zceyp44+td)>7^@8!Yc=$ziQ%z&d?of2;@XNAbnU!*D$E-->>h7XZpgDKl^Opodr|s zhyl*?tIWxULibiehDlGrB7QBcRZ%8^lS!!V3{VSCsg&e`)f*&#=qp`!7BFy7tj^FX zhFBiU2N>n1@YS@wEk#}ISSq5M*o1MeYrDG!y`>k`Cbi?m_`^C5EnY}34>Q)AiTgNc zBS$fM@f1zqHam?>xT<|R?Z;(>qh5-d|g~JE1Ckp7-So zQ#cT%M(S_x`jJ>{o}9UMl6z)rq|qD^!Gb?yd)&7AH|ZPTj(mffi==y~O- zdO$H#dl9Bd}@*ss{MF7DzUp@}2OUy9*LPyAxT8KAfRoL5bD{z2Ut z!Qz7?o2wVlnhMfOQh6+H3$zyFJ6&R095QqhjEYqk-2 z4-KL}mE?60_?ng4GoSdARaQ=FC}^_BAj_q9_C&^vIH`?!XmvZd1UUaMG6QtNd2O}a zATOO2E*_F{I+u0Lcw7hs0@SK+6QcZL{(+@-TveWgGtnba!HJ0Lbi(f{yCdjZCA^vz?b3$ zWZBm6?Dohj{QYy>vSYbixq(-a?%==b5oj2~t_1GmGc09JCocil-kTu=g!WqNaZHls z;LuLBi{TJ&==1`?0O=1z&*}0Dw6c>!O@+PJy{k1Y9z_P1O4F+Le2+JEwbs)Pf@EN( zj4Vfc8wYZho%xnNdD1JPjEY{Ctbysz_RFpb@A>? z0$kknc*KSYR)CP%|@{I+`LjhWdrT1+ZI=n|rYJo94R2Fe>G_tVUy zkYSyl^kNI~ko+V(00tiP-8p zDCgI~Zkt+Sv%f(i636yIc$df(^g1(~2BrF-fSRXdH(*xdh!Ex>&(+@cDJ$Q7*_7{C zksp7kk{+9^`T@;FM>CX*to76XHQF?gY$OXUHr>nJ45%v*+R_J0g=c`^Eop#adxLRyz$}gs>59FEl!16~mQVYjfD)@(paHpJM6k(m z%@<@IXY!bY_-mW@f(z`rO>o2vk=v01Sm5Ag%}vjD+R-2?K6iuRL-VAWnH0N%Ir#iE za!RXop?fHOs-7ded&6iXS-OV(*4;5C9T=*|ms5_!-&5-l2q&VElt^6>CY6=82H?7% z*ocg_KH4@%a;HL>MU`8ruB9*GG@^})oUSyM6tq29O(kcq99GSYJ!rKFJ&KQRm$A;7`s%e9s z4V_2(D)YRN@#%~8J)XkJBkW{n0l4La?YvgiuKv(ZspjKQT0w~_ZO}a3a($E3vx*Kh zBbK?SF3gEbFzFhFPeqs;nEoq21D2{X8xLT7{7az}hy3~av%HO^AafMKN7)D77~GTb zFw>rrXK-7BM^^I1!DGD)cmZ8}@N%i;Y-Xl}bTtDP~7<%Sl2xF{LAH#1ey9xxV=%)H) zg{qOcH$h@($LNt2@d?uK1rZ)CK9oAhEe6dO!V=r%&z()k>9CPUv8-sDuym zlHAviFz9^qv@`0{ZjScX{H+i|ovnB=sHln_J6QvAG!g|{=vZ-F05|AoZq@|EKBjd>gUC?@;tk{_5Qlr=0|Fr}AaRizi<*PpQCnBe zs|EO9Nc}w>0Yxlu@k&+&W-%u~R}OJ$iJo&3C2Ftqyai5>L69%1j`>N|G&@G70Tm-< zCj;Wz`lnjCv7-*U<>tOC@-b`k0A~E z;}ydoLnGJ7t=xzeuOpFtI3cImoiSdgNhk;1>l);)dRdPb$S7Vx#`Zvi8@tr555wgV zfN{ShV5x22IJbQKNP$T9$cbZH(7DS6r`Tbx8O+e zP{v&+H#qT1q$#5#trSCcpmi}KxY?x76ldy`_XcVjrh=2l`2Ug3WfkesudG|%JqjOk zGOwXI-E5XMQ3={o6_#8kjPf3JI?By)c{6Fpt5iU(X)2zBlD)Q4IBzsWO_RvTh_-Oh zjy=GR&wXvO25kg6&bZq6+?b^+@Y)$AdBn)Q{+mXiY5h78szk%JWT>B;YelAO-7+3C zzfUjm@gEx2py+krAD@*s{9DE`CY6l=_eN|RS0r^C!}hTCWwkkb(SZDLl*tT_h?%o= zneAN0b!n@?^u4ZcV1OSVi;}-+vLzNSQIMl`1wAPQ*zq~D4nrLY3`4>ty)>YDe?wbZ zU~^(FzJr3dzK%?^InAL_SfL;Av>zFG%{PU96oEIM8JV@LjxFDlVwj1&k5r8(W)!M= z;yXrW`Rz!96rxNh+Pdd^HR)rV#K*OU&N2Mz_z$(&s6IFRvJcpFwyUYc@r#IM>w^gX8|MryY)p%Lt zX~DCqg8si!G?1wSCW}mtk7$-!EDa15rDr|)|+jcRNfliAIsU2HJA;R*}Q?OLr zvhqH!;hJAa-BJOOEiU?@*sdXL5&#b|)|d{iM07Zl^*Tk2Qrax0%OAmjG$Og;%~XDx zW{{rBxyPbE7hnm*1n#PZA3BVUJlaUzc{Fl|hg=x}3?K)7g(1$UmG@Sf3_(|r!NL8y zi3aBeI2oX6pe9a|XxeJfT#QW63mfb1rLWbLP1c^%7xYrEAA+X=a*Dx*R@s*mGGU?l zb`VX`I5B(AlyA&fy{|1B8{1#_P3c5rKg4e&71jqPMpRr}5A>jT>kPm%m*JC*@4;^V zC+#GKRC36@!s0<8?CgC-!#+;34N>WV`{^Ii>2d2j>^Dy%eIejN*hn2+s6&a6=tO4UE_DsTDy%i;{iL=Q^&12Dx>{;86o&KGQk!= ze*xySjIGDZ8o@|badz7rn+M#4TwW^xu$AMK>BV&0sErX~;)a6*nX<1|7oGjBH4|oW zh6kdP1l-r)3Y*3rblCGa^XQsr7Gg91B3l=imka6Yrz_C$Z{={)#ZL>QqWOU@S^Hy* zHUia;+Zgo1j4+WBXMGLerdQ%PTfNXmTl2FVUQ4B4jyJu-rE4GE?^2%W?DW1&9TwEO z5ytC8DjnJr8hIM&v9G3>w(75|vF+GhF~Gedwc|F@lC)5*13umNUgY9sk$zy}~OA0s8S(W7vLO z*+~0cLbgWF%AFeb|Z|eY4$Y8Q99&&+A_C!+@78hU9?rX~v zOcLP%dO_}6p$~+O^F|M>)q(cLpax1NQ`EXLYivHRw|4*YH9#YFk;lld8+4Nj0D$@b z&K>!$4fwxBN1DIy0oakgf3@re6+kU;2vQQ7*8bL)ftf`cvV|5QpZ>N?oL0sp6-rUHz-{? z2p>;xERf%G>c?)h?_UU`AtYS0dg(NXfCno0PK}h}5rH~w+OH!ky^0QfFWkw7HaBDl z3YM2b>U%IcPBJ=Ap4R;dxyu-#S}|f~Xb`FEcRabtEKD;6h8MG(ze9|8ea4`^b)b>P z5L=*XSVIH(Kg)crJg@ffx29Q+tqIWV9?+qDc=))xd|5fMd#Ag%qhsUy(zktdY=xDX z(nDjoYO`NMj7uZ8p($gT%42a>(eN*_KwS8cC)`GHbsRUIh?WNe}H# zb6SNRVTqpd+K)Wh)gUWO(@gLUDiKMTKUtvp%XpJ0xz9X1@V7k~Cz)oVraK+^1_O-b zmkjZ95#7#Z`^=S0Bm=7ocKoKEbAX?brL(Av#)lNS!teG-cQb_+FQMu$aWPbn`g}?p zKL+sc-lw?NeR?S=--;!F!+EjDau!KL2lR!*d|FXT7Nd)}BT<$u+n&K(B7BXTVq>*`tR39s?ZOJXLlI3v+PZZn z05hd3j-Qb@NCapbLj=|THA%VvHfsTiVa6TOuagsy(6 z#uj5|HvZyAq@CWCXwYg}hm{RNf4c4-y(fnP;Vb{djIfJ(;h8FKwLgZ9O~WL7;FXQ~mJkM|bI@+gLatPbQhK`YX3=!iEo>Z*J#qqTT_nP)mwDvYT>e zjv#e%^>9y1(FZcI*|B3nXMJyl$yx`KThhlyl7PAd;@>2GU`;hFW z`Mq2od(ZaxiQa)|GTE~$_`?!0)$E58;?U#y-FwOCFJno4Z|N)FE*R!*#QN;mT|*P| zTJNbcnm|6&kYM4GgEI^ok7`Ui!#2DW0J0=&#$=kl7I=A;z?d@SK+po2bHmsh9rK?i zt66RF+S5r_IT?46xO zzF~1m2r-8(D-`tESs#+Q$#tB=%}i(`U+Bh$*G?NUZ4ED?Qg} zt1Uhfw#KGPslpW#?xfM*U`~(Ef`_^}S9%&o`VphF4SDO&4-B-p}N5`R<24EAhIsNp`p& z;od}uYlmku$WyiEP&KCDfh+9$!+D|TT}^1K?x^>x3?*V0HR)?HjbwLvV?nzo-BqHTrO6CbWvjsH7Ix$U7BiBl>0+AH{ zVgY?p7(4S^sN$}{4I3N8G~+}XvP`I@IerytBdoKcV5WCy1PPdwK+b##J10ONI>al% zKKIi^(~wJhN|{X5Xa)qw0)ym0nhZf{1^x@dnSlsmiv%9@y2f&r$`@XEpF~m z+;Hx2-|%8he{(A_{pWRmE+$MIUQv|$b*I)c8%2l&=o&Nzy><>fTi4*(vKw52sy=pE z8|tU7mFFCXuC|dAS;#@*%>G{SHE_yp8|oCL#)%?GTem9kgbD#fM#mJb*p*ay)wCyh ze#jGvLs+QQbE15GK`It9Pu9xb6byqcK+dFc2J`TM>g%FqjbIAd0Bh5z^VhNfcw~sx zphkU~$mLb|OIx1${C1(Mo4u*dX9I6W2LXK-IIm^TxJm`*&Pcm#>;;)RC6Z z&{4Ilt`fj;FMIc1p9W6Nhzm2Y7f<)6`C-j0BRlw$G8`B7m-Ck~gx2of9jD%MWMWJ{ zbS5Zr6nzPT2P)%{Wi|-9b+DWrlP95_OJktkDp{*}j`o@$+JUpDk4u@woOxXW_Fq9V z4qHK#XyUx>d^yN_@5`t{-0j(v96c;3Ei|A@MxK7XMF${*W8=;K$_*db5r`cJRXr{T z-{bla4)H?F)^$Br>5mosJ;J(#dt?se`q^qD9ddgD<_HuG@d!}IBS zd75iIVz>%4H&bb1bnZ6C6l!ubkz2wS*?bkSS*5{%V^tGlBgnjIWw65&v%IFE2CLOD z9FJ3$uf3JQRnZ{M1=*vY~ynAzR*Oj5Wu`wc$yYb~&5$>tjMIIH_98N;nWk9P?YBqK;Vmt9XXK8v5i0 zA}iTaFIZ=?J_XfG4`9-7Oy-G#ICpZ|@Pv`D>4ZeRmTHHiN~aN^5--Na9b?^To>>-3mJq)bw0Vqq~y|Q`ka*c9J{e$#fqg)<%+WUo}`UZCq68vqF)wn?dbh|=-EdF zlY0B23AwRj@bZn^^L?ZV(PVu6@r>`I`1#Taxw&EdT-i2Rb?|7$eHfzHaj`@nanZz( zzU3m7HEA!1Vi`HbR<@Jg=ipLUOwsmCOwjelC5_*QIQB_-gr<7(%fr5&>!=RJhzdaj z(kL{&%P4dIL8JQy{+|cq9yCXNQFs7=F1`P=0Q5gMQ~yH%s{L!YVn_Pf;qL)nf!0Rq zjV-#m+HY`%vrVx5mns%t*3rU_1Eg7CWMiyAH80`V<@1ucCsbfPW>-3vFK_`a0ynld zX%~{ku;bP*p6#Yt4qlzdwt!->^&wgdbyig8R;0iLuAtM6@Jcb`IQk$6c zAst5Fz2?5Kyp+EcCn0IbX`Jl=5Lk|!JCZQepd_|G)zx)8fxk3cNZ(CD5y|OHh)+Zc z7B$8h4-eUxbeU-VA-Fh3VDcr~wPZQa)2S=PqvY*!uBKik-b};g!R^-Tx>ssIq*E}8 zuA|AvU(;2F_zL}D%(c%u6l`gbT1^kPS{nKNtV*6S8&h28hnpU=x(s*bB<^Sz>a}ch zN0(0_T@N~m340faxt6tA`BOyU?XFMBC$}ORgIklT;6djdY7HY50O`k9s6Rx z1+PSC;9!#7cR}6&9L!ppAE&{0qJb`YeP3_UCWt%8VnMdp18QRxG51$|Ar$Rg>uWcV zR^`A_$Vz13?2<+XUIXPyhjDkB5bb2?zJ}T+ozWD+^R`~x*~=JEO7XZ*mW?0VVbIXnY z*Jt;Fe?QDx~O4rD*1_SYU{xt(C@3a_*SHjKY+^bdw>Cl%LOMGm~Ye3Wf7m<}$N zXKdc~EMCqdaGbkn&y=woos!fwb3yFk0qcD9?dh;Lc8iBZNtOruQap|cPn(fZd+9ti z3|ONaA*cYoqNl<6Vp7d*c`H@A;9Fz{LnxZ6&@DA3oBwqdmZqp8dJjhoC8|mpo@a=tEADkH^a+ z8J7uEgn!&!IO(Q3D-bvMYb!F=2~=WQJV0L#2{4}uW>+Q&iiiKzL5+KKm*rRDf(J;~ zFwRrchKK9~)=*jM@7bmkBthH;dy57+P(efk0~INqO9^}e4#C&aDIOtdLCwp()rktO z5s{78<3V=CCjggl&K}6q+*+~80FL4+Bl1JM00t~62k%1&U&jJ>$iqo$%;N%96@8>L z{W$0-TJk>^3p6$ic+DXeglXr7}S9b z_uzJ3c=Q;RNK55-O_5|fT%a40l|tK`;fe7evAJ`5(-?3BHEFct6;?GtvYz^|F_kD- zjI;m*tpxt8kI@gO37J=^Hh zhrvo}jzU%a5YcNYQRY+#X+b*yAIpShBikR5g^+dHsB|OQXOv}&c<09o4XZQk{O5Di zk)lvNMZ zRr5U-d$z!)`d$jgrI(^xedF8e6?5hRRRA}MJUe#u@(hS1>nd_7_N$1 z-zGfmToPPoWqo^PuOEMNAK`k~j8}P2@<~2h!PgC$6B zAr=jVuv0CCV_BxDRZo{KZ?Zz*=8#5+zXs1YKJ~1Ix4=_TbV9G0UXz_*xtT#swWhqG zO~)zD(1PO)oFQr(SO|j_MX85%-LJJm(GMyrE$50k1c@oX@!||hh zE=1(~)P$i?H;|ReE44FG+wl-S-fD;m`I?eet))h36#30;@m_tT1quxP;I-O8Bh~CopILn zt((P$;W4D{7HpMzA%Xy6m0G;al*%wqjHkmHqddY_6S7tU`!9xqAR17rov zjaf)a%@OB_Jplxl7Z$K9!ER>qn3#-LW))$!BLEOPo%$md^4yz97YGYUYmg~ z`?n_xH1)`lverOR1OrVtvS#L5nbjR`g{))T$AX8cTZy)E(93@D7Y=kIZjLNAA}S?C zB5n!XErKhrkQoWqVW0@AnRV1JqK}Z5q05 zjs|5&N=!`G_1M`vu@tMVUK4?Br?458dWe>#68yQ;80~m+-^D&5o0sq2uws+Ga;yBnNLat=;} zuY;dOda}T4GRiY(5h$}x^Kr2mmX9fP`_9E3GmNoJf3N7lyfXgh&0xW;%eKq2>g;`LH+NG%x5 zkpbR*K5=rzDdbhK0y#bwi(3^u2mY%#Zn)GcR~#=XZX7`; zB#EsYF{ypvoRK`-H?|ihDJ6Rv+2kR(f1!aKJ~RJMol2kl)(<$XjBxQXiMy6ZK|#a<8lC`C zMe{rWlOt?OtGS$p>tRRjgL0u2<3n^}f?F4f^m9@}x~Yg1wSOWYN1G!JQ~ZdvY4t&G zZrdi-GNSK+8ji8{$Ov6B!)~kcd%EE!TWN`n-3~S70W%s;A#xUr}-zlk}oJ zOb>Z@`}G3L{)Qs@Yzp@K#CC1TE72{kHItG_MLXh@Nro3-) z+TWi}Iq^!o#V9tY;~BseWJWyi2&Ky)XPP~4Mr;!)*vLf0#!?DZ-P4d&6Njoy?1n?? zx9N9?&Q$h+>NcqfRrtY;J1_pzEajb&{#3m;Vo`Z{+QgS7V|v33miZa1jI~{YL`@Y*KvK zak9c-w=%P0M8ZZ(f`y5WIY=Ol*j_w`XRK4S4mnAoyi`+Rd}`$}{y zRBeS-hl>9`W&gFH=eXLdc7og7EB?bvO@No8qgaYP?kQbd)Z4F6+`8YeDc-TA`f|}a zTj;1>?DIcyH7LjYY~hmX+0uA7cTJIH$TC6O#(HH8w4re^#6+vd#=^Zn1iX_34a!>8 zLU~r~l()QWaOzB`#|Eb;4EUV9bMfw+{mph(bWExr6Cq{0cz-%1ED{F|1*}0 zSyDVX!2$qy%KU#7M${ZEoc?=SrG4>BuR{8vCHNUg0rP-sSG_Om)8;G1uMBCcDy zcuK4%QbV(fsC1B^5TyGZR$T_dhbL%k$YiaC7)Whyt!<_6bh?ON`#L(=v%h|QF?=$! za|OTj;AQ3D1T0)T{Z6Y^&v0O4oCdI6J;A{kB8}rfhzt!%9lfsom}C>qbW53XXSUv~ z)CSqI`%KKTr2E;j0=HV~9=^7(S-<=D?f_g` zTwSKLCE|iQUmli*-t6q-ZZR_WtP&jHzvGBJn4*J6ieU;etG{BdqX$U24G`)fZ#a2t zh5+S+A!8G2gc>)vxURNZERPHjwge{!YKRj>Mvu}S2K|j0hTWho%THL>t~>ZBWXRVl!{4vE&+T(iq66WkBH0C%AA44 z&+utSW$b`9L?5_C-CvN}kN0c@*rKmeOoqXm&dV4LM zIx*jHd4xYQAibIKr9FjBCvU3~^uhnZ4k5QsIuk5nfH7i7<#u`DT1*#5g+!2Se+I7s z`DN;2m|P7UqqcFETtYN72y_UBhOEp z>HV9t?wQG!F7vtbZ{b76Ee6ftDkwz4c`dJ~DCO=3Nvv_J?!xE}Rt&kK=}ISRoN&eF zKBn&kNOh!EhY7@IMF66FLR*)P;_KYyzWYi%%A6>$*ayQhMP=F=L1jkw04HRg;w_HW z*aiK?9mnC_t&aUJ(@M3w7{->~aytIaaQkY1Xfo@U4?BL+YHnIesI{v+jqo*C&ANtv z1`khC%f*U>NC#70_YAs32`x;ejwq(KE_wAug*AQ#5Bev|F}zto?|Vn`qQfuL3fr+V zS{HjR$0IzfHkwEHqJ%c#^_tYrzE}PAZS^;a6Q8QSxCQkIBh=X5;bq?b0%EUz0kIvR zR4fO!`fS=7|CLa7@JC>uHll+xT`4*WHuraT-F0p^qOAd%d*3jD0S#bv)Q zf4}>>iU=w@Le^>8hKiF-TC78eDiCZN@ zhl#ET9i5aS=~fWxRpSLY6AloFae(c364s;_FPd1^J{F z6fv4uEnWuX%#we+u;5oI4My*vT8bcKC9_7EjoDZcq?j4dMySce7EUi(Gko&Lq=P1~ z{(+EQrc`zd#n1Pb6{btmG#P|J029d+2!9qV8kZMxD?pgs!~Sz)@`pxoAjpd2IxV;w zO(V0wp=eWsC|L5Nh$Rz9K#0VMQ1UQm7U*zr3%xwRUp2+18#IJ-?+<$82ZiD9GJ;a(DoF#%rX$bAwznl`8{v^ zl2YciCf!f-^@@H}i{!jfU$N*=7r+5fxKO#vX+g5zJ#3R`H4 zVeDQ0To%ulE^>m`Q-Xqmn}da+_2t3Q*6v@bH8cB~*hvix=n>(AwxTrZAGh}UTp!e^ zU`mrm4GdU0Hx7@Xz7#ebKG5hr`9%V^;}|8)J2x{7^P|YIB(zUkePu_rzQ~I_i1O>^#2e-?8zFe0`8cG`F77rJ<$kht?yx(tG3|5tJ{f}q7eF!e(ejh zrlT?Uljs622!Yplh`)f06)$lGa2Y(G!A8DC)hBcUCs+!qeN<`VSB3#YH+gkP) z+xfz8XV>8$0^(9s0J4Zlw$G7v)X-<;egUj>c)WX@W@hS$W~e3Oja8sN;kHwR!t0Jn zZVY-Z{ww+5jH7XOGBKHoX!AZFw0GmslKrXZ_j7VWVF>Zq3AkLmfzqdrzUs#4NrY0i z6I?I^M`T>~@oN64%tBc_M-{Lnp1vY_C5qM@Qya0095kfKvNb%QD0Ncvz(ZhTN)VkQ z%vl9!{zfCtr^m1W{G7E<%`RLpV;3q+G1}C09UhkjzmBO-_NzAUOSS2x1KpIdjggf- zCnfIDRyH>8pN_=x+FR6d!|&9HQwp)37r5IGLR+4sr!?5piU__Qux}G zjY6%zGRxLPJtNc~62nfh=++r8uYn__@21UIN@iV6sCtnNG9%CxtA^v^7D*ua5jP<) z)j6dVDoaZR?tTLZ*%@V`=7OcKA?Ny&E3hm>&{|FOA}~0726xpNI&-hGKrvOWCBEgB zLJdx3a^UZcL|QUBY%Y044a)HHO2o2-DyNDnNC`6h!29gyN=l(>UXPSMEEG` zDp{2|J$3v)%z!=4iqy6`1*X}dvx-o3^YGr&z{gex0r0JlVaUv%h&|1upSEd>#9aCJ9o_Kj`<}S#|BSX1jt4A8 zJ1ck8B*P`&*lA_LANj=8;(ED?7L|7v3CnSlXx5B#r=VpPuFF*n7I&=@%`0&(y^=+! z!rx~O6ihHjeRzDC*f@_$8tHYjCQ-S|$zv|7z~Kj3^@Lf;{9FV(_k9&55^fpLs>HED z5eW->lj&Ea>hT^&4lR>~zgFyD2j1eL-N`QY=r*o|IEs9|GE`dU!f#_sZOb9vTu5HR z2Y9`4|uRYCLlby#G z`Vl#K0IBoExIJ0NU^^{l;IoT=n~f9O71owJI`$5Ot5D@|RlCWv_{u)*8q&A2Q}J!I zzvrFH{|Qf1?zR=LZ-9J zeKoerUEQUv{A_o=P_bQqKPxv;AGK3=BQJq&P(>Ejqw_6Ca31fL&H^WO|dEe8PbTRQ}> zbhNW&{_9|8Wa8-fTkEHDFflc8FtIf%s;}eC|1S5tkR1t%!(WXJSA(gfw)PtIzFH@IPx^R!QlG-~$QKIm}>B~+t zmz2Z1heU&&x3B%APS@#~(V{j5{y+I2d(@Lw_7dpsS`xXp)? zKB5(t$iqr=mpb)&WU39Kto6x!jwsXj__3h)@-xxQIjmgHDan9edZyIP4X*swJzGgk`uGc-kUVmgJMue8b zQ!$6vfr~=)+t^1rT!+W~+tEqXH$<~7UqIrI9&_z`mN#mVTT48sREab2#6Tl0_`o|R zGzFwt%nNlq1Or4h5Jc#Lm|$_O(9r5aeAKZ`cw6yNw~>T7Tr-Dpb>sL`TevvH52Ur4 zB((I9%XXut4c5HCw+7I^)F4C71@xw#;6)3B)dRrycCeAYj#xmEHVCrZ1Nb2g zG>ZRx<}to~mg{V2Y_t|a_<-ZTo{LYti$=#8eK_FjQep8#;iVr!levLKbYm~bnd2iMm zqvQ!@krIaIg!#gA5N{}F{mEh%;Em;&8*Aa74))i?x$fz|2wLns)R;|UJM&euEPP$Y zI9Yr-vw?e zsH!Ew_J9FiZ%o@eV@dKqILz2&=OjzR$W>oVSn!@;UiQ=+R)ws7!B4;5QPvocgE&X5 zBF6v@5M+7zQQL4tZrvN(V}@+>&3QyN43f$zE z`~x^(3z($Qa1y{Yx9;PZ-(HR{eH(g0Z~jn?-%sB_gEVN_a9Pp^u88hhBT}=XT(va~AESrS{;lK}Kx5R@mz4Wp-VF8svmEto$v~lekM^yl`_$~Gx zRK8O=9v553VMupTU#0k08dA%+#vCU&8mRM0>4$K9IN2#?b}is$VrLY6eyZ58;uCWg zh_jnG@Gr>GG%M@3`@}7r69LlaS$QM_%I?8|`bH(8Az%}A{TQ#zWmp-Sh{W*@F)*MQ z6K?}40=)!)Q%P9;_X?tm|9Y~2Pi~TzX4~XJBHM^4DacIJQwkg~T(wIm#LMLM3r}lK z%*Y9;i<2=1 zc#M*)Ym$V6sGig@hCxV2Em4N(kNW-fN0Oew^8E+6!o#B-JFUY!!1P)L^5pii8abY5 zP6vk7|4Wg7qQ^mUxOCSUjD{v+Kif-2N={NGB5hWdm+EWkCEWI5=iwqOlsh@;n%IF> zYpmRa_C3Fpx@&37%I;n?h)gqwpT1Y58K_&Aiz`I3^=_s&qGm)Re6L z=J&+xr(%utJNrcb4WVs<%u_@FzLB7O2^x1=^(sx%IpK-tJyKh3X2&PtG`xK2+VYfzYwlsCsOn*_pbsF{!RD&G zZEyJB)XHtxc?7zuqVrYWe|<`ve>@g0@qDQ#pG+q%K5>nlcRNdWRacu74hEMD6R&4w}GSEC$4783oPK9Z_U?e)3e449$%R#E`2Dc1AQC^>TCC-~W)UBut2Qu2tckL;uHBn+hq#E2(0UEY3vrG+Z z)qRf*a-k!l8X$%+zzoQ@vv~DKvwbSLjcTkTeG5$K8W1rXCeQdI^f5uD9KM|CD0z+F zaC^y_+*A!}-%^8iV_Y7_1PoSy*~5^gWT~@IN`-{^SxuTFDHa*6+`Ex9U6JEzpqO+R z;^&?A?b?3(PdHkpvA`GkPkP2m$X89Z7L7-y(sKP$!evud7H1c{8H-)hpN;y9q=FXk z$7TnjYmh+8u2i6H&zYNK+r5F8fBiMN;Q%W>{BI4g#!~>G9R|L3-UB^(!%1{Y+O^RP zOGUNg=|J1bODiWOX-{);7TJ}>5Mv;?XQemw-HsCr#fvP?%>xUO^j?_5OxEe zb*45ZQ_O{~M>6PXnQu(dR}nB+r#c*sD-NysC+erZbf{=eO+773Xm2I9?!g8bHO}Xv zJ3388nAI>WT9mKZCg~TuHA&{qk9IBLbC1{)B(2@qYNCNo(3DeXX3 zxO==jgJ23pETb<@tUuv6QtDWD*St8rf3e)?V|jz+;DWH~JvfD!2-u1H~>B+uk>&SDnV;ryjJA=7x zmr^z2IAJ$WB)jY!WOAB@Y2j((tc5k*Y+53PHe^u82}{Jx?qId-?Alr^Cs=jUwQO=| z0qm2&Ww4RHEGGJj1BbOt} znVRk~3>t@(koJsu;6@)Wbr@-qhbTvX__#1^>Xrj`PJAuhu{Y9&12U-tv54G}-b8Qy zq0V@*2XgQR+ju+Bz0Prkz!5OOjoR!iUV(N{HEfxO=xYt90TBxJee*J>2X`KB{2KF$9GBut!dlfCd%AqX0?Jj$OJYj2?UEKc;? zetdqHlLRlCe2!Szwol^;^kFx#ZBYeBwO9+DciX%-mQY@PiHJAh-0!Kg^p0 zRJ9P)NI>$^;n@23cuHmZTL3BrK!4lEwPy2qXGj z;skQ0l)!CZ7>_w{8cD!J-0V)?n${bOd?G9b2PN(O0gck`8^<@A>q~kji?}bx@6=A< zRrRhkm_GrvWLPYpvZ2i297Ad4eDB9%31f{>IG_XBDZi=VJ|8?%@-_6nZ{J|2YEa&q z(%avCyiEVD0x}`%tO* zNr`O*q9tu&ShM3(K#l0gMT#l@D34jLEsU>R!DsWbY4YKHpwvqO|CGWFn#BY1X?n^& z@UR~^P$>r(`~N6=#~@vzU`@Ae+vaZDwr$(CZQHhO+ughE-L~!S=`#}(ch0$SPt5&M z_5G=+s4uJH&CHc6pA318!CG&ETpZLR=^io&xvi>{j0q8#$-LN{r2mpT* zwkx6k>!RCl!uFrH!fM%Vwj=q%|NZIjx)My?A)))SKWWIq?@Q~KGDliMA*uXyn)A&Bh*yp<01 z&#dMT2iH{um$9^~FAMb%;hR+C={7qWZxUm)ty>)TBG$O5v;xvRqSXpee2J(xA|+ad zDXhop%gY5gpVfp1#&$ybovBPErJ3V+dL<$YE^vvVUdoA-2JuijY-Wq-P|!}bj?m7c z53ALxyGGMvHtRc4`hMHvfqnJ8v;xhsWle~rSA)ndIZiw-t#{%W0ZM%xdQi@l z{7OLV2)&;SD!H{+8go{0Z=ck+mHC~Sv=N3OaB@=gZNFq|=Dp<&Y>}UywMXuJkD2iB zkht-ffcuUh@2aVK0f_*GMcz>KP`0cHQj#wi|xF+4VL6*q8mV(ACrYR|JuoVGVn zPn4A7zwaxfkIC&8Rsinsxr*d`9tPgBmwaZnF2tUj#aFP}vQbIu46%lcj83(CTAWp< zm_>`Ai~e)o?qy4Ib9kgz?EQ6KTQCD^RG8XordR29WE68*p^63H*+tswb(2QSCP9$> zYQR)Lc z9JG#ENwj*0X>VcYoS}H?Z3oYmOwBC&97o$T+1u_+IUtFFWU$siss&>$l3l@E5w-`Xhc9#0V-CJnrgvun+l%Rm zT>+{h%UQ}zKH}3>3^yQU4z$3oX9)I`U_zo=-{tn+9<7 zW!KpBBmrAX$T?v>5tS?9*<9D1NfX3RU8H<}A(QYSif)?1#PiM01>u4w*;$^Y$GMc| ze=}UL9voR(M$2Gx<~H|-#&O~dskQXE-E$kw`HsSmmTLWDLqe2FOmjEP(L^U3&hXv+ zORj}?eC0f!y88%}knFGN`0VTG%2>n+js|C2K@3pYqm-R-l!R#Wj~iAanmy%u-?xMz z@P`+vyWi#7x2)81yAxI(Zalf zy|DffuZK&0`@=dBMdGInEj03vyC;1ma$FeDJ4$It9$rE*fqd|w zD&}^K-JHe@8maK=5AS|&v~FE!4lXObFNJoa?g7nDB|lbVL&>J|J*|U` z2w3x7z<=j0gtVMEPJmR?AMrBQSy*RL7}|W_MTg1#zyYST@fv(9VkG#uk3`|xavP^@Y#=xt#AW~N7IG5U7jyP$f z@mQv|F@A$C;1K7~(_Xtk!7zxy1d7#1X9Bz+Q#*S&dz3jPOh&?m2QYWBD@{IQv7kr0 zvK{ob%Aig}EwSE+^{LAF5PEbk*bz`32TUnLOi&(Oy|CUv9AKKvQhvq+@+mnd20u{U z-sSze(`^B5Mh2bQ5Y9#{0J1_-*OYSVaQUjrRgiLQdEi=vs;;!NbzW+EoIO!h9RA!; zxFr@#MA6QTqjGV{iL<76iO9YxONZ^Ya9rr|is%TxT--Z${%82+{Y!6hDdAd`>I;UD z+w`WJj#5!f$F|AaMZyD|L&0qVG-APsrD(h$K>Eif+na}xW8&dUN&SSkER^>%n!dHU z>iJD;eGxCV?p%}f`k^iR?DUrHvPgJD5*=Larb~eMg(RZbKY$O=N}L%(m#~YH+$-GS zw)GHyG6W47G~@_v0q=vM7^aGpNsk`^B?T;VHY0`4x-mF6i0KQ85DoPiVNiuG>yIoo zH*IruWpr}TFJFbQv}9aPnqYi3^^;;psZ#-xCAW1LQic^ud6Rs+(_BGn12~BX4_K(j z%>~eE#O+qhiQj3jMD*<6|B}ZADBH2{RGXvu5V9A|E5YJdDWvi1rS`UaRgut1D*utN zTOimihyNB$1gRe~$f1e3Hhgv~q{^f^VThX$K8&dutltG&EW?&@P*R=LNUhc%7;I$B zNH;Z6PQ3R@R1BAhozAWs|53?%cQZeJjnRHqtzGDbT8sA?fppeo>8U3pMgye)@~)9! zM`93?{M1cCDLC8xLRioy@PP2Zs0dSXL-?}jXRFn>Ap@&;b7()bu~FqoFk3{1H&WQQ z!JEEj)BfgyJxgNA$j_S!HJM#8VTeKb+K4ey=tP*_)=g?aa=rGC;$nsC9}NQ4qQriP zY;t&Iz;oa&J?X{>2ADKhcbQ85N54ia^d}6ry+w?uU~pi`r;THW7#XYb)2u`A&)jiU zjVY6uZQ;iGWX;&N?#H3?(6VaVnX-;GOO~1JL~IaMcgjL4gh^vmWB~k5i3m5lx564% zy~>CHhC*&rfOkLw`~KwqcVH$y$3Tltx!~lRG9Qt!khm-t?PC2^ePf>p!AzLSmwJ9e zz_R`82N&X>G;3vbDF-TAJ-Y0Sy_gi}G#STU2vy$Y<>d+)EPewgyHSYgZng2mls>e~ z{>M>N?AfP6Z#3K zufNbJd;2j76y<^n{Tz*XtD@(#NV6&GrNciQ&@T7N8>dY53(Ha7Al7uI!Gn335RT}g z?YMCBs*B@7GqxY*Tv~&~Eqo+Cu2FZXiHI>be=W~yD6@$JeA11k`b*}Pf*UAS9Y=Vc zMBFX3nlBNzKo|B)9Q5>}kY?`^v`fItWa4(u9i}{7k}o`pEJVUlpmVc?CENr|+h9mI zB22BSm+Rk5%QfWxiI|I<&I*o`u!!Coc-Q8|gR|ve<#00-Glkw^iGJqBucq7Yv$+er z9=;XF&jcTQ;Uihe`MP(t_CLGgh%HcEVZHeyjQM>=+ zXELxtITt&dc>b^<5!%U6c~b){q^h<<3M}RCqXmc|QBnUG71!zx0f+~_2-p!eLk zwPG~-5?+qttf69gQ+$eL;aecWvq(%k3}VUn z9S~wT194c4!0-SFQNjc$d2Ymv#33cfn|bdW^f@a|P-r9K9f=6FPsO6JRjVIhRfyhU z|Ka7IsFlniMjs2>PNZGz6tD=@WQhwl&C6R!BasJY&zCcif;{Z}VVYFlw8?)lI6HaY zokqu`rNTO#p)IFXK08-{A0a0xhy_7>q@V0lf5lZQy>2307Qcvyc!nm~G_LPtUX%}B zKM^E4$5kAh%Gr`AAw6ak>Vx#ypMACfv&Pd5FT5Z}cZmr{8AM|P5eLlULMTn1_*<<$ zV)D-bjTc%E7MO&_b85!&taSZh)xeu{MVh)ZX5+9SG*6H}lQn|u?8Piy*e*}$AdLx(IZJ*F%cXwB~+Qm-QTg31)D56I}Dq3N`JM<6w`7h0dVtkw^PCx(vg%AJ$EdO^EFna?dD+4nV8dFCD85+v9KxL#9Pq5$j z;`O#QJjihY6L>XS3+cLT03X`f@p=J7h*~(A@?Vf$qa>@nOa(45u0YZ>rj(+%dWMXT zSb5NrRI5tq>1<}=DBYvuoNqdeB-1Eu$Gu2z?(@ByrG|d@W-&H`OEt+&|0Ax>`3x!d zkO^t#pz)DZrp-8Ggi*5>L!*%`V&8kHSisHx9JBqt+1U%w4T+BPzK*noZC`7*ji!s> zEM%`0+cm!+NZuXue90CP{ty-@za7}ompMhfFB#$Ny*FQoCcspSS!_M(gH(hJq>yTv zYng{(I^{t9LiUmq?hKVk&a2>=W6!dujr{k5gNVg%m02;eU-(`vZ;f@Ns

!Lwk{2 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 + + +json4processing + + + + + + + + + + + + + + +

+ + \ No newline at end of file diff --git a/distribution/json4processing-0.1.4/reference/allclasses-frame.html b/distribution/json4processing-0.1.4/reference/allclasses-frame.html new file mode 100644 index 000000000..a8a527abe --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/allclasses-frame.html @@ -0,0 +1,32 @@ + + + + + +All Classes (Javadocs: json4processing) + + + + +

All Classes

+ + + diff --git a/distribution/json4processing-0.1.4/reference/allclasses-noframe.html b/distribution/json4processing-0.1.4/reference/allclasses-noframe.html new file mode 100644 index 000000000..25363b7d2 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/allclasses-noframe.html @@ -0,0 +1,32 @@ + + + + + +All Classes (Javadocs: json4processing) + + + + +

All Classes

+ + + diff --git a/distribution/json4processing-0.1.4/reference/constant-values.html b/distribution/json4processing-0.1.4/reference/constant-values.html new file mode 100644 index 000000000..047c4c984 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/constant-values.html @@ -0,0 +1,141 @@ + + + + + +Constant Field Values (Javadocs: json4processing) + + + + + + + + + + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.json.*

+
    +
  • + + + + + + + + + + + + + + +
    org.json.HTTP 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringCRLF"\r\n"
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/deprecated-list.html b/distribution/json4processing-0.1.4/reference/deprecated-list.html new file mode 100644 index 000000000..aae938f36 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/deprecated-list.html @@ -0,0 +1,112 @@ + + + + + +Deprecated List (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/help-doc.html b/distribution/json4processing-0.1.4/reference/help-doc.html new file mode 100644 index 000000000..44693123d --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/help-doc.html @@ -0,0 +1,209 @@ + + + + + +API Help (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/index-all.html b/distribution/json4processing-0.1.4/reference/index-all.html new file mode 100644 index 000000000..805159f7d --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/index-all.html @@ -0,0 +1,1134 @@ + + + + + +Index (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
A B C D E G H I J K L M N O P Q R S T U V W X  + + +

A

+
+
accumulate(String, Object) - Method in class org.json.JSONObject
+
+
Accumulate values under a key.
+
+
AMP - Static variable in class org.json.XML
+
+
The Character '&'.
+
+
APOS - Static variable in class org.json.XML
+
+
The Character '''.
+
+
append(String, Object) - Method in class org.json.JSONObject
+
+
Append values to the array under a key.
+
+
array() - Method in class org.json.JSONWriter
+
+
Begin appending a new array.
+
+
+ + + +

B

+
+
back() - Method in class org.json.JSONTokener
+
+
Back up one character.
+
+
BANG - Static variable in class org.json.XML
+
+
The Character '!'.
+
+
+ + + +

C

+
+
CDL - Class in org.json
+
+
This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
+
+
CDL() - Constructor for class org.json.CDL
+
 
+
Cookie - Class in org.json
+
+
Convert a web browser cookie specification to a JSONObject and back.
+
+
Cookie() - Constructor for class org.json.Cookie
+
 
+
CookieList - Class in org.json
+
+
Convert a web browser cookie list string to a JSONObject and back.
+
+
CookieList() - Constructor for class org.json.CookieList
+
 
+
CRLF - Static variable in class org.json.HTTP
+
+
Carriage return/line feed.
+
+
+ + + +

D

+
+
dehexchar(char) - Static method in class org.json.JSONTokener
+
+
Get the hex value of a character (base16).
+
+
doubleToString(double) - Static method in class org.json.JSONObject
+
+
Produce a string from a double.
+
+
+ + + +

E

+
+
end() - Method in class org.json.JSONTokener
+
 
+
endArray() - Method in class org.json.JSONWriter
+
+
End an array.
+
+
endObject() - Method in class org.json.JSONWriter
+
+
End an object.
+
+
entity - Static variable in class org.json.XMLTokener
+
+
The table of entity values.
+
+
EQ - Static variable in class org.json.XML
+
+
The Character '='.
+
+
escape(String) - Static method in class org.json.Cookie
+
+
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
+
+
escape(String) - Static method in class org.json.XML
+
+
Replace special characters with XML escapes:
+
+
+ + + +

G

+
+
get(int) - Method in class org.json.JSONArray
+
+
Get the object value associated with an index.
+
+
get(String) - Method in class org.json.JSONObject
+
+
Get the value object associated with a key.
+
+
getBoolean(int) - Method in class org.json.JSONArray
+
+
Get the boolean value associated with an index.
+
+
getBoolean(String) - Method in class org.json.JSONObject
+
+
Get the boolean value associated with a key.
+
+
getCause() - Method in exception org.json.JSONException
+
 
+
getDouble(int) - Method in class org.json.JSONArray
+
+
Get the double value associated with an index.
+
+
getDouble(String) - Method in class org.json.JSONObject
+
+
Get the double value associated with a key.
+
+
getInt(int) - Method in class org.json.JSONArray
+
+
Get the int value associated with an index.
+
+
getInt(String) - Method in class org.json.JSONObject
+
+
Get the int value associated with a key.
+
+
getJSONArray(int) - Method in class org.json.JSONArray
+
+
Get the JSONArray associated with an index.
+
+
getJSONArray(String) - Method in class org.json.JSONObject
+
+
Get the JSONArray value associated with a key.
+
+
getJSONObject(int) - Method in class org.json.JSONArray
+
+
Get the JSONObject associated with an index.
+
+
getJSONObject(String) - Method in class org.json.JSONObject
+
+
Get the JSONObject value associated with a key.
+
+
getLong(int) - Method in class org.json.JSONArray
+
+
Get the long value associated with an index.
+
+
getLong(String) - Method in class org.json.JSONObject
+
+
Get the long value associated with a key.
+
+
getNames(JSONObject) - Static method in class org.json.JSONObject
+
+
Get an array of field names from a JSONObject.
+
+
getNames(Object) - Static method in class org.json.JSONObject
+
+
Get an array of field names from an Object.
+
+
getString(int) - Method in class org.json.JSONArray
+
+
Get the string associated with an index.
+
+
getString(String) - Method in class org.json.JSONObject
+
+
Get the string associated with a key.
+
+
GT - Static variable in class org.json.XML
+
+
The Character '>'.
+
+
+ + + +

H

+
+
has(String) - Method in class org.json.JSONObject
+
+
Determine if the JSONObject contains a specific key.
+
+
HTTP - Class in org.json
+
+
Convert an HTTP header to a JSONObject and back.
+
+
HTTP() - Constructor for class org.json.HTTP
+
 
+
HTTPTokener - Class in org.json
+
+
The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
+
+
HTTPTokener(String) - Constructor for class org.json.HTTPTokener
+
+
Construct an HTTPTokener from a string.
+
+
+ + + +

I

+
+
increment(String) - Method in class org.json.JSONObject
+
+
Increment a property of a JSONObject.
+
+
isNull(int) - Method in class org.json.JSONArray
+
+
Determine if the value is null.
+
+
isNull(String) - Method in class org.json.JSONObject
+
+
Determine if the value associated with the key is null or if there is no + value.
+
+
+ + + +

J

+
+
join(String) - Method in class org.json.JSONArray
+
+
Make a string from the contents of this JSONArray.
+
+
JSONArray - Class in org.json
+
+
A JSONArray is an ordered sequence of values.
+
+
JSONArray() - Constructor for class org.json.JSONArray
+
+
Construct an empty JSONArray.
+
+
JSONArray(JSONTokener) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from a JSONTokener.
+
+
JSONArray(String) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from a source JSON text.
+
+
JSONArray(Collection) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from a Collection.
+
+
JSONArray(Object) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from an array
+
+
JSONException - Exception in org.json
+
+
The JSONException is thrown by the JSON.org classes when things are amiss.
+
+
JSONException(String) - Constructor for exception org.json.JSONException
+
+
Constructs a JSONException with an explanatory message.
+
+
JSONException(Throwable) - Constructor for exception org.json.JSONException
+
 
+
JSONML - Class in org.json
+
+
This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
+
+
JSONML() - Constructor for class org.json.JSONML
+
 
+
JSONObject - Class in org.json
+
+
A JSONObject is an unordered collection of name/value pairs.
+
+
JSONObject() - Constructor for class org.json.JSONObject
+
+
Construct an empty JSONObject.
+
+
JSONObject(JSONObject, String[]) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a subset of another JSONObject.
+
+
JSONObject(JSONTokener) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a JSONTokener.
+
+
JSONObject(Map) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a Map.
+
+
JSONObject(Object) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from an Object using bean getters.
+
+
JSONObject(Object, String[]) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from an Object, using reflection to find the + public members.
+
+
JSONObject(String) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a source JSON text string.
+
+
JSONObject(String, Locale) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a ResourceBundle.
+
+
JSONString - Interface in org.json
+
+
The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
+
+
JSONStringer - Class in org.json
+
+
JSONStringer provides a quick and convenient way of producing JSON text.
+
+
JSONStringer() - Constructor for class org.json.JSONStringer
+
+
Make a fresh JSONStringer.
+
+
JSONTokener - Class in org.json
+
+
A JSONTokener takes a source string and extracts characters and tokens from + it.
+
+
JSONTokener(Reader) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from a Reader.
+
+
JSONTokener(InputStream) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from an InputStream.
+
+
JSONTokener(String) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from a string.
+
+
JSONWriter - Class in org.json
+
+
JSONWriter provides a quick and convenient way of producing JSON text.
+
+
JSONWriter(Writer) - Constructor for class org.json.JSONWriter
+
+
Make a fresh JSONWriter.
+
+
+ + + +

K

+
+
key(String) - Method in class org.json.JSONWriter
+
+
Append a key.
+
+
keys() - Method in class org.json.JSONObject
+
+
Get an enumeration of the keys of the JSONObject.
+
+
+ + + +

L

+
+
length() - Method in class org.json.JSONArray
+
+
Get the number of elements in the JSONArray, included nulls.
+
+
length() - Method in class org.json.JSONObject
+
+
Get the number of keys stored in the JSONObject.
+
+
LT - Static variable in class org.json.XML
+
+
The Character '<'.
+
+
+ + + +

M

+
+
more() - Method in class org.json.JSONTokener
+
+
Determine if the source string still contains characters that next() + can consume.
+
+
+ + + +

N

+
+
names() - Method in class org.json.JSONObject
+
+
Produce a JSONArray containing the names of the elements of this + JSONObject.
+
+
next() - Method in class org.json.JSONTokener
+
+
Get the next character in the source string.
+
+
next(char) - Method in class org.json.JSONTokener
+
+
Consume the next character, and check that it matches a specified + character.
+
+
next(int) - Method in class org.json.JSONTokener
+
+
Get the next n characters.
+
+
nextCDATA() - Method in class org.json.XMLTokener
+
+
Get the text in the CDATA block.
+
+
nextClean() - Method in class org.json.JSONTokener
+
+
Get the next char in the string, skipping whitespace.
+
+
nextContent() - Method in class org.json.XMLTokener
+
+
Get the next XML outer token, trimming whitespace.
+
+
nextEntity(char) - Method in class org.json.XMLTokener
+
+
Return the next entity.
+
+
nextMeta() - Method in class org.json.XMLTokener
+
+
Returns the next XML meta token.
+
+
nextString(char) - Method in class org.json.JSONTokener
+
+
Return the characters up to the next close quote character.
+
+
nextTo(char) - Method in class org.json.JSONTokener
+
+
Get the text up but not including the specified character or the + end of line, whichever comes first.
+
+
nextTo(String) - Method in class org.json.JSONTokener
+
+
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
+
+
nextToken() - Method in class org.json.HTTPTokener
+
+
Get the next token or string.
+
+
nextToken() - Method in class org.json.XMLTokener
+
+
Get the next XML Token.
+
+
nextValue() - Method in class org.json.JSONTokener
+
+
Get the next value.
+
+
noSpace(String) - Static method in class org.json.XML
+
+
Throw an exception if the string contains whitespace.
+
+
NULL - Static variable in class org.json.JSONObject
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+
+
numberToString(Number) - Static method in class org.json.JSONObject
+
+
Produce a string from a Number.
+
+
+ + + +

O

+
+
object() - Method in class org.json.JSONWriter
+
+
Begin appending a new object.
+
+
opt(int) - Method in class org.json.JSONArray
+
+
Get the optional object value associated with an index.
+
+
opt(String) - Method in class org.json.JSONObject
+
+
Get an optional value associated with a key.
+
+
optBoolean(int) - Method in class org.json.JSONArray
+
+
Get the optional boolean value associated with an index.
+
+
optBoolean(int, boolean) - Method in class org.json.JSONArray
+
+
Get the optional boolean value associated with an index.
+
+
optBoolean(String) - Method in class org.json.JSONObject
+
+
Get an optional boolean associated with a key.
+
+
optBoolean(String, boolean) - Method in class org.json.JSONObject
+
+
Get an optional boolean associated with a key.
+
+
optDouble(int) - Method in class org.json.JSONArray
+
+
Get the optional double value associated with an index.
+
+
optDouble(int, double) - Method in class org.json.JSONArray
+
+
Get the optional double value associated with an index.
+
+
optDouble(String) - Method in class org.json.JSONObject
+
+
Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
+
+
optDouble(String, double) - Method in class org.json.JSONObject
+
+
Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
+
+
optInt(int) - Method in class org.json.JSONArray
+
+
Get the optional int value associated with an index.
+
+
optInt(int, int) - Method in class org.json.JSONArray
+
+
Get the optional int value associated with an index.
+
+
optInt(String) - Method in class org.json.JSONObject
+
+
Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
+
+
optInt(String, int) - Method in class org.json.JSONObject
+
+
Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
+
+
optJSONArray(int) - Method in class org.json.JSONArray
+
+
Get the optional JSONArray associated with an index.
+
+
optJSONArray(String) - Method in class org.json.JSONObject
+
+
Get an optional JSONArray associated with a key.
+
+
optJSONObject(int) - Method in class org.json.JSONArray
+
+
Get the optional JSONObject associated with an index.
+
+
optJSONObject(String) - Method in class org.json.JSONObject
+
+
Get an optional JSONObject associated with a key.
+
+
optLong(int) - Method in class org.json.JSONArray
+
+
Get the optional long value associated with an index.
+
+
optLong(int, long) - Method in class org.json.JSONArray
+
+
Get the optional long value associated with an index.
+
+
optLong(String) - Method in class org.json.JSONObject
+
+
Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
+
+
optLong(String, long) - Method in class org.json.JSONObject
+
+
Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
+
+
optString(int) - Method in class org.json.JSONArray
+
+
Get the optional string value associated with an index.
+
+
optString(int, String) - Method in class org.json.JSONArray
+
+
Get the optional string associated with an index.
+
+
optString(String) - Method in class org.json.JSONObject
+
+
Get an optional string associated with a key.
+
+
optString(String, String) - Method in class org.json.JSONObject
+
+
Get an optional string associated with a key.
+
+
org.json - package org.json
+
 
+
+ + + +

P

+
+
put(boolean) - Method in class org.json.JSONArray
+
+
Append a boolean value.
+
+
put(Collection) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(double) - Method in class org.json.JSONArray
+
+
Append a double value.
+
+
put(int) - Method in class org.json.JSONArray
+
+
Append an int value.
+
+
put(long) - Method in class org.json.JSONArray
+
+
Append an long value.
+
+
put(Map) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
+
+
put(Object) - Method in class org.json.JSONArray
+
+
Append an object value.
+
+
put(int, boolean) - Method in class org.json.JSONArray
+
+
Put or replace a boolean value in the JSONArray.
+
+
put(int, Collection) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(int, double) - Method in class org.json.JSONArray
+
+
Put or replace a double value.
+
+
put(int, int) - Method in class org.json.JSONArray
+
+
Put or replace an int value.
+
+
put(int, long) - Method in class org.json.JSONArray
+
+
Put or replace a long value.
+
+
put(int, Map) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
+
+
put(int, Object) - Method in class org.json.JSONArray
+
+
Put or replace an object value in the JSONArray.
+
+
put(String, boolean) - Method in class org.json.JSONObject
+
+
Put a key/boolean pair in the JSONObject.
+
+
put(String, Collection) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(String, double) - Method in class org.json.JSONObject
+
+
Put a key/double pair in the JSONObject.
+
+
put(String, int) - Method in class org.json.JSONObject
+
+
Put a key/int pair in the JSONObject.
+
+
put(String, long) - Method in class org.json.JSONObject
+
+
Put a key/long pair in the JSONObject.
+
+
put(String, Map) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
+
+
put(String, Object) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject.
+
+
putOnce(String, Object) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
+
+
putOpt(String, Object) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
+
+
+ + + +

Q

+
+
QUEST - Static variable in class org.json.XML
+
+
The Character '?'.
+
+
QUOT - Static variable in class org.json.XML
+
+
The Character '"'.
+
+
quote(String) - Static method in class org.json.JSONObject
+
+
Produce a string in double quotes with backslash sequences in all the + right places.
+
+
+ + + +

R

+
+
remove(int) - Method in class org.json.JSONArray
+
+
Remove an index and close the hole.
+
+
remove(String) - Method in class org.json.JSONObject
+
+
Remove a name and its value, if present.
+
+
rowToJSONArray(JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of strings from a row of comma delimited values.
+
+
rowToJSONObject(JSONArray, JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
+
+
rowToString(JSONArray) - Static method in class org.json.CDL
+
+
Produce a comma delimited text row from a JSONArray.
+
+
+ + + +

S

+
+
skipPast(String) - Method in class org.json.XMLTokener
+
+
Skip characters until past the requested string.
+
+
skipTo(char) - Method in class org.json.JSONTokener
+
+
Skip characters until the next character is the requested character.
+
+
SLASH - Static variable in class org.json.XML
+
+
The Character '/'.
+
+
stringToValue(String) - Static method in class org.json.JSONObject
+
+
Try to convert a string into a number, boolean, or null.
+
+
stringToValue(String) - Static method in class org.json.XML
+
+
Try to convert a string into a number, boolean, or null.
+
+
syntaxError(String) - Method in class org.json.JSONTokener
+
+
Make a JSONException to signal a syntax error.
+
+
+ + + +

T

+
+
testValidity(Object) - Static method in class org.json.JSONObject
+
+
Throw an exception if the object is a NaN or infinite number.
+
+
toJSONArray(String) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+
+
toJSONArray(JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+
+
toJSONArray(JSONArray, String) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+
+
toJSONArray(JSONArray, JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+
+
toJSONArray(String) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+
+
toJSONArray(XMLTokener) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+
+
toJSONArray(JSONArray) - Method in class org.json.JSONObject
+
+
Produce a JSONArray containing the values of the members of this + JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.Cookie
+
+
Convert a cookie specification string into a JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.CookieList
+
+
Convert a cookie list into a JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.HTTP
+
+
Convert an HTTP header string into a JSONObject.
+
+
toJSONObject(JSONArray) - Method in class org.json.JSONArray
+
+
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
+
+
toJSONObject(XMLTokener) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+
+
toJSONObject(String) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+
+
toJSONObject(String) - Static method in class org.json.XML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
+
+
toJSONString() - Method in interface org.json.JSONString
+
+
The toJSONString method allows a class to produce its own JSON + serialization.
+
+
toString(JSONArray) - Static method in class org.json.CDL
+
+
Produce a comma delimited text from a JSONArray of JSONObjects.
+
+
toString(JSONArray, JSONArray) - Static method in class org.json.CDL
+
+
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
+
+
toString(JSONObject) - Static method in class org.json.Cookie
+
+
Convert a JSONObject into a cookie specification string.
+
+
toString(JSONObject) - Static method in class org.json.CookieList
+
+
Convert a JSONObject into a cookie list.
+
+
toString(JSONObject) - Static method in class org.json.HTTP
+
+
Convert a JSONObject into an HTTP header.
+
+
toString() - Method in class org.json.JSONArray
+
+
Make a JSON text of this JSONArray.
+
+
toString(int) - Method in class org.json.JSONArray
+
+
Make a prettyprinted JSON text of this JSONArray.
+
+
toString(JSONArray) - Static method in class org.json.JSONML
+
+
Reverse the JSONML transformation, making an XML text from a JSONArray.
+
+
toString(JSONObject) - Static method in class org.json.JSONML
+
+
Reverse the JSONML transformation, making an XML text from a JSONObject.
+
+
toString() - Method in class org.json.JSONObject
+
+
Make a JSON text of this JSONObject.
+
+
toString(int) - Method in class org.json.JSONObject
+
+
Make a prettyprinted JSON text of this JSONObject.
+
+
toString() - Method in class org.json.JSONStringer
+
+
Return the JSON text.
+
+
toString() - Method in class org.json.JSONTokener
+
+
Make a printable string of this JSONTokener.
+
+
toString(Object) - Static method in class org.json.XML
+
+
Convert a JSONObject into a well-formed, element-normal XML string.
+
+
toString(Object, String) - Static method in class org.json.XML
+
+
Convert a JSONObject into a well-formed, element-normal XML string.
+
+
+ + + +

U

+
+
unescape(String) - Static method in class org.json.Cookie
+
+
Convert %hh sequences to single characters, and + convert plus to space.
+
+
+ + + +

V

+
+
value(boolean) - Method in class org.json.JSONWriter
+
+
Append either the value true or the value + false.
+
+
value(double) - Method in class org.json.JSONWriter
+
+
Append a double value.
+
+
value(long) - Method in class org.json.JSONWriter
+
+
Append a long value.
+
+
value(Object) - Method in class org.json.JSONWriter
+
+
Append an object value.
+
+
valueToString(Object) - Static method in class org.json.JSONObject
+
+
Make a JSON text of an Object value.
+
+
+ + + +

W

+
+
wrap(Object) - Static method in class org.json.JSONObject
+
+
Wrap an object, if necessary.
+
+
write(Writer) - Method in class org.json.JSONArray
+
+
Write the contents of the JSONArray as JSON text to a writer.
+
+
write(Writer) - Method in class org.json.JSONObject
+
+
Write the contents of the JSONObject as JSON text to a writer.
+
+
+ + + +

X

+
+
XML - Class in org.json
+
+
This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
+
+
XML() - Constructor for class org.json.XML
+
 
+
XMLTokener - Class in org.json
+
+
The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
+
+
XMLTokener(String) - Constructor for class org.json.XMLTokener
+
+
Construct an XMLTokener from a string.
+
+
+A B C D E G H I J K L M N O P Q R S T U V W X 
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/index.html b/distribution/json4processing-0.1.4/reference/index.html new file mode 100644 index 000000000..b449b28b3 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/index.html @@ -0,0 +1,30 @@ + + + + + +Javadocs: json4processing + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="org/json/package-summary.html">Non-frame version</a>.</p> + + + diff --git a/distribution/json4processing-0.1.4/reference/org/json/CDL.html b/distribution/json4processing-0.1.4/reference/org/json/CDL.html new file mode 100644 index 000000000..f07ac85b1 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/CDL.html @@ -0,0 +1,470 @@ + + + + + +CDL (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class CDL

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.CDL
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class CDL
    +extends java.lang.Object
    +
    This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text. Comma + delimited text is a very popular format for data interchange. It is + understood by most database, spreadsheet, and organizer programs. +

    + Each row of text represents a row in a table or a data record. Each row + ends with a NEWLINE character. Each row contains one or more values. + Values are separated by commas. A value can contain any character except + for comma, unless is is wrapped in single quotes or double quotes. +

    + The first row usually contains the names of the columns. +

    + A comma delimited list can be converted into a JSONArray of JSONObjects. + The names for the elements in the JSONObjects can be taken from the names + in the first row.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      CDL() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONArrayrowToJSONArray(JSONTokener x) +
      Produce a JSONArray of strings from a row of comma delimited values.
      +
      static JSONObjectrowToJSONObject(JSONArray names, + JSONTokener x) +
      Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
      +
      static java.lang.StringrowToString(JSONArray ja) +
      Produce a comma delimited text row from a JSONArray.
      +
      static JSONArraytoJSONArray(JSONArray names, + JSONTokener x) +
      Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
      +
      static JSONArraytoJSONArray(JSONArray names, + java.lang.String string) +
      Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
      +
      static JSONArraytoJSONArray(JSONTokener x) +
      Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
      +
      static JSONArraytoJSONArray(java.lang.String string) +
      Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
      +
      static java.lang.StringtoString(JSONArray ja) +
      Produce a comma delimited text from a JSONArray of JSONObjects.
      +
      static java.lang.StringtoString(JSONArray names, + JSONArray ja) +
      Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CDL

        +
        public CDL()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        rowToJSONArray

        +
        public static JSONArray rowToJSONArray(JSONTokener x)
        +                                throws JSONException
        +
        Produce a JSONArray of strings from a row of comma delimited values.
        +
        Parameters:
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONArray of strings.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        rowToJSONObject

        +
        public static JSONObject rowToJSONObject(JSONArray names,
        +                         JSONTokener x)
        +                                  throws JSONException
        +
        Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
        +
        Parameters:
        names - A JSONArray of names. This is commonly obtained from the + first row of a comma delimited text file using the rowToJSONArray + method.
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONObject combining the names and values.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        rowToString

        +
        public static java.lang.String rowToString(JSONArray ja)
        +
        Produce a comma delimited text row from a JSONArray. Values containing + the comma character will be quoted. Troublesome characters may be + removed.
        +
        Parameters:
        ja - A JSONArray of strings.
        +
        Returns:
        A string ending in NEWLINE.
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(java.lang.String string)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
        +
        Parameters:
        string - The comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(JSONTokener x)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
        +
        Parameters:
        x - The JSONTokener containing the comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(JSONArray names,
        +                    java.lang.String string)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
        +
        Parameters:
        names - A JSONArray of strings.
        string - The comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(JSONArray names,
        +                    JSONTokener x)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
        +
        Parameters:
        names - A JSONArray of strings.
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArray ja)
        +                                 throws JSONException
        +
        Produce a comma delimited text from a JSONArray of JSONObjects. The + first row will be a list of names obtained by inspecting the first + JSONObject.
        +
        Parameters:
        ja - A JSONArray of JSONObjects.
        +
        Returns:
        A comma delimited text.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArray names,
        +                        JSONArray ja)
        +                                 throws JSONException
        +
        Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. The list of names is not included in the + output.
        +
        Parameters:
        names - A JSONArray of strings.
        ja - A JSONArray of JSONObjects.
        +
        Returns:
        A comma delimited text.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/Cookie.html b/distribution/json4processing-0.1.4/reference/org/json/Cookie.html new file mode 100644 index 000000000..d9cea7c96 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/Cookie.html @@ -0,0 +1,347 @@ + + + + + +Cookie (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class Cookie

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.Cookie
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Cookie
    +extends java.lang.Object
    +
    Convert a web browser cookie specification to a JSONObject and back. + JSON and Cookies are both notations for name/value pairs.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Cookie() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static java.lang.Stringescape(java.lang.String string) +
      Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
      +
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a cookie specification string into a JSONObject.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Convert a JSONObject into a cookie specification string.
      +
      static java.lang.Stringunescape(java.lang.String string) +
      Convert %hh sequences to single characters, and + convert plus to space.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Cookie

        +
        public Cookie()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        escape

        +
        public static java.lang.String escape(java.lang.String string)
        +
        Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". This is a gentle form + of URL encoding, attempting to cause as little distortion to the + string as possible. The characters '=' and ';' are meta characters in + cookies. By convention, they are escaped using the URL-encoding. This is + only a convention, not a standard. Often, cookies are expected to have + encoded values. We encode '=' and ';' because we must. We encode '%' and + '+' because they are meta characters in URL encoding.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        The escaped result.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a cookie specification string into a JSONObject. The string + will contain a name value pair separated by '='. The name and the value + will be unescaped, possibly converting '+' and '%' sequences. The + cookie properties may follow, separated by ';', also represented as + name=value (except the secure property, which does not have a value). + The name will be stored under the key "name", and the value will be + stored under the key "value". This method does not do checking or + validation of the parameters. It only converts the cookie string into + a JSONObject.
        +
        Parameters:
        string - The cookie specification string.
        +
        Returns:
        A JSONObject containing "name", "value", and possibly other + members.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +                                 throws JSONException
        +
        Convert a JSONObject into a cookie specification string. The JSONObject + must contain "name" and "value" members. + If the JSONObject contains "expires", "domain", "path", or "secure" + members, they will be appended to the cookie specification string. + All other members are ignored.
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        A cookie specification string
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        unescape

        +
        public static java.lang.String unescape(java.lang.String string)
        +
        Convert %hh sequences to single characters, and + convert plus to space.
        +
        Parameters:
        string - A string that may contain + + (plus) and + %hh sequences.
        +
        Returns:
        The unescaped string.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/CookieList.html b/distribution/json4processing-0.1.4/reference/org/json/CookieList.html new file mode 100644 index 000000000..17a590f3d --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/CookieList.html @@ -0,0 +1,295 @@ + + + + + +CookieList (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class CookieList

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.CookieList
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class CookieList
    +extends java.lang.Object
    +
    Convert a web browser cookie list string to a JSONObject and back.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      CookieList() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a cookie list into a JSONObject.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Convert a JSONObject into a cookie list.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CookieList

        +
        public CookieList()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a cookie list into a JSONObject. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The names and the values + will be unescaped, possibly converting '+' and '%' sequences. + + To add a cookie to a cooklist, + cookielistJSONObject.put(cookieJSONObject.getString("name"), + cookieJSONObject.getString("value"));
        +
        Parameters:
        string - A cookie list string
        +
        Returns:
        A JSONObject
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +                                 throws JSONException
        +
        Convert a JSONObject into a cookie list. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The characters '%', '+', '=', and ';' + in the names and values are replaced by "%hh".
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        A cookie list string
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/HTTP.html b/distribution/json4processing-0.1.4/reference/org/json/HTTP.html new file mode 100644 index 000000000..6de4ef3b7 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/HTTP.html @@ -0,0 +1,363 @@ + + + + + +HTTP (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class HTTP

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.HTTP
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class HTTP
    +extends java.lang.Object
    +
    Convert an HTTP header to a JSONObject and back.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringCRLF +
      Carriage return/line feed.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      HTTP() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert an HTTP header string into a JSONObject.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Convert a JSONObject into an HTTP header.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CRLF

        +
        public static final java.lang.String CRLF
        +
        Carriage return/line feed.
        +
        See Also:
        Constant Field Values
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HTTP

        +
        public HTTP()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +
        Convert an HTTP header string into a JSONObject. It can be a request + header or a response header. A request header will contain +
        {
        +    Method: "POST" (for example),
        +    "Request-URI": "/" (for example),
        +    "HTTP-Version": "HTTP/1.1" (for example)
        + }
        + A response header will contain +
        {
        +    "HTTP-Version": "HTTP/1.1" (for example),
        +    "Status-Code": "200" (for example),
        +    "Reason-Phrase": "OK" (for example)
        + }
        + In addition, the other parameters in the header will be captured, using + the HTTP field names as JSON names, so that
        +    Date: Sun, 26 May 2002 18:06:04 GMT
        +    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
        +    Cache-Control: no-cache
        + become +
        {...
        +    Date: "Sun, 26 May 2002 18:06:04 GMT",
        +    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
        +    "Cache-Control": "no-cache",
        + ...}
        + It does no further checking or conversion. It does not parse dates. + It does not do '%' transforms on URLs.
        +
        Parameters:
        string - An HTTP header string.
        +
        Returns:
        A JSONObject containing the elements and attributes + of the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +
        Convert a JSONObject into an HTTP header. A request header must contain +
        {
        +    Method: "POST" (for example),
        +    "Request-URI": "/" (for example),
        +    "HTTP-Version": "HTTP/1.1" (for example)
        + }
        + A response header must contain +
        {
        +    "HTTP-Version": "HTTP/1.1" (for example),
        +    "Status-Code": "200" (for example),
        +    "Reason-Phrase": "OK" (for example)
        + }
        + Any other members of the JSONObject will be output as HTTP fields. + The result will end with two CRLF pairs.
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        An HTTP header string.
        +
        Throws:
        +
        JSONException - if the object does not contain enough + information.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.4/reference/org/json/HTTPTokener.html new file mode 100644 index 000000000..19733a532 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/HTTPTokener.html @@ -0,0 +1,280 @@ + + + + + +HTTPTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class HTTPTokener

+
+
+ +
+
    +
  • +
    +
    +
    public class HTTPTokener
    +extends JSONTokener
    +
    The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HTTPTokener

        +
        public HTTPTokener(java.lang.String string)
        +
        Construct an HTTPTokener from a string.
        +
        Parameters:
        string - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        nextToken

        +
        public java.lang.String nextToken()
        +                           throws JSONException
        +
        Get the next token or string. This is used in parsing HTTP headers.
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.4/reference/org/json/JSONArray.html new file mode 100644 index 000000000..5c1c26d04 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONArray.html @@ -0,0 +1,1285 @@ + + + + + +JSONArray (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONArray

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONArray
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONArray
    +extends java.lang.Object
    +
    A JSONArray is an ordered sequence of values. Its external text form is a + string wrapped in square brackets with commas separating the values. The + internal form is an object having get and opt + methods for accessing the values by index, and put methods for + adding or replacing values. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the + JSONObject.NULL object. +

    + The constructor can convert a JSON text into a Java object. The + toString method converts to JSON text. +

    + A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

    + The generic get() and opt() methods return an + object which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. +

    + The texts produced by the toString methods strictly conform to + JSON syntax rules. The constructors are more forgiving in the texts they will + accept: +

      +
    • An extra , (comma) may appear just + before the closing bracket.
    • +
    • The null value will be inserted when there + is , (comma) elision.
    • +
    • Strings may be quoted with ' (single + quote).
    • +
    • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
    • +
    • Values can be separated by ; (semicolon) as + well as by , (comma).
    • +
    • Numbers may have the + 0x- (hex) prefix.
    • +
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONArray() +
      Construct an empty JSONArray.
      +
      JSONArray(java.util.Collection collection) +
      Construct a JSONArray from a Collection.
      +
      JSONArray(JSONTokener x) +
      Construct a JSONArray from a JSONTokener.
      +
      JSONArray(java.lang.Object array) +
      Construct a JSONArray from an array
      +
      JSONArray(java.lang.String source) +
      Construct a JSONArray from a source JSON text.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.Objectget(int index) +
      Get the object value associated with an index.
      +
      booleangetBoolean(int index) +
      Get the boolean value associated with an index.
      +
      doublegetDouble(int index) +
      Get the double value associated with an index.
      +
      intgetInt(int index) +
      Get the int value associated with an index.
      +
      JSONArraygetJSONArray(int index) +
      Get the JSONArray associated with an index.
      +
      JSONObjectgetJSONObject(int index) +
      Get the JSONObject associated with an index.
      +
      longgetLong(int index) +
      Get the long value associated with an index.
      +
      java.lang.StringgetString(int index) +
      Get the string associated with an index.
      +
      booleanisNull(int index) +
      Determine if the value is null.
      +
      java.lang.Stringjoin(java.lang.String separator) +
      Make a string from the contents of this JSONArray.
      +
      intlength() +
      Get the number of elements in the JSONArray, included nulls.
      +
      java.lang.Objectopt(int index) +
      Get the optional object value associated with an index.
      +
      booleanoptBoolean(int index) +
      Get the optional boolean value associated with an index.
      +
      booleanoptBoolean(int index, + boolean defaultValue) +
      Get the optional boolean value associated with an index.
      +
      doubleoptDouble(int index) +
      Get the optional double value associated with an index.
      +
      doubleoptDouble(int index, + double defaultValue) +
      Get the optional double value associated with an index.
      +
      intoptInt(int index) +
      Get the optional int value associated with an index.
      +
      intoptInt(int index, + int defaultValue) +
      Get the optional int value associated with an index.
      +
      JSONArrayoptJSONArray(int index) +
      Get the optional JSONArray associated with an index.
      +
      JSONObjectoptJSONObject(int index) +
      Get the optional JSONObject associated with an index.
      +
      longoptLong(int index) +
      Get the optional long value associated with an index.
      +
      longoptLong(int index, + long defaultValue) +
      Get the optional long value associated with an index.
      +
      java.lang.StringoptString(int index) +
      Get the optional string value associated with an index.
      +
      java.lang.StringoptString(int index, + java.lang.String defaultValue) +
      Get the optional string associated with an index.
      +
      JSONArrayput(boolean value) +
      Append a boolean value.
      +
      JSONArrayput(java.util.Collection value) +
      Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONArrayput(double value) +
      Append a double value.
      +
      JSONArrayput(int value) +
      Append an int value.
      +
      JSONArrayput(int index, + boolean value) +
      Put or replace a boolean value in the JSONArray.
      +
      JSONArrayput(int index, + java.util.Collection value) +
      Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONArrayput(int index, + double value) +
      Put or replace a double value.
      +
      JSONArrayput(int index, + int value) +
      Put or replace an int value.
      +
      JSONArrayput(int index, + long value) +
      Put or replace a long value.
      +
      JSONArrayput(int index, + java.util.Map value) +
      Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
      +
      JSONArrayput(int index, + java.lang.Object value) +
      Put or replace an object value in the JSONArray.
      +
      JSONArrayput(long value) +
      Append an long value.
      +
      JSONArrayput(java.util.Map value) +
      Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
      +
      JSONArrayput(java.lang.Object value) +
      Append an object value.
      +
      java.lang.Objectremove(int index) +
      Remove an index and close the hole.
      +
      JSONObjecttoJSONObject(JSONArray names) +
      Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
      +
      java.lang.StringtoString() +
      Make a JSON text of this JSONArray.
      +
      java.lang.StringtoString(int indentFactor) +
      Make a prettyprinted JSON text of this JSONArray.
      +
      java.io.Writerwrite(java.io.Writer writer) +
      Write the contents of the JSONArray as JSON text to a writer.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray()
        +
        Construct an empty JSONArray.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(JSONTokener x)
        +          throws JSONException
        +
        Construct a JSONArray from a JSONTokener.
        +
        Parameters:
        x - A JSONTokener
        +
        Throws:
        +
        JSONException - If there is a syntax error.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(java.lang.String source)
        +          throws JSONException
        +
        Construct a JSONArray from a source JSON text.
        +
        Parameters:
        source - A string that begins with + [ (left bracket) + and ends with ] (right bracket).
        +
        Throws:
        +
        JSONException - If there is a syntax error.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(java.util.Collection collection)
        +
        Construct a JSONArray from a Collection.
        +
        Parameters:
        collection - A Collection.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(java.lang.Object array)
        +
        Construct a JSONArray from an array
        +
        Throws:
        +
        JSONException - If not an array.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(int index)
        +                     throws JSONException
        +
        Get the object value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        An object value.
        +
        Throws:
        +
        JSONException - If there is no value for the index.
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(int index)
        +                   throws JSONException
        +
        Get the boolean value associated with an index. + The string values "true" and "false" are converted to boolean.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The truth.
        +
        Throws:
        +
        JSONException - If there is no value for the index or if the + value is not convertible to boolean.
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(int index)
        +                 throws JSONException
        +
        Get the double value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value cannot + be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(int index)
        +           throws JSONException
        +
        Get the int value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value is not a number.
        +
      • +
      + + + +
        +
      • +

        getJSONArray

        +
        public JSONArray getJSONArray(int index)
        +                       throws JSONException
        +
        Get the JSONArray associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A JSONArray value.
        +
        Throws:
        +
        JSONException - If there is no value for the index. or if the + value is not a JSONArray
        +
      • +
      + + + +
        +
      • +

        getJSONObject

        +
        public JSONObject getJSONObject(int index)
        +
        Get the JSONObject associated with an index.
        +
        Parameters:
        index - subscript
        +
        Returns:
        A JSONObject value.
        +
        Throws:
        +
        JSONException - If there is no value for the index or if the + value is not a JSONObject
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        public long getLong(int index)
        +             throws JSONException
        +
        Get the long value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value cannot + be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(int index)
        +                           throws JSONException
        +
        Get the string associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A string value.
        +
        Throws:
        +
        JSONException - If there is no string value for the index.
        +
      • +
      + + + +
        +
      • +

        isNull

        +
        public boolean isNull(int index)
        +
        Determine if the value is null.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        true if the value at the index is null, or if there is no value.
        +
      • +
      + + + +
        +
      • +

        join

        +
        public java.lang.String join(java.lang.String separator)
        +                      throws JSONException
        +
        Make a string from the contents of this JSONArray. The + separator string is inserted between each element. + Warning: This method assumes that the data structure is acyclical.
        +
        Parameters:
        separator - A string that will be inserted between the elements.
        +
        Returns:
        a string.
        +
        Throws:
        +
        JSONException - If the array contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        length

        +
        public int length()
        +
        Get the number of elements in the JSONArray, included nulls.
        +
        Returns:
        The length (or size).
        +
      • +
      + + + +
        +
      • +

        opt

        +
        public java.lang.Object opt(int index)
        +
        Get the optional object value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        An object value, or null if there is no + object at that index.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(int index)
        +
        Get the optional boolean value associated with an index. + It returns false if there is no value at that index, + or if the value is not Boolean.TRUE or the String "true".
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(int index,
        +                 boolean defaultValue)
        +
        Get the optional boolean value associated with an index. + It returns the defaultValue if there is no value at that index or if + it is not a Boolean or the String "true" or "false" (case insensitive).
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - A boolean default.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(int index)
        +
        Get the optional double value associated with an index. + NaN is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(int index,
        +               double defaultValue)
        +
        Get the optional double value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - subscript
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(int index)
        +
        Get the optional int value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(int index,
        +         int defaultValue)
        +
        Get the optional int value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optJSONArray

        +
        public JSONArray optJSONArray(int index)
        +
        Get the optional JSONArray associated with an index.
        +
        Parameters:
        index - subscript
        +
        Returns:
        A JSONArray value, or null if the index has no value, + or if the value is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        optJSONObject

        +
        public JSONObject optJSONObject(int index)
        +
        Get the optional JSONObject associated with an index. + Null is returned if the key is not found, or null if the index has + no value, or if the value is not a JSONObject.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A JSONObject value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(int index)
        +
        Get the optional long value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(int index,
        +           long defaultValue)
        +
        Get the optional long value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(int index)
        +
        Get the optional string value associated with an index. It returns an + empty string if there is no value at that index. If the value + is not a string and is not null, then it is coverted to a string.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A String value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(int index,
        +                         java.lang.String defaultValue)
        +
        Get the optional string associated with an index. + The defaultValue is returned if the key is not found.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        A String value.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(boolean value)
        +
        Append a boolean value. This increases the array's length by one.
        +
        Parameters:
        value - A boolean value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(java.util.Collection value)
        +
        Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        value - A Collection value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(double value)
        +
        Append a double value. This increases the array's length by one.
        +
        Parameters:
        value - A double value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - if the value is not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int value)
        +
        Append an int value. This increases the array's length by one.
        +
        Parameters:
        value - An int value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(long value)
        +
        Append an long value. This increases the array's length by one.
        +
        Parameters:
        value - A long value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(java.util.Map value)
        +
        Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
        +
        Parameters:
        value - A Map value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(java.lang.Object value)
        +
        Append an object value. This increases the array's length by one.
        +
        Parameters:
        value - An object value. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            boolean value)
        +
        Put or replace a boolean value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out.
        +
        Parameters:
        index - The subscript.
        value - A boolean value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            java.util.Collection value)
        +
        Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        index - The subscript.
        value - A Collection value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the value is + not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            double value)
        +
        Put or replace a double value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - A double value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the value is + not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            int value)
        +
        Put or replace an int value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - An int value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            long value)
        +
        Put or replace a long value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - A long value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            java.util.Map value)
        +
        Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
        +
        Parameters:
        index - The subscript.
        value - The Map value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the the value is + an invalid number.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            java.lang.Object value)
        +
        Put or replace an object value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out.
        +
        Parameters:
        index - The subscript.
        value - The value to put into the array. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the the value is + an invalid number.
        +
      • +
      + + + +
        +
      • +

        remove

        +
        public java.lang.Object remove(int index)
        +
        Remove an index and close the hole.
        +
        Parameters:
        index - The index of the element to be removed.
        +
        Returns:
        The value that was associated with the index, + or null if there was no value.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public JSONObject toJSONObject(JSONArray names)
        +                        throws JSONException
        +
        Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
        +
        Parameters:
        names - A JSONArray containing a list of key strings. These will be + paired with the values.
        +
        Returns:
        A JSONObject, or null if there are no names or if this JSONArray + has no values.
        +
        Throws:
        +
        JSONException - If any of the names are null.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a JSON text of this JSONArray. For compactness, no + unnecessary whitespace is added. If it is not possible to produce a + syntactically correct JSON text then null will be returned instead. This + could occur if the array contains an invalid number. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        a printable, displayable, transmittable + representation of the array.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString(int indentFactor)
        +                          throws JSONException
        +
        Make a prettyprinted JSON text of this JSONArray. + Warning: This method assumes that the data structure is acyclical.
        +
        Parameters:
        indentFactor - The number of spaces to add to each level of + indentation.
        +
        Returns:
        a printable, displayable, transmittable + representation of the object, beginning + with [ (left bracket) and ending + with ] (right bracket).
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        write

        +
        public java.io.Writer write(java.io.Writer writer)
        +
        Write the contents of the JSONArray as JSON text to a writer. + For compactness, no whitespace is added. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Returns:
        The writer.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONException.html b/distribution/json4processing-0.1.4/reference/org/json/JSONException.html new file mode 100644 index 000000000..fd5ffa9bc --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONException.html @@ -0,0 +1,298 @@ + + + + + +JSONException (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • org.json.JSONException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class JSONException
    +extends java.lang.Exception
    +
    The JSONException is thrown by the JSON.org classes when things are amiss.
    +
    Author:
    +
    JSON.org
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONException(java.lang.String message) +
      Constructs a JSONException with an explanatory message.
      +
      JSONException(java.lang.Throwable cause) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.ThrowablegetCause() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONException

        +
        public JSONException(java.lang.String message)
        +
        Constructs a JSONException with an explanatory message.
        +
        Parameters:
        message - Detail about the reason for the exception.
        +
      • +
      + + + +
        +
      • +

        JSONException

        +
        public JSONException(java.lang.Throwable cause)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCause

        +
        public java.lang.Throwable getCause()
        +
        +
        Overrides:
        +
        getCause in class java.lang.Throwable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONML.html b/distribution/json4processing-0.1.4/reference/org/json/JSONML.html new file mode 100644 index 000000000..6c60c881b --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONML.html @@ -0,0 +1,404 @@ + + + + + +JSONML (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONML

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONML
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONML
    +extends java.lang.Object
    +
    This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONML() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONArraytoJSONArray(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
      +
      static JSONArraytoJSONArray(XMLTokener x) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
      +
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
      +
      static JSONObjecttoJSONObject(XMLTokener x) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
      +
      static java.lang.StringtoString(JSONArray ja) +
      Reverse the JSONML transformation, making an XML text from a JSONArray.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Reverse the JSONML transformation, making an XML text from a JSONObject.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONML

        +
        public JSONML()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(java.lang.String string)
        +                             throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        A JSONArray containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(XMLTokener x)
        +                             throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child content and tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        x - An XMLTokener.
        +
        Returns:
        A JSONArray containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(XMLTokener x)
        +                               throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        x - An XMLTokener of the XML source text.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        string - The XML source text.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArray ja)
        +                                 throws JSONException
        +
        Reverse the JSONML transformation, making an XML text from a JSONArray.
        +
        Parameters:
        ja - A JSONArray.
        +
        Returns:
        An XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +                                 throws JSONException
        +
        Reverse the JSONML transformation, making an XML text from a JSONObject. + The JSONObject must contain a "tagName" property. If it has children, + then it must have a "childNodes" property containing an array of objects. + The other properties are attributes with string values.
        +
        Parameters:
        jo - A JSONObject.
        +
        Returns:
        An XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.4/reference/org/json/JSONObject.html new file mode 100644 index 000000000..00daaaff6 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONObject.html @@ -0,0 +1,1626 @@ + + + + + +JSONObject (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONObject

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONObject
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONObject
    +extends java.lang.Object
    +
    A JSONObject is an unordered collection of name/value pairs. Its external + form is a string wrapped in curly braces with colons between the names and + values, and commas between the values and names. The internal form is an + object having get and opt methods for accessing the + values by name, and put methods for adding or replacing values + by name. The values can be any of these types: Boolean, + JSONArray, JSONObject, Number, + String, or the JSONObject.NULL object. A JSONObject + constructor can be used to convert an external form JSON text into an + internal form whose values can be retrieved with the get and + opt methods, or to convert values into a JSON text using the + put and toString methods. A get method + returns a value if one can be found, and throws an exception if one cannot be + found. An opt method returns a default value instead of throwing + an exception, and so is useful for obtaining optional values. +

    + The generic get() and opt() methods return an + object, which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. The opt methods differ from the get methods in that they do + not throw. Instead, they return a specified value, such as null. +

    + The put methods add or replace values in an object. For example, + +

    + myString = new JSONObject().put("JSON", "Hello, World!").toString();
    + 
    + + produces the string {"JSON": "Hello, World"}. +

    + The texts produced by the toString methods strictly conform to + the JSON syntax rules. The constructors are more forgiving in the texts they + will accept: +

      +
    • An extra , (comma) may appear just + before the closing brace.
    • +
    • Strings may be quoted with ' (single + quote).
    • +
    • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, and + if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers and + if they are not the reserved words true, false, or + null.
    • +
    • Keys can be followed by = or => as well as by + :.
    • +
    • Values can be followed by ; (semicolon) as + well as by , (comma).
    • +
    • Numbers may have the 0x- (hex) prefix.
    • +
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.ObjectNULL +
      It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONObject() +
      Construct an empty JSONObject.
      +
      JSONObject(JSONObject jo, + java.lang.String[] names) +
      Construct a JSONObject from a subset of another JSONObject.
      +
      JSONObject(JSONTokener x) +
      Construct a JSONObject from a JSONTokener.
      +
      JSONObject(java.util.Map map) +
      Construct a JSONObject from a Map.
      +
      JSONObject(java.lang.Object bean) +
      Construct a JSONObject from an Object using bean getters.
      +
      JSONObject(java.lang.Object object, + java.lang.String[] names) +
      Construct a JSONObject from an Object, using reflection to find the + public members.
      +
      JSONObject(java.lang.String source) +
      Construct a JSONObject from a source JSON text string.
      +
      JSONObject(java.lang.String baseName, + java.util.Locale locale) +
      Construct a JSONObject from a ResourceBundle.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      JSONObjectaccumulate(java.lang.String key, + java.lang.Object value) +
      Accumulate values under a key.
      +
      JSONObjectappend(java.lang.String key, + java.lang.Object value) +
      Append values to the array under a key.
      +
      static java.lang.StringdoubleToString(double d) +
      Produce a string from a double.
      +
      java.lang.Objectget(java.lang.String key) +
      Get the value object associated with a key.
      +
      booleangetBoolean(java.lang.String key) +
      Get the boolean value associated with a key.
      +
      doublegetDouble(java.lang.String key) +
      Get the double value associated with a key.
      +
      intgetInt(java.lang.String key) +
      Get the int value associated with a key.
      +
      JSONArraygetJSONArray(java.lang.String key) +
      Get the JSONArray value associated with a key.
      +
      JSONObjectgetJSONObject(java.lang.String key) +
      Get the JSONObject value associated with a key.
      +
      longgetLong(java.lang.String key) +
      Get the long value associated with a key.
      +
      static java.lang.String[]getNames(JSONObject jo) +
      Get an array of field names from a JSONObject.
      +
      static java.lang.String[]getNames(java.lang.Object object) +
      Get an array of field names from an Object.
      +
      java.lang.StringgetString(java.lang.String key) +
      Get the string associated with a key.
      +
      booleanhas(java.lang.String key) +
      Determine if the JSONObject contains a specific key.
      +
      JSONObjectincrement(java.lang.String key) +
      Increment a property of a JSONObject.
      +
      booleanisNull(java.lang.String key) +
      Determine if the value associated with the key is null or if there is no + value.
      +
      java.util.Iteratorkeys() +
      Get an enumeration of the keys of the JSONObject.
      +
      intlength() +
      Get the number of keys stored in the JSONObject.
      +
      JSONArraynames() +
      Produce a JSONArray containing the names of the elements of this + JSONObject.
      +
      static java.lang.StringnumberToString(java.lang.Number number) +
      Produce a string from a Number.
      +
      java.lang.Objectopt(java.lang.String key) +
      Get an optional value associated with a key.
      +
      booleanoptBoolean(java.lang.String key) +
      Get an optional boolean associated with a key.
      +
      booleanoptBoolean(java.lang.String key, + boolean defaultValue) +
      Get an optional boolean associated with a key.
      +
      doubleoptDouble(java.lang.String key) +
      Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
      +
      doubleoptDouble(java.lang.String key, + double defaultValue) +
      Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
      +
      intoptInt(java.lang.String key) +
      Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
      +
      intoptInt(java.lang.String key, + int defaultValue) +
      Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
      +
      JSONArrayoptJSONArray(java.lang.String key) +
      Get an optional JSONArray associated with a key.
      +
      JSONObjectoptJSONObject(java.lang.String key) +
      Get an optional JSONObject associated with a key.
      +
      longoptLong(java.lang.String key) +
      Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
      +
      longoptLong(java.lang.String key, + long defaultValue) +
      Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
      +
      java.lang.StringoptString(java.lang.String key) +
      Get an optional string associated with a key.
      +
      java.lang.StringoptString(java.lang.String key, + java.lang.String defaultValue) +
      Get an optional string associated with a key.
      +
      JSONObjectput(java.lang.String key, + boolean value) +
      Put a key/boolean pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + java.util.Collection value) +
      Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONObjectput(java.lang.String key, + double value) +
      Put a key/double pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + int value) +
      Put a key/int pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + long value) +
      Put a key/long pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + java.util.Map value) +
      Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
      +
      JSONObjectput(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject.
      +
      JSONObjectputOnce(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
      +
      JSONObjectputOpt(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
      +
      static java.lang.Stringquote(java.lang.String string) +
      Produce a string in double quotes with backslash sequences in all the + right places.
      +
      java.lang.Objectremove(java.lang.String key) +
      Remove a name and its value, if present.
      +
      static java.lang.ObjectstringToValue(java.lang.String string) +
      Try to convert a string into a number, boolean, or null.
      +
      static voidtestValidity(java.lang.Object o) +
      Throw an exception if the object is a NaN or infinite number.
      +
      JSONArraytoJSONArray(JSONArray names) +
      Produce a JSONArray containing the values of the members of this + JSONObject.
      +
      java.lang.StringtoString() +
      Make a JSON text of this JSONObject.
      +
      java.lang.StringtoString(int indentFactor) +
      Make a prettyprinted JSON text of this JSONObject.
      +
      static java.lang.StringvalueToString(java.lang.Object value) +
      Make a JSON text of an Object value.
      +
      static java.lang.Objectwrap(java.lang.Object object) +
      Wrap an object, if necessary.
      +
      java.io.Writerwrite(java.io.Writer writer) +
      Write the contents of the JSONObject as JSON text to a writer.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NULL

        +
        public static final java.lang.Object NULL
        +
        It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null".
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject()
        +
        Construct an empty JSONObject.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(JSONObject jo,
        +          java.lang.String[] names)
        +
        Construct a JSONObject from a subset of another JSONObject. An array of + strings is used to identify the keys that should be copied. Missing keys + are ignored.
        +
        Parameters:
        jo - A JSONObject.
        names - An array of strings.
        +
        Throws:
        +
        JSONException
        +
        JSONException - If a value is a non-finite number or if a name is + duplicated.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(JSONTokener x)
        +
        Construct a JSONObject from a JSONTokener.
        +
        Parameters:
        x - A JSONTokener object containing the source string.
        +
        Throws:
        +
        JSONException - If there is a syntax error in the source string or a + duplicated key.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.util.Map map)
        +
        Construct a JSONObject from a Map.
        +
        Parameters:
        map - A map object that can be used to initialize the contents of + the JSONObject.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.Object bean)
        +
        Construct a JSONObject from an Object using bean getters. It reflects on + all of the public methods of the object. For each of the methods with no + parameters and a name starting with "get" or + "is" followed by an uppercase letter, the method is invoked, + and a key and the value returned from the getter method are put into the + new JSONObject. + + The key is formed by removing the "get" or "is" + prefix. If the second remaining character is not upper case, then the + first character is converted to lower case. + + For example, if an object has a method named "getName", and + if the result of calling object.getName() is + "Larry Fine", then the JSONObject will contain + "name": "Larry Fine".
        +
        Parameters:
        bean - An object that has getter methods that should be used to make + a JSONObject.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.Object object,
        +          java.lang.String[] names)
        +
        Construct a JSONObject from an Object, using reflection to find the + public members. The resulting JSONObject's keys will be the strings from + the names array, and the values will be the field values associated with + those keys in the object. If a key is not found or not visible, then it + will not be copied into the new JSONObject.
        +
        Parameters:
        object - An object that has fields that should be used to make a + JSONObject.
        names - An array of strings, the names of the fields to be obtained + from the object.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.String source)
        +
        Construct a JSONObject from a source JSON text string. This is the most + commonly used JSONObject constructor.
        +
        Parameters:
        source - A string beginning with { (left + brace) and ending with } +  (right brace).
        +
        Throws:
        +
        JSONException - If there is a syntax error in the source string or a + duplicated key.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.String baseName,
        +          java.util.Locale locale)
        +
        Construct a JSONObject from a ResourceBundle.
        +
        Parameters:
        baseName - The ResourceBundle base name.
        locale - The Locale to load the ResourceBundle for.
        +
        Throws:
        +
        JSONException - If any JSONExceptions are detected.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accumulate

        +
        public JSONObject accumulate(java.lang.String key,
        +                    java.lang.Object value)
        +
        Accumulate values under a key. It is similar to the put method except + that if there is already an object stored under the key then a JSONArray + is stored under the key to hold all of the accumulated values. If there + is already a JSONArray, then the new value is appended to it. In + contrast, the put method replaces the previous value. + + If only one value is accumulated that is not a JSONArray, then the result + will be the same as using put. But if multiple values are accumulated, + then the result will be like append.
        +
        Parameters:
        key - A key string.
        value - An object to be accumulated under the key.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is an invalid number or if the key is null.
        +
      • +
      + + + +
        +
      • +

        append

        +
        public JSONObject append(java.lang.String key,
        +                java.lang.Object value)
        +
        Append values to the array under a key. If the key does not exist in the + JSONObject, then the key is put in the JSONObject with its value being a + JSONArray containing the value parameter. If the key was already + associated with a JSONArray, then the value parameter is appended to it.
        +
        Parameters:
        key - A key string.
        value - An object to be accumulated under the key.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null or if the current value associated with + the key is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        doubleToString

        +
        public static java.lang.String doubleToString(double d)
        +
        Produce a string from a double. The string "null" will be returned if the + number is not finite.
        +
        Parameters:
        d - A double.
        +
        Returns:
        A String.
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key)
        +
        Get the value object associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The object associated with the key.
        +
        Throws:
        +
        JSONException - if the key is not found.
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(java.lang.String key)
        +
        Get the boolean value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The truth. (False if it failes to find the value)
        +
        Throws:
        +
        JSONException - if the value is not a Boolean or the String "true" or + "false".
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(java.lang.String key)
        +
        Get the double value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The numeric value. -1 if it failes to find the value
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a Number + object and cannot be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(java.lang.String key)
        +
        Get the int value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The integer value. (-1 if it failes to get the integer)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value cannot be converted + to an integer.
        +
      • +
      + + + +
        +
      • +

        getJSONArray

        +
        public JSONArray getJSONArray(java.lang.String key)
        +
        Get the JSONArray value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONArray which is the value. (null if failes to find the array)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        getJSONObject

        +
        public JSONObject getJSONObject(java.lang.String key)
        +
        Get the JSONObject value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONObject which is the value.
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a JSONObject.
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        public long getLong(java.lang.String key)
        +
        Get the long value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The long value. (-1 if it failes)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value cannot be converted + to a long.
        +
      • +
      + + + +
        +
      • +

        getNames

        +
        public static java.lang.String[] getNames(JSONObject jo)
        +
        Get an array of field names from a JSONObject.
        +
        Returns:
        An array of field names, or null if there are no names.
        +
      • +
      + + + +
        +
      • +

        getNames

        +
        public static java.lang.String[] getNames(java.lang.Object object)
        +
        Get an array of field names from an Object.
        +
        Returns:
        An array of field names, or null if there are no names.
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String key)
        +
        Get the string associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A string which is the value. (empty string if it fails)
        +
        Throws:
        +
        JSONException - if there is no string value for the key.
        +
      • +
      + + + +
        +
      • +

        has

        +
        public boolean has(java.lang.String key)
        +
        Determine if the JSONObject contains a specific key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        true if the key exists in the JSONObject.
        +
      • +
      + + + +
        +
      • +

        increment

        +
        public JSONObject increment(java.lang.String key)
        +
        Increment a property of a JSONObject. If there is no such property, + create one with a value of 1. If there is such a property, and if it is + an Integer, Long, Double, or Float, then add one to it.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If there is already a property with this name that is not an + Integer, Long, Double, or Float.
        +
      • +
      + + + +
        +
      • +

        isNull

        +
        public boolean isNull(java.lang.String key)
        +
        Determine if the value associated with the key is null or if there is no + value.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        true if there is no value associated with the key or if the value + is the JSONObject.NULL object.
        +
      • +
      + + + +
        +
      • +

        keys

        +
        public java.util.Iterator keys()
        +
        Get an enumeration of the keys of the JSONObject.
        +
        Returns:
        An iterator of the keys.
        +
      • +
      + + + +
        +
      • +

        length

        +
        public int length()
        +
        Get the number of keys stored in the JSONObject.
        +
        Returns:
        The number of keys in the JSONObject.
        +
      • +
      + + + +
        +
      • +

        names

        +
        public JSONArray names()
        +
        Produce a JSONArray containing the names of the elements of this + JSONObject.
        +
        Returns:
        A JSONArray containing the key strings, or null if the JSONObject + is empty.
        +
      • +
      + + + +
        +
      • +

        numberToString

        +
        public static java.lang.String numberToString(java.lang.Number number)
        +
        Produce a string from a Number.
        +
        Parameters:
        number - A Number
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException - If n is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        opt

        +
        public java.lang.Object opt(java.lang.String key)
        +
        Get an optional value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value, or null if there is no value.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(java.lang.String key)
        +
        Get an optional boolean associated with a key. It returns false if there + is no such key, or if the value is not Boolean.TRUE or the String "true".
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(java.lang.String key,
        +                 boolean defaultValue)
        +
        Get an optional boolean associated with a key. It returns the + defaultValue if there is no such key, or if it is not a Boolean or the + String "true" or "false" (case insensitive).
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(java.lang.String key)
        +
        Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number. If the value is a string, an attempt + will be made to evaluate it as a number.
        +
        Parameters:
        key - A string which is the key.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(java.lang.String key,
        +               double defaultValue)
        +
        Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number. If the value is a + string, an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(java.lang.String key)
        +
        Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(java.lang.String key,
        +         int defaultValue)
        +
        Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optJSONArray

        +
        public JSONArray optJSONArray(java.lang.String key)
        +
        Get an optional JSONArray associated with a key. It returns null if there + is no such key, or if its value is not a JSONArray.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONArray which is the value.
        +
      • +
      + + + +
        +
      • +

        optJSONObject

        +
        public JSONObject optJSONObject(java.lang.String key)
        +
        Get an optional JSONObject associated with a key. It returns null if + there is no such key, or if its value is not a JSONObject.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONObject which is the value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(java.lang.String key)
        +
        Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(java.lang.String key,
        +           long defaultValue)
        +
        Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(java.lang.String key)
        +
        Get an optional string associated with a key. It returns an empty string + if there is no such key. If the value is not a string and is not null, + then it is converted to a string.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A string which is the value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(java.lang.String key,
        +                         java.lang.String defaultValue)
        +
        Get an optional string associated with a key. It returns the defaultValue + if there is no such key.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        A string which is the value.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             boolean value)
        +
        Put a key/boolean pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A boolean which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             java.util.Collection value)
        +
        Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        key - A key string.
        value - A Collection value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             double value)
        +
        Put a key/double pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A double which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null or if the number is invalid.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             int value)
        +
        Put a key/int pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - An int which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             long value)
        +
        Put a key/long pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A long which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             java.util.Map value)
        +
        Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
        +
        Parameters:
        key - A key string.
        value - A Map value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             java.lang.Object value)
        +
        Put a key/value pair in the JSONObject. If the value is null, then the + key will be removed from the JSONObject if it is present.
        +
        Parameters:
        key - A key string.
        value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is non-finite number or if the key is null.
        +
      • +
      + + + +
        +
      • +

        putOnce

        +
        public JSONObject putOnce(java.lang.String key,
        +                 java.lang.Object value)
        +
        Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
        +
        Parameters:
        key -
        value -
        +
        Returns:
        his.
        +
        Throws:
        +
        JSONException - if the key is a duplicate
        +
      • +
      + + + +
        +
      • +

        putOpt

        +
        public JSONObject putOpt(java.lang.String key,
        +                java.lang.Object value)
        +
        Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
        +
        Parameters:
        key - A key string.
        value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        quote

        +
        public static java.lang.String quote(java.lang.String string)
        +
        Produce a string in double quotes with backslash sequences in all the + right places. A backslash will be inserted within +
        Parameters:
        string - A String
        +
        Returns:
        A String correctly formatted for insertion in a JSON text.
        +
      • +
      + + + +
        +
      • +

        remove

        +
        public java.lang.Object remove(java.lang.String key)
        +
        Remove a name and its value, if present.
        +
        Parameters:
        key - The name to be removed.
        +
        Returns:
        The value that was associated with the name, or null if there was + no value.
        +
      • +
      + + + +
        +
      • +

        stringToValue

        +
        public static java.lang.Object stringToValue(java.lang.String string)
        +
        Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string.
        +
        Parameters:
        string - A String.
        +
        Returns:
        A simple JSON value.
        +
      • +
      + + + +
        +
      • +

        testValidity

        +
        public static void testValidity(java.lang.Object o)
        +                         throws JSONException
        +
        Throw an exception if the object is a NaN or infinite number.
        +
        Parameters:
        o - The object to test.
        +
        Throws:
        +
        JSONException - If o is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public JSONArray toJSONArray(JSONArray names)
        +                      throws JSONException
        +
        Produce a JSONArray containing the values of the members of this + JSONObject.
        +
        Parameters:
        names - A JSONArray containing a list of key strings. This determines + the sequence of the values in the result.
        +
        Returns:
        A JSONArray of values.
        +
        Throws:
        +
        JSONException - If any of the values are non-finite numbers.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a JSON text of this JSONObject. For compactness, no whitespace is + added. If this would not result in a syntactically correct JSON text, + then null will be returned instead. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString(int indentFactor)
        +
        Make a prettyprinted JSON text of this JSONObject. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Parameters:
        indentFactor - The number of spaces to add to each level of indentation.
        +
        Returns:
        a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
        +
        Throws:
        +
        JSONException - If the object contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        valueToString

        +
        public static java.lang.String valueToString(java.lang.Object value)
        +
        Make a JSON text of an Object value. If the object has an + value.toJSONString() method, then that method will be used to produce the + JSON text. The method is required to produce a strictly conforming text. + If the object does not contain a toJSONString method (which is the most + common case), then a text will be produced by other means. If the value + is an array or Collection, then a JSONArray will be made from it and its + toJSONString method will be called. If the value is a MAP, then a + JSONObject will be made from it and its toJSONString method will be + called. Otherwise, the value's toString method will be called, and the + result will be quoted. + +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Parameters:
        value - The value to be serialized.
        +
        Returns:
        a printable, displayable, transmittable representation of the + object, beginning with { (left + brace) and ending with } (right + brace).
        +
        Throws:
        +
        JSONException - If the value is or contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        wrap

        +
        public static java.lang.Object wrap(java.lang.Object object)
        +
        Wrap an object, if necessary. If the object is null, return the NULL + object. If it is an array or collection, wrap it in a JSONArray. If it is + a map, wrap it in a JSONObject. If it is a standard property (Double, + String, et al) then it is already wrapped. Otherwise, if it comes from + one of the java packages, turn it into a string. And if it doesn't, try + to wrap it in a JSONObject. If the wrapping fails, then null is returned.
        +
        Parameters:
        object - The object to wrap
        +
        Returns:
        The wrapped value
        +
      • +
      + + + +
        +
      • +

        write

        +
        public java.io.Writer write(java.io.Writer writer)
        +
        Write the contents of the JSONObject as JSON text to a writer. For + compactness, no whitespace is added. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Returns:
        The writer.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONString.html b/distribution/json4processing-0.1.4/reference/org/json/JSONString.html new file mode 100644 index 000000000..743b59d11 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONString.html @@ -0,0 +1,215 @@ + + + + + +JSONString (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Interface JSONString

+
+
+
+
    +
  • +
    +
    +
    public interface JSONString
    +
    The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object). The + toJSONString method will be used instead of the default behavior + of using the Object's toString() method and quoting the result.
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.StringtoJSONString() +
      The toJSONString method allows a class to produce its own JSON + serialization.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONString

        +
        java.lang.String toJSONString()
        +
        The toJSONString method allows a class to produce its own JSON + serialization.
        +
        Returns:
        A strictly syntactically correct JSON text.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.4/reference/org/json/JSONStringer.html new file mode 100644 index 000000000..b2e885a0c --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONStringer.html @@ -0,0 +1,307 @@ + + + + + +JSONStringer (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONStringer

+
+
+ +
+
    +
  • +
    +
    +
    public class JSONStringer
    +extends JSONWriter
    +
    JSONStringer provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONStringer can produce one JSON text. +

    + A JSONStringer instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting cascade style. For example,

    + myString = new JSONStringer()
    +     .object()
    +         .key("JSON")
    +         .value("Hello, World!")
    +     .endObject()
    +     .toString();
    which produces the string
    + {"JSON":"Hello, World!"}
    +

    + The first method called must be array or object. + There are no methods for adding commas or colons. JSONStringer adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

    + This can sometimes be easier than using a JSONObject to build a string.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONStringer() +
      Make a fresh JSONStringer.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONStringer

        +
        public JSONStringer()
        +
        Make a fresh JSONStringer. It can be used to build one JSON text.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Return the JSON text. This method is used to obtain the product of the + JSONStringer instance. It will return null if there was a + problem in the construction of the JSON text (such as the calls to + array were not properly balanced with calls to + endArray).
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        The JSON text.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.4/reference/org/json/JSONTokener.html new file mode 100644 index 000000000..7011d6005 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONTokener.html @@ -0,0 +1,601 @@ + + + + + +JSONTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONTokener

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONTokener
    • +
    +
  • +
+
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    HTTPTokener, XMLTokener
    +
    +
    +
    +
    public class JSONTokener
    +extends java.lang.Object
    +
    A JSONTokener takes a source string and extracts characters and tokens from + it. It is used by the JSONObject and JSONArray constructors to parse + JSON source strings.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONTokener(java.io.InputStream inputStream) +
      Construct a JSONTokener from an InputStream.
      +
      JSONTokener(java.io.Reader reader) +
      Construct a JSONTokener from a Reader.
      +
      JSONTokener(java.lang.String s) +
      Construct a JSONTokener from a string.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidback() +
      Back up one character.
      +
      static intdehexchar(char c) +
      Get the hex value of a character (base16).
      +
      booleanend() 
      booleanmore() +
      Determine if the source string still contains characters that next() + can consume.
      +
      charnext() +
      Get the next character in the source string.
      +
      charnext(char c) +
      Consume the next character, and check that it matches a specified + character.
      +
      java.lang.Stringnext(int n) +
      Get the next n characters.
      +
      charnextClean() +
      Get the next char in the string, skipping whitespace.
      +
      java.lang.StringnextString(char quote) +
      Return the characters up to the next close quote character.
      +
      java.lang.StringnextTo(char delimiter) +
      Get the text up but not including the specified character or the + end of line, whichever comes first.
      +
      java.lang.StringnextTo(java.lang.String delimiters) +
      Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
      +
      java.lang.ObjectnextValue() +
      Get the next value.
      +
      charskipTo(char to) +
      Skip characters until the next character is the requested character.
      +
      JSONExceptionsyntaxError(java.lang.String message) +
      Make a JSONException to signal a syntax error.
      +
      java.lang.StringtoString() +
      Make a printable string of this JSONTokener.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.io.Reader reader)
        +
        Construct a JSONTokener from a Reader.
        +
        Parameters:
        reader - A reader.
        +
      • +
      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.io.InputStream inputStream)
        +            throws JSONException
        +
        Construct a JSONTokener from an InputStream.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.lang.String s)
        +
        Construct a JSONTokener from a string.
        +
        Parameters:
        s - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        back

        +
        public void back()
        +          throws JSONException
        +
        Back up one character. This provides a sort of lookahead capability, + so that you can test for a digit or letter before attempting to parse + the next number or identifier.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        dehexchar

        +
        public static int dehexchar(char c)
        +
        Get the hex value of a character (base16).
        +
        Parameters:
        c - A character between '0' and '9' or between 'A' and 'F' or + between 'a' and 'f'.
        +
        Returns:
        An int between 0 and 15, or -1 if c was not a hex digit.
        +
      • +
      + + + +
        +
      • +

        end

        +
        public boolean end()
        +
      • +
      + + + +
        +
      • +

        more

        +
        public boolean more()
        +             throws JSONException
        +
        Determine if the source string still contains characters that next() + can consume.
        +
        Returns:
        true if not yet at the end of the source.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        next

        +
        public char next()
        +          throws JSONException
        +
        Get the next character in the source string.
        +
        Returns:
        The next character, or 0 if past the end of the source string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        next

        +
        public char next(char c)
        +          throws JSONException
        +
        Consume the next character, and check that it matches a specified + character.
        +
        Parameters:
        c - The character to match.
        +
        Returns:
        The character.
        +
        Throws:
        +
        JSONException - if the character does not match.
        +
      • +
      + + + +
        +
      • +

        next

        +
        public java.lang.String next(int n)
        +                      throws JSONException
        +
        Get the next n characters.
        +
        Parameters:
        n - The number of characters to take.
        +
        Returns:
        A string of n characters.
        +
        Throws:
        +
        JSONException - Substring bounds error if there are not + n characters remaining in the source string.
        +
      • +
      + + + +
        +
      • +

        nextClean

        +
        public char nextClean()
        +               throws JSONException
        +
        Get the next char in the string, skipping whitespace.
        +
        Returns:
        A character, or 0 if there are no more characters.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextString

        +
        public java.lang.String nextString(char quote)
        +                            throws JSONException
        +
        Return the characters up to the next close quote character. + Backslash processing is done. The formal JSON format does not + allow strings in single quotes, but an implementation is allowed to + accept them.
        +
        Parameters:
        quote - The quoting character, either + " (double quote) or + ' (single quote).
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException - Unterminated string.
        +
      • +
      + + + +
        +
      • +

        nextTo

        +
        public java.lang.String nextTo(char delimiter)
        +                        throws JSONException
        +
        Get the text up but not including the specified character or the + end of line, whichever comes first.
        +
        Parameters:
        delimiter - A delimiter character.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextTo

        +
        public java.lang.String nextTo(java.lang.String delimiters)
        +                        throws JSONException
        +
        Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
        +
        Parameters:
        delimiters - A set of delimiter characters.
        +
        Returns:
        A string, trimmed.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextValue

        +
        public java.lang.Object nextValue()
        +                           throws JSONException
        +
        Get the next value. The value can be a Boolean, Double, Integer, + JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object.
        +
        Returns:
        An object.
        +
        Throws:
        +
        JSONException - If syntax error.
        +
      • +
      + + + +
        +
      • +

        skipTo

        +
        public char skipTo(char to)
        +            throws JSONException
        +
        Skip characters until the next character is the requested character. + If the requested character is not found, no characters are skipped.
        +
        Parameters:
        to - A character to skip to.
        +
        Returns:
        The requested character, or zero if the requested character + is not found.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        syntaxError

        +
        public JSONException syntaxError(java.lang.String message)
        +
        Make a JSONException to signal a syntax error.
        +
        Parameters:
        message - The error message.
        +
        Returns:
        A JSONException object, suitable for throwing
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a printable string of this JSONTokener.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        " at {index} [character {character} line {line}]"
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.4/reference/org/json/JSONWriter.html new file mode 100644 index 000000000..f3ec23f54 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/JSONWriter.html @@ -0,0 +1,474 @@ + + + + + +JSONWriter (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONWriter

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONWriter
    • +
    +
  • +
+
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    JSONStringer
    +
    +
    +
    +
    public class JSONWriter
    +extends java.lang.Object
    +
    JSONWriter provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONWriter can produce one JSON text. +

    + A JSONWriter instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting a cascade style. For example,

    + new JSONWriter(myWriter)
    +     .object()
    +         .key("JSON")
    +         .value("Hello, World!")
    +     .endObject();
    which writes
    + {"JSON":"Hello, World!"}
    +

    + The first method called must be array or object. + There are no methods for adding commas or colons. JSONWriter adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

    + This can sometimes be easier than using a JSONObject to build a string.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONWriter(java.io.Writer w) +
      Make a fresh JSONWriter.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      JSONWriterarray() +
      Begin appending a new array.
      +
      JSONWriterendArray() +
      End an array.
      +
      JSONWriterendObject() +
      End an object.
      +
      JSONWriterkey(java.lang.String string) +
      Append a key.
      +
      JSONWriterobject() +
      Begin appending a new object.
      +
      JSONWritervalue(boolean b) +
      Append either the value true or the value + false.
      +
      JSONWritervalue(double d) +
      Append a double value.
      +
      JSONWritervalue(long l) +
      Append a long value.
      +
      JSONWritervalue(java.lang.Object object) +
      Append an object value.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONWriter

        +
        public JSONWriter(java.io.Writer w)
        +
        Make a fresh JSONWriter. It can be used to build one JSON text.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        array

        +
        public JSONWriter array()
        +                 throws JSONException
        +
        Begin appending a new array. All values until the balancing + endArray will be appended to this array. The + endArray method must be called to mark the array's end.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
        +
      • +
      + + + +
        +
      • +

        endArray

        +
        public JSONWriter endArray()
        +                    throws JSONException
        +
        End an array. This method most be called to balance calls to + array.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If incorrectly nested.
        +
      • +
      + + + +
        +
      • +

        endObject

        +
        public JSONWriter endObject()
        +                     throws JSONException
        +
        End an object. This method most be called to balance calls to + object.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If incorrectly nested.
        +
      • +
      + + + +
        +
      • +

        key

        +
        public JSONWriter key(java.lang.String string)
        +               throws JSONException
        +
        Append a key. The key will be associated with the next value. In an + object, every value must be preceded by a key.
        +
        Parameters:
        string - A key string.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the key is out of place. For example, keys + do not belong in arrays or if the key is null.
        +
      • +
      + + + +
        +
      • +

        object

        +
        public JSONWriter object()
        +                  throws JSONException
        +
        Begin appending a new object. All keys and values until the balancing + endObject will be appended to this object. The + endObject method must be called to mark the object's end.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
        +
      • +
      + + + +
        +
      • +

        value

        +
        public JSONWriter value(boolean b)
        +                 throws JSONException
        +
        Append either the value true or the value + false.
        +
        Parameters:
        b - A boolean.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        value

        +
        public JSONWriter value(double d)
        +                 throws JSONException
        +
        Append a double value.
        +
        Parameters:
        d - A double.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the number is not finite.
        +
      • +
      + + + + + + + +
        +
      • +

        value

        +
        public JSONWriter value(java.lang.Object object)
        +                 throws JSONException
        +
        Append an object value.
        +
        Parameters:
        object - The object to append. It can be null, or a Boolean, Number, + String, JSONObject, or JSONArray, or an object that implements JSONString.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the value is out of sequence.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/XML.html b/distribution/json4processing-0.1.4/reference/org/json/XML.html new file mode 100644 index 000000000..7c135e549 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/XML.html @@ -0,0 +1,552 @@ + + + + + +XML (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class XML

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.XML
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class XML
    +extends java.lang.Object
    +
    This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.CharacterAMP +
      The Character '&'.
      +
      static java.lang.CharacterAPOS +
      The Character '''.
      +
      static java.lang.CharacterBANG +
      The Character '!'.
      +
      static java.lang.CharacterEQ +
      The Character '='.
      +
      static java.lang.CharacterGT +
      The Character '>'.
      +
      static java.lang.CharacterLT +
      The Character '<'.
      +
      static java.lang.CharacterQUEST +
      The Character '?'.
      +
      static java.lang.CharacterQUOT +
      The Character '"'.
      +
      static java.lang.CharacterSLASH +
      The Character '/'.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      XML() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static java.lang.Stringescape(java.lang.String string) +
      Replace special characters with XML escapes:
      +
      static voidnoSpace(java.lang.String string) +
      Throw an exception if the string contains whitespace.
      +
      static java.lang.ObjectstringToValue(java.lang.String string) +
      Try to convert a string into a number, boolean, or null.
      +
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
      +
      static java.lang.StringtoString(java.lang.Object object) +
      Convert a JSONObject into a well-formed, element-normal XML string.
      +
      static java.lang.StringtoString(java.lang.Object object, + java.lang.String tagName) +
      Convert a JSONObject into a well-formed, element-normal XML string.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        AMP

        +
        public static final java.lang.Character AMP
        +
        The Character '&'.
        +
      • +
      + + + +
        +
      • +

        APOS

        +
        public static final java.lang.Character APOS
        +
        The Character '''.
        +
      • +
      + + + +
        +
      • +

        BANG

        +
        public static final java.lang.Character BANG
        +
        The Character '!'.
        +
      • +
      + + + +
        +
      • +

        EQ

        +
        public static final java.lang.Character EQ
        +
        The Character '='.
        +
      • +
      + + + +
        +
      • +

        GT

        +
        public static final java.lang.Character GT
        +
        The Character '>'.
        +
      • +
      + + + +
        +
      • +

        LT

        +
        public static final java.lang.Character LT
        +
        The Character '<'.
        +
      • +
      + + + +
        +
      • +

        QUEST

        +
        public static final java.lang.Character QUEST
        +
        The Character '?'.
        +
      • +
      + + + +
        +
      • +

        QUOT

        +
        public static final java.lang.Character QUOT
        +
        The Character '"'.
        +
      • +
      + + + +
        +
      • +

        SLASH

        +
        public static final java.lang.Character SLASH
        +
        The Character '/'.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XML

        +
        public XML()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        escape

        +
        public static java.lang.String escape(java.lang.String string)
        +
        Replace special characters with XML escapes: +
        + & (ampersand) is replaced by &amp;
        + < (less than) is replaced by &lt;
        + > (greater than) is replaced by &gt;
        + " (double quote) is replaced by &quot;
        + 
        +
        Parameters:
        string - The string to be escaped.
        +
        Returns:
        The escaped string.
        +
      • +
      + + + +
        +
      • +

        noSpace

        +
        public static void noSpace(java.lang.String string)
        +                    throws JSONException
        +
        Throw an exception if the string contains whitespace. + Whitespace is not allowed in tagNames and attributes.
        +
        Parameters:
        string -
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        stringToValue

        +
        public static java.lang.Object stringToValue(java.lang.String string)
        +
        Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. This is much less ambitious than + JSONObject.stringToValue, especially because it does not attempt to + convert plus forms, octal forms, hex forms, or E forms lacking decimal + points.
        +
        Parameters:
        string - A String.
        +
        Returns:
        A simple JSON value.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. Some information may be lost in this transformation + because JSON is a data format and XML is a document format. XML uses + elements, attributes, and content text, while JSON uses unordered + collections of name/value pairs and arrays of values. JSON does not + does not like to distinguish between elements and attributes. + Sequences of similar elements are represented as JSONArrays. Content + text may be placed in a "content" member. Comments, prologs, DTDs, and + <[ [ ]]> are ignored.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(java.lang.Object object)
        +                                 throws JSONException
        +
        Convert a JSONObject into a well-formed, element-normal XML string.
        +
        Parameters:
        object - A JSONObject.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(java.lang.Object object,
        +                        java.lang.String tagName)
        +                                 throws JSONException
        +
        Convert a JSONObject into a well-formed, element-normal XML string.
        +
        Parameters:
        object - A JSONObject.
        tagName - The optional name of the enclosing tag.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.4/reference/org/json/XMLTokener.html new file mode 100644 index 000000000..3ea2d2273 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/XMLTokener.html @@ -0,0 +1,433 @@ + + + + + +XMLTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class XMLTokener

+
+
+ +
+
    +
  • +
    +
    +
    public class XMLTokener
    +extends JSONTokener
    +
    The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.util.HashMapentity +
      The table of entity values.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      XMLTokener(java.lang.String s) +
      Construct an XMLTokener from a string.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        entity

        +
        public static final java.util.HashMap entity
        +
        The table of entity values. It initially contains Character values for + amp, apos, gt, lt, quot.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XMLTokener

        +
        public XMLTokener(java.lang.String s)
        +
        Construct an XMLTokener from a string.
        +
        Parameters:
        s - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        nextCDATA

        +
        public java.lang.String nextCDATA()
        +                           throws JSONException
        +
        Get the text in the CDATA block.
        +
        Returns:
        The string up to the ]]>.
        +
        Throws:
        +
        JSONException - If the ]]> is not found.
        +
      • +
      + + + +
        +
      • +

        nextContent

        +
        public java.lang.Object nextContent()
        +                             throws JSONException
        +
        Get the next XML outer token, trimming whitespace. There are two kinds + of tokens: the '<' character which begins a markup tag, and the content + text between markup tags.
        +
        Returns:
        A string, or a '<' Character, or null if there is no more + source text.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextEntity

        +
        public java.lang.Object nextEntity(char ampersand)
        +                            throws JSONException
        +
        Return the next entity. These entities are translated to Characters: + & ' > < ".
        +
        Parameters:
        ampersand - An ampersand character.
        +
        Returns:
        A Character or an entity String if the entity is not recognized.
        +
        Throws:
        +
        JSONException - If missing ';' in XML entity.
        +
      • +
      + + + +
        +
      • +

        nextMeta

        +
        public java.lang.Object nextMeta()
        +                          throws JSONException
        +
        Returns the next XML meta token. This is used for skipping over + and structures.
        +
        Returns:
        Syntax characters (< > / = ! ?) are returned as + Character, and strings and names are returned as Boolean. We don't care + what the values actually are.
        +
        Throws:
        +
        JSONException - If a string is not properly closed or if the XML + is badly structured.
        +
      • +
      + + + +
        +
      • +

        nextToken

        +
        public java.lang.Object nextToken()
        +                           throws JSONException
        +
        Get the next XML Token. These tokens are found inside of angle + brackets. It may be one of these characters: / > = ! ? or it + may be a string wrapped in single quotes or double quotes, or it may be a + name.
        +
        Returns:
        a String or a Character.
        +
        Throws:
        +
        JSONException - If the XML is not well formed.
        +
      • +
      + + + +
        +
      • +

        skipPast

        +
        public boolean skipPast(java.lang.String to)
        +                 throws JSONException
        +
        Skip characters until past the requested string. + If it is not found, we are left at the end of the source with a result of false.
        +
        Parameters:
        to - A string to skip past.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/package-frame.html b/distribution/json4processing-0.1.4/reference/org/json/package-frame.html new file mode 100644 index 000000000..21d0364d2 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/package-frame.html @@ -0,0 +1,39 @@ + + + + + +org.json (Javadocs: json4processing) + + + + +

org.json

+ + + diff --git a/distribution/json4processing-0.1.4/reference/org/json/package-summary.html b/distribution/json4processing-0.1.4/reference/org/json/package-summary.html new file mode 100644 index 000000000..e46064b17 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/package-summary.html @@ -0,0 +1,248 @@ + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + +
+

Package org.json

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    JSONString +
    The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    CDL +
    This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
    +
    Cookie +
    Convert a web browser cookie specification to a JSONObject and back.
    +
    CookieList +
    Convert a web browser cookie list string to a JSONObject and back.
    +
    HTTP +
    Convert an HTTP header to a JSONObject and back.
    +
    HTTPTokener +
    The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
    +
    JSONArray +
    A JSONArray is an ordered sequence of values.
    +
    JSONML +
    This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
    +
    JSONObject +
    A JSONObject is an unordered collection of name/value pairs.
    +
    JSONStringer +
    JSONStringer provides a quick and convenient way of producing JSON text.
    +
    JSONTokener +
    A JSONTokener takes a source string and extracts characters and tokens from + it.
    +
    JSONWriter +
    JSONWriter provides a quick and convenient way of producing JSON text.
    +
    XML +
    This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
    +
    XMLTokener +
    The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    JSONException +
    The JSONException is thrown by the JSON.org classes when things are amiss.
    +
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/org/json/package-tree.html b/distribution/json4processing-0.1.4/reference/org/json/package-tree.html new file mode 100644 index 000000000..24c51c5fb --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/org/json/package-tree.html @@ -0,0 +1,152 @@ + + + + + +org.json Class Hierarchy (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.json

+
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/overview-tree.html b/distribution/json4processing-0.1.4/reference/overview-tree.html new file mode 100644 index 000000000..d8f18eb9a --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/overview-tree.html @@ -0,0 +1,156 @@ + + + + + +Class Hierarchy (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/package-list b/distribution/json4processing-0.1.4/reference/package-list new file mode 100644 index 000000000..ccf841806 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/package-list @@ -0,0 +1 @@ +org.json diff --git a/distribution/json4processing-0.1.4/reference/resources/background.gif b/distribution/json4processing-0.1.4/reference/resources/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..f471940fde2f39ef8943a6af9569bcf986b1579b GIT binary patch literal 2313 zcmV+k3HJ6!Nk%w1VKM-40OkMy00030|NlK(aXwsfKV5S}VtGJbbVOr%L0@%CZH88Q zl{{NzcR^uxNo<2iYk@pjY)*5FJz8x~bc{)B zfk z+1T6M-s9WdW8dcJ-wO*3@9+W*5AY543-j^$^!EPz_4eHZ2#>)41`h@dc!2OAgN6$a zCS2I?;lqgx6IR4nkpTe;1RN0f=zxMq2O=q`94V5d$&e>Unta)^<;;^G3>e7yp=ZvW z6DIW3xpSvaogXF?_4%`@(V;s}NR^5J!3hrtJV@1QRV&r5S*L!zYE|rss${iFkg&!? zTN5V#)~=bmMorwgZsEpdOE)iExo+FO-8;8Kga{=HbSQCnF=E6W3?o*|ID%uwi5**> zJXy127Y9m+=HQ|PhXWi+xNwoWv}n_%Pq%(e+H~mGqhq5kv4Mo|-n~g|7!F*xZ{xv< zCpXS~dGg^IGK?4@J-T%b(XnUHFul6n<@2&4)zzyO2) z3Q8`i0+UKY*`$}e9mmp;tg*))`|PsK1|hAo%u0K$vDwm4gaSkm0j{`26k#qAKmbuhxZ#cquDR>B zD{s8+&TH-uNg$C#68QG}1HMBHfrP&L@@w$F_!itRzXdCN@V|LDAu%3!IDtq1#1UV7 z#1RxvT=B(DWbCoU5l=ia$Pp`Hgb_?Mp@hmtxZDI2N-)v#$}PXVvdm1d>@v(v`0TUJ zF)Pu89(q`zv=w^nVTIF3@3BYIPA}c`(@ZCAwbNBEt@PDUKe5CTR8aB66IE1!w%Amt zy+jpcn~k>GZpVFg+H6x{_uOksvBlq0OyT$6TyQZ37k(cOxZr|JEx1sGm<(M9gH z-~PMqyn|tT=))UN`|-FFFUA#KToK0fUOaz=7}Z~KeHhVC&%O27cTfHQ^WBU8z4p&T zp#>D|V}XShTD;Hx745Iz{`>K-Z$A|7!*Boo{mY;G21vjH8t{M!OrQc6$iN0V@PQDF zpadsK!3tXNf*8!81~qnXWuHZ)kytd=_y+ADWvw31ouV;CdZ#ya*(l7-A-C-Y^+iit8O zBy3*`Ls$|5Hn4m_^I^|C7{m7EFn|5vTk;|oywIgCc9Bb*=L+Y$)M>9GC<|HGs@6NB zHLY%03!dDf=eDRt2O6lVSFRcsuWZEwU?=z$CZ0W?#VJfdN>HG(l%oKpyiftJc|Y)xkjSJYCrQal-0PC~()T9xwF!Jf zVi1UA#3BBbh(i8r5&v#Pz!cF41KjbCc?4u2@@Q~oKLirt2TM30;y6b+zyX2`Yl9u; z`0$3;v0-YUp&7NdPT#q`cZlbij$jvbRk6R>8g*>}*b9E+WDwmpHAAxYzyT aU_pX{M6b8i>#Dq3onfZy}_nli%!Q$ZV%e&!tN2 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 YpWXKgmku8Vj|K)Vje`mzEKCg608Q#dYybcN literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.4/reference/serialized-form.html b/distribution/json4processing-0.1.4/reference/serialized-form.html new file mode 100644 index 000000000..42c7fec9c --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/serialized-form.html @@ -0,0 +1,142 @@ + + + + + +Serialized Form (Javadocs: json4processing) + + + + + + + + + + +
+

Serialized Form

+
+
+
    +
  • +

    Package org.json

    +
      +
    • + + +

      Class org.json.JSONException extends java.lang.Exception implements Serializable

      +
      +
      serialVersionUID:
      +
      0L
      +
      +
        +
      • + + +

        Serialized Fields

        +
          +
        • +

          cause

          +
          java.lang.Throwable cause
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.4/reference/stylesheet.css b/distribution/json4processing-0.1.4/reference/stylesheet.css new file mode 100644 index 000000000..1f18ea6a7 --- /dev/null +++ b/distribution/json4processing-0.1.4/reference/stylesheet.css @@ -0,0 +1,310 @@ +/* Javadoc style sheet */ +/* Define colors, fonts and other style attributes here to override the defaults */ +/* processingLibs style by andreas schlegel, sojamo */ + + +body { + margin : 0; + padding : 0; + padding-left : 10px; + padding-right : 8px; + background-color : #FFFFFF; + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.7em; + font-weight : normal; + line-height : normal; + margin-bottom:30px; +} + + + + +/* Headings */ +h1, h2, h3, h4, h5, th { + font-family :Arial, Helvetica, sans-serif; + font-size:1.2em; +} + + +p { + font-size : 1em; + width:80%; +} + +pre, code { + font-family : "Courier New", Courier, monospace; + font-size : 12px; + line-height : normal; +} + + + +table { + border:0; + margin-bottom:10px; + margin-top:10px; +} + + +tr, td { + border-top: 0px solid; + border-left: 0px solid; + padding-top:8px; + padding-bottom:8px; +} + + + +hr { + border:0; + height:1px; + padding:0; + margin:0; + margin-bottom:4px; + +} + + + +dd, th, td, font { + font-size:1.0em; + line-height:1.0em; +} + + + +dt { + margin-bottom:0px; +} + + + +dd { + margin-top:2px; + margin-bottom:4px; +} + + + +a { + text-decoration: underline; + font-weight: normal; +} + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + +img { + border: 0px solid #000000; +} + + + +/* Navigation bar fonts */ +.NavBarCell1 { + border:0; +} + +.NavBarCell1Rev { + border:0; +} + +.NavBarFont1 { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + + +.NavBarFont1 b { + font-weight:normal; +} + + + +.NavBarFont1:after, .NavBarFont1Rev:after { + font-weight:normal; + content: " \\"; +} + + +.NavBarFont1Rev { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + +.NavBarFont1Rev b { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; + font-weight:normal; +} + +.NavBarCell2 { + font-family: Arial, Helvetica, sans-serif; +} + +.NavBarCell3 { + font-family: Arial, Helvetica, sans-serif; +} + + + +font.FrameItemFont { + font-family: Helvetica, Arial, sans-serif; + font-size:1.1em; + line-height:1.1em; +} + +font.FrameHeadingFont { + font-family: Helvetica, Arial, sans-serif; + line-height:32px; +} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { + font-family: Helvetica, Arial, sans-serif +} + + +.toggleList { + padding:0; + margin:0; + margin-top:12px; +} + +.toggleList dt { + font-weight:bold; + font-size:12px; + font-family:arial,sans-serif; + padding:0px; + margin:10px 0px 10px 0px; +} + +.toggleList dt span { + font-family: monospace; + padding:0; + margin:0; +} + + +.toggleList dd { + margin:0; + padding:0; +} + +html.isjs .toggleList dd { + display: none; +} + +.toggleList pre { + padding: 4px 4px 4px 4px; +} + + + + + +/* COLORS */ + +pre, code { + color: #000000; +} + + +body { + color : #333333; + background-color :#FFFFFF; +} + + +h1, h2, h3, h4, h5, h6 { + color:#555; +} + +a, +.toggleList dt { + color: #1a7eb0; +} + +a:hover, +a:active { + color: #1a7eb0; +} + +a:visited, +a:link:visited { + color: #1a7eb0; +} + +td,tr { + border-color: #999999; +} + +hr { + color:#999999; + background:#999999; +} + + +.TableHeadingColor { + background: #dcdcdc; + color: #555; +} + + +.TableSubHeadingColor { + background: #EEEEFF +} + +.TableRowColor { + background: #FFFFFF +} + + +.NavBarCell1 { + background-color:#dcdcdc; + color:#000; +} + +.NavBarCell1 a { + color:#333; +} + + +.NavBarCell1Rev { + background-color:transparent; +} + +.NavBarFont1 { + color:#333; +} + + +.NavBarFont1Rev { + color:#fff; +} + +.NavBarCell2 { + background-color:#999; +} + +.NavBarCell2 a { + color:#fff; +} + + + +.NavBarCell3 { + background-color:#dcdcdc; +} + diff --git a/distribution/json4processing-0.1.4/stylesheet.css b/distribution/json4processing-0.1.4/stylesheet.css new file mode 100644 index 000000000..646d20063 --- /dev/null +++ b/distribution/json4processing-0.1.4/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} diff --git a/resources/build.properties b/resources/build.properties index 601fe77c3..8a623648d 100644 --- a/resources/build.properties +++ b/resources/build.properties @@ -1,124 +1,124 @@ -# Create libraries for the open source programming language -# and environment processing (http://www.processing.org) -# -# Customize the build properties to make the ant-build-process -# work for your environment. How? Please read the comments below. -# -# The default properties are set for OSX, for Windows-settings -# please refer to comments made under (1) and (2). - - - -# (1) -# Where is your processing sketchbook located? -# If you are not sure, check the sketchbook location in your -# processing application preferences. -# ${user.home} points the compiler to your home directory -# For windows the default path to your sketchbook would be -# ${user.home}/My Documents/Processing (make adjustments below). - -#sketchbook.location=/media/Contents/sketchbook -sketchbook.location=${user.home}/Documents/Processing - - - -# (2) -# Where are the jar files located that are required for compiling -# your library such as e.g. core.jar? -# by default the local classpath location points to folder libs -# inside eclipse's workspace (by default found in your home directory). -# For Windows the default path would be ${user.home}/workspace/libs -# (make adjustments below) - -#classpath.local.location=/media/Contents/workspace_projects/libs -classpath.local.location=${user.home}/workspace/libs - - - -# For OSX users. -# The following path will direct you into processing's -# application source code folder in case you put processing inside your -# Applications folder. Uncommenting the line below will overwrite the -# classpath.local.location from above. - -# classpath.local.location=/Applications/Processing.app/Contents/Resources/Java/ - - -# Add all jar files that are required for compiling your project -# to the local and project classpath, use a comma as delimiter. -# These jar files must be inside your classpath.local.location folder. - -classpath.local.include=core.jar - - -# Add processing's libraries folder to the classpath. -# If you don't need to include the libraries folder to your classpath, -# comment out the following line. - -classpath.libraries.location=${sketchbook.location}/libraries - - - -# (3) set the java version that should be used to compile your library. - -java.target.version=1.6 - - -# set the description of the ant build.xml file - -ant.description=processingLibs. ant build file. - - - -# (4) -# project details. -# Give your library a name. - -project.name=json4processing - - -# use normal or fast as value for project.compile -# (fast will only compile the project into your sketchbook, -# using normal as property will compile the distribution including the -# javadoc-reference and all web-files - the compile process here -# takes longer) - -project.compile=normal - -# all files compiled with project.compile=normal are stored -# in folder distribution - - - -# (5) -# the following items are properties that will be used to -# make changes to the html document template. values of properties -# will be implemented ito the document automatically. - -# set the current version of your project. - -project.version=0.1.3 -project.copyright=(c) 2011 -project.dependencies=? -project.keywords=? - -author.name=Andreas Goransson -author.url= - -tested.platform=linux, windows -tested.processingversion=1.5.1 - -# recommendations for storing your source code online are: code.google or github. - -source.host=github -source.url=https://github.com/agoransson/JSON-processing -source.repository=https://github.com/agoransson/JSON-processing - - -# include javadoc references into your project's javadoc - -javadoc.java.href= -#http://java.sun.com/javase/6/docs/api/ -javadoc.processing.href= -#http://dev.processing.org/reference/everything/javadoc/ - +# Create libraries for the open source programming language +# and environment processing (http://www.processing.org) +# +# Customize the build properties to make the ant-build-process +# work for your environment. How? Please read the comments below. +# +# The default properties are set for OSX, for Windows-settings +# please refer to comments made under (1) and (2). + + + +# (1) +# Where is your processing sketchbook located? +# If you are not sure, check the sketchbook location in your +# processing application preferences. +# ${user.home} points the compiler to your home directory +# For windows the default path to your sketchbook would be +# ${user.home}/My Documents/Processing (make adjustments below). + +#sketchbook.location=/media/Contents/sketchbook +sketchbook.location=${user.home}/Documents/Processing + + + +# (2) +# Where are the jar files located that are required for compiling +# your library such as e.g. core.jar? +# by default the local classpath location points to folder libs +# inside eclipse's workspace (by default found in your home directory). +# For Windows the default path would be ${user.home}/workspace/libs +# (make adjustments below) + +#classpath.local.location=/media/Contents/workspace_projects/libs +classpath.local.location=${user.home}/workspace/libs + + + +# For OSX users. +# The following path will direct you into processing's +# application source code folder in case you put processing inside your +# Applications folder. Uncommenting the line below will overwrite the +# classpath.local.location from above. + +# classpath.local.location=/Applications/Processing.app/Contents/Resources/Java/ + + +# Add all jar files that are required for compiling your project +# to the local and project classpath, use a comma as delimiter. +# These jar files must be inside your classpath.local.location folder. + +classpath.local.include=core.jar + + +# Add processing's libraries folder to the classpath. +# If you don't need to include the libraries folder to your classpath, +# comment out the following line. + +classpath.libraries.location=${sketchbook.location}/libraries + + + +# (3) set the java version that should be used to compile your library. + +java.target.version=1.6 + + +# set the description of the ant build.xml file + +ant.description=processingLibs. ant build file. + + + +# (4) +# project details. +# Give your library a name. + +project.name=json4processing + + +# use normal or fast as value for project.compile +# (fast will only compile the project into your sketchbook, +# using normal as property will compile the distribution including the +# javadoc-reference and all web-files - the compile process here +# takes longer) + +project.compile=normal + +# all files compiled with project.compile=normal are stored +# in folder distribution + + + +# (5) +# the following items are properties that will be used to +# make changes to the html document template. values of properties +# will be implemented ito the document automatically. + +# set the current version of your project. + +project.version=0.1.4 +project.copyright=(c) 2011 +project.dependencies=? +project.keywords=? + +author.name=Andreas Goransson +author.url= + +tested.platform=linux, windows +tested.processingversion=1.5.1 + +# recommendations for storing your source code online are: code.google or github. + +source.host=github +source.url=https://github.com/agoransson/JSON-processing +source.repository=https://github.com/agoransson/JSON-processing + + +# include javadoc references into your project's javadoc + +javadoc.java.href= +#http://java.sun.com/javase/6/docs/api/ +javadoc.processing.href= +#http://dev.processing.org/reference/everything/javadoc/ + diff --git a/src/org/json/JSONArray.java b/src/org/json/JSONArray.java index 0f82156ef..241482877 100644 --- a/src/org/json/JSONArray.java +++ b/src/org/json/JSONArray.java @@ -1,932 +1,943 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -import java.io.IOException; -import java.io.Writer; -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; - -/** - * A JSONArray is an ordered sequence of values. Its external text form is a - * string wrapped in square brackets with commas separating the values. The - * internal form is an object having get and opt - * methods for accessing the values by index, and put methods for - * adding or replacing values. The values can be any of these types: - * Boolean, JSONArray, JSONObject, - * Number, String, or the - * JSONObject.NULL object. - *

- * The constructor can convert a JSON text into a Java object. The - * toString method converts to JSON text. - *

- * A get method returns a value if one can be found, and throws an - * exception if one cannot be found. An opt method returns a - * default value instead of throwing an exception, and so is useful for - * obtaining optional values. - *

- * The generic get() and opt() methods return an - * object which you can cast or query for type. There are also typed - * get and opt methods that do type checking and type - * coercion for you. - *

- * The texts produced by the toString methods strictly conform to - * JSON syntax rules. The constructors are more forgiving in the texts they will - * accept: - *

    - *
  • An extra , (comma) may appear just - * before the closing bracket.
  • - *
  • The null value will be inserted when there - * is , (comma) elision.
  • - *
  • Strings may be quoted with ' (single - * quote).
  • - *
  • Strings do not need to be quoted at all if they do not begin with a quote - * or single quote, and if they do not contain leading or trailing spaces, - * and if they do not contain any of these characters: - * { } [ ] / \ : , = ; # and if they do not look like numbers - * and if they are not the reserved words true, - * false, or null.
  • - *
  • Values can be separated by ; (semicolon) as - * well as by , (comma).
  • - *
  • Numbers may have the - * 0x- (hex) prefix.
  • - *
- - * @author JSON.org - * @version 2011-08-25 - */ -public class JSONArray { - - - /** - * The arrayList where the JSONArray's properties are kept. - */ - private ArrayList myArrayList; - - - /** - * Construct an empty JSONArray. - */ - public JSONArray() { - this.myArrayList = new ArrayList(); - } - - /** - * Construct a JSONArray from a JSONTokener. - * @param x A JSONTokener - * @throws JSONException If there is a syntax error. - */ - public JSONArray(JSONTokener x) throws JSONException { - this(); - if (x.nextClean() != '[') { - throw x.syntaxError("A JSONArray text must start with '['"); - } - if (x.nextClean() != ']') { - x.back(); - for (;;) { - if (x.nextClean() == ',') { - x.back(); - this.myArrayList.add(JSONObject.NULL); - } else { - x.back(); - this.myArrayList.add(x.nextValue()); - } - switch (x.nextClean()) { - case ';': - case ',': - if (x.nextClean() == ']') { - return; - } - x.back(); - break; - case ']': - return; - default: - throw x.syntaxError("Expected a ',' or ']'"); - } - } - } - } - - - /** - * Construct a JSONArray from a source JSON text. - * @param source A string that begins with - * [ (left bracket) - * and ends with ] (right bracket). - * @throws JSONException If there is a syntax error. - */ - public JSONArray(String source) throws JSONException { - this(new JSONTokener(source)); - } - - - /** - * Construct a JSONArray from a Collection. - * @param collection A Collection. - */ - public JSONArray(Collection collection) { - this.myArrayList = new ArrayList(); - if (collection != null) { - Iterator iter = collection.iterator(); - while (iter.hasNext()) { - this.myArrayList.add(JSONObject.wrap(iter.next())); - } - } - } - - - /** - * Construct a JSONArray from an array - * @throws JSONException If not an array. - */ - public JSONArray(Object array) /*throws JSONException*/ { - this(); - if (array.getClass().isArray()) { - int length = Array.getLength(array); - for (int i = 0; i < length; i += 1) { - this.put(JSONObject.wrap(Array.get(array, i))); - } - } else { -// throw new JSONException( -//"JSONArray initial value should be a string or collection or array."); - System.out.println("JSONArray initial value should be a string or collection or array."); - } - } - - - /** - * Get the object value associated with an index. - * @param index - * The index must be between 0 and length() - 1. - * @return An object value. - * @throws JSONException If there is no value for the index. - */ - public Object get(int index) throws JSONException { - Object object = opt(index); - if (object == null) { - throw new JSONException("JSONArray[" + index + "] not found."); - } - return object; - } - - - /** - * Get the boolean value associated with an index. - * The string values "true" and "false" are converted to boolean. - * - * @param index The index must be between 0 and length() - 1. - * @return The truth. - * @throws JSONException If there is no value for the index or if the - * value is not convertible to boolean. - */ - public boolean getBoolean(int index) throws JSONException { - Object object = get(index); - if (object.equals(Boolean.FALSE) || - (object instanceof String && - ((String)object).equalsIgnoreCase("false"))) { - return false; - } else if (object.equals(Boolean.TRUE) || - (object instanceof String && - ((String)object).equalsIgnoreCase("true"))) { - return true; - } - throw new JSONException("JSONArray[" + index + "] is not a boolean."); - } - - - /** - * Get the double value associated with an index. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - * @throws JSONException If the key is not found or if the value cannot - * be converted to a number. - */ - public double getDouble(int index) throws JSONException { - Object object = get(index); - try { - return object instanceof Number ? - ((Number)object).doubleValue() : - Double.parseDouble((String)object); - } catch (Exception e) { - throw new JSONException("JSONArray[" + index + - "] is not a number."); - } - } - - - /** - * Get the int value associated with an index. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - * @throws JSONException If the key is not found or if the value is not a number. - */ - public int getInt(int index) throws JSONException { - Object object = get(index); - try { - return object instanceof Number ? - ((Number)object).intValue() : - Integer.parseInt((String)object); - } catch (Exception e) { - throw new JSONException("JSONArray[" + index + - "] is not a number."); - } - } - - - /** - * Get the JSONArray associated with an index. - * @param index The index must be between 0 and length() - 1. - * @return A JSONArray value. - * @throws JSONException If there is no value for the index. or if the - * value is not a JSONArray - */ - public JSONArray getJSONArray(int index) throws JSONException { - Object object = get(index); - if (object instanceof JSONArray) { - return (JSONArray)object; - } - throw new JSONException("JSONArray[" + index + - "] is not a JSONArray."); - } - - - /** - * Get the JSONObject associated with an index. - * @param index subscript - * @return A JSONObject value. - * @throws JSONException If there is no value for the index or if the - * value is not a JSONObject - */ - public JSONObject getJSONObject(int index) throws JSONException { - Object object = get(index); - if (object instanceof JSONObject) { - return (JSONObject)object; - } - throw new JSONException("JSONArray[" + index + - "] is not a JSONObject."); - } - - - /** - * Get the long value associated with an index. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - * @throws JSONException If the key is not found or if the value cannot - * be converted to a number. - */ - public long getLong(int index) throws JSONException { - Object object = get(index); - try { - return object instanceof Number ? - ((Number)object).longValue() : - Long.parseLong((String)object); - } catch (Exception e) { - throw new JSONException("JSONArray[" + index + - "] is not a number."); - } - } - - - /** - * Get the string associated with an index. - * @param index The index must be between 0 and length() - 1. - * @return A string value. - * @throws JSONException If there is no string value for the index. - */ - public String getString(int index) throws JSONException { - Object object = get(index); - if (object instanceof String) { - return (String)object; - } - throw new JSONException("JSONArray[" + index + "] not a string."); - } - - - /** - * Determine if the value is null. - * @param index The index must be between 0 and length() - 1. - * @return true if the value at the index is null, or if there is no value. - */ - public boolean isNull(int index) { - return JSONObject.NULL.equals(opt(index)); - } - - - /** - * Make a string from the contents of this JSONArray. The - * separator string is inserted between each element. - * Warning: This method assumes that the data structure is acyclical. - * @param separator A string that will be inserted between the elements. - * @return a string. - * @throws JSONException If the array contains an invalid number. - */ - public String join(String separator) throws JSONException { - int len = length(); - StringBuffer sb = new StringBuffer(); - - for (int i = 0; i < len; i += 1) { - if (i > 0) { - sb.append(separator); - } - sb.append(JSONObject.valueToString(this.myArrayList.get(i))); - } - return sb.toString(); - } - - - /** - * Get the number of elements in the JSONArray, included nulls. - * - * @return The length (or size). - */ - public int length() { - return this.myArrayList.size(); - } - - - /** - * Get the optional object value associated with an index. - * @param index The index must be between 0 and length() - 1. - * @return An object value, or null if there is no - * object at that index. - */ - public Object opt(int index) { - return (index < 0 || index >= length()) ? - null : this.myArrayList.get(index); - } - - - /** - * Get the optional boolean value associated with an index. - * It returns false if there is no value at that index, - * or if the value is not Boolean.TRUE or the String "true". - * - * @param index The index must be between 0 and length() - 1. - * @return The truth. - */ - public boolean optBoolean(int index) { - return optBoolean(index, false); - } - - - /** - * Get the optional boolean value associated with an index. - * It returns the defaultValue if there is no value at that index or if - * it is not a Boolean or the String "true" or "false" (case insensitive). - * - * @param index The index must be between 0 and length() - 1. - * @param defaultValue A boolean default. - * @return The truth. - */ - public boolean optBoolean(int index, boolean defaultValue) { - try { - return getBoolean(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional double value associated with an index. - * NaN is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - */ - public double optDouble(int index) { - return optDouble(index, Double.NaN); - } - - - /** - * Get the optional double value associated with an index. - * The defaultValue is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index subscript - * @param defaultValue The default value. - * @return The value. - */ - public double optDouble(int index, double defaultValue) { - try { - return getDouble(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional int value associated with an index. - * Zero is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - */ - public int optInt(int index) { - return optInt(index, 0); - } - - - /** - * Get the optional int value associated with an index. - * The defaultValue is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * @param index The index must be between 0 and length() - 1. - * @param defaultValue The default value. - * @return The value. - */ - public int optInt(int index, int defaultValue) { - try { - return getInt(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional JSONArray associated with an index. - * @param index subscript - * @return A JSONArray value, or null if the index has no value, - * or if the value is not a JSONArray. - */ - public JSONArray optJSONArray(int index) { - Object o = opt(index); - return o instanceof JSONArray ? (JSONArray)o : null; - } - - - /** - * Get the optional JSONObject associated with an index. - * Null is returned if the key is not found, or null if the index has - * no value, or if the value is not a JSONObject. - * - * @param index The index must be between 0 and length() - 1. - * @return A JSONObject value. - */ - public JSONObject optJSONObject(int index) { - Object o = opt(index); - return o instanceof JSONObject ? (JSONObject)o : null; - } - - - /** - * Get the optional long value associated with an index. - * Zero is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - */ - public long optLong(int index) { - return optLong(index, 0); - } - - - /** - * Get the optional long value associated with an index. - * The defaultValue is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * @param index The index must be between 0 and length() - 1. - * @param defaultValue The default value. - * @return The value. - */ - public long optLong(int index, long defaultValue) { - try { - return getLong(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional string value associated with an index. It returns an - * empty string if there is no value at that index. If the value - * is not a string and is not null, then it is coverted to a string. - * - * @param index The index must be between 0 and length() - 1. - * @return A String value. - */ - public String optString(int index) { - return optString(index, ""); - } - - - /** - * Get the optional string associated with an index. - * The defaultValue is returned if the key is not found. - * - * @param index The index must be between 0 and length() - 1. - * @param defaultValue The default value. - * @return A String value. - */ - public String optString(int index, String defaultValue) { - Object object = opt(index); - return JSONObject.NULL.equals(object) ? object.toString() : defaultValue; - } - - - /** - * Append a boolean value. This increases the array's length by one. - * - * @param value A boolean value. - * @return this. - */ - public JSONArray put(boolean value) { - put(value ? Boolean.TRUE : Boolean.FALSE); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONArray which is produced from a Collection. - * @param value A Collection value. - * @return this. - */ - public JSONArray put(Collection value) { - put(new JSONArray(value)); - return this; - } - - - /** - * Append a double value. This increases the array's length by one. - * - * @param value A double value. - * @throws JSONException if the value is not finite. - * @return this. - */ - public JSONArray put(double value) /*throws JSONException*/ { - Double d = new Double(value); - try { - JSONObject.testValidity(d); - } catch (JSONException e) { - e.printStackTrace(); - } - put(d); - return this; - } - - - /** - * Append an int value. This increases the array's length by one. - * - * @param value An int value. - * @return this. - */ - public JSONArray put(int value) { - put(new Integer(value)); - return this; - } - - - /** - * Append an long value. This increases the array's length by one. - * - * @param value A long value. - * @return this. - */ - public JSONArray put(long value) { - put(new Long(value)); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONObject which is produced from a Map. - * @param value A Map value. - * @return this. - */ - public JSONArray put(Map value) { - put(new JSONObject(value)); - return this; - } - - - /** - * Append an object value. This increases the array's length by one. - * @param value An object value. The value should be a - * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the - * JSONObject.NULL object. - * @return this. - */ - public JSONArray put(Object value) { - this.myArrayList.add(value); - return this; - } - - - /** - * Put or replace a boolean value in the JSONArray. If the index is greater - * than the length of the JSONArray, then null elements will be added as - * necessary to pad it out. - * @param index The subscript. - * @param value A boolean value. - * @return this. - * @throws JSONException If the index is negative. - */ - public JSONArray put(int index, boolean value) /*throws JSONException*/ { - put(index, value ? Boolean.TRUE : Boolean.FALSE); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONArray which is produced from a Collection. - * @param index The subscript. - * @param value A Collection value. - * @return this. - * @throws JSONException If the index is negative or if the value is - * not finite. - */ - public JSONArray put(int index, Collection value) /*throws JSONException*/ { - put(index, new JSONArray(value)); - return this; - } - - - /** - * Put or replace a double value. If the index is greater than the length of - * the JSONArray, then null elements will be added as necessary to pad - * it out. - * @param index The subscript. - * @param value A double value. - * @return this. - * @throws JSONException If the index is negative or if the value is - * not finite. - */ - public JSONArray put(int index, double value) /*throws JSONException*/ { - put(index, new Double(value)); - return this; - } - - - /** - * Put or replace an int value. If the index is greater than the length of - * the JSONArray, then null elements will be added as necessary to pad - * it out. - * @param index The subscript. - * @param value An int value. - * @return this. - * @throws JSONException If the index is negative. - */ - public JSONArray put(int index, int value) /*throws JSONException*/ { - put(index, new Integer(value)); - return this; - } - - - /** - * Put or replace a long value. If the index is greater than the length of - * the JSONArray, then null elements will be added as necessary to pad - * it out. - * @param index The subscript. - * @param value A long value. - * @return this. - * @throws JSONException If the index is negative. - */ - public JSONArray put(int index, long value) /*throws JSONException*/ { - put(index, new Long(value)); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONObject that is produced from a Map. - * @param index The subscript. - * @param value The Map value. - * @return this. - * @throws JSONException If the index is negative or if the the value is - * an invalid number. - */ - public JSONArray put(int index, Map value) /*throws JSONException*/ { - put(index, new JSONObject(value)); - return this; - } - - - /** - * Put or replace an object value in the JSONArray. If the index is greater - * than the length of the JSONArray, then null elements will be added as - * necessary to pad it out. - * @param index The subscript. - * @param value The value to put into the array. The value should be a - * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the - * JSONObject.NULL object. - * @return this. - * @throws JSONException If the index is negative or if the the value is - * an invalid number. - */ - public JSONArray put(int index, Object value) /*throws JSONException*/ { - try { - JSONObject.testValidity(value); - } catch (JSONException e) { - e.printStackTrace(); - } - - // No exceptionhandling in the sketch! - // if (index < 0) { - // throw new JSONException("JSONArray[" + index + "] not found."); - // } - if (index < length()) { - this.myArrayList.set(index, value); - } else { - while (index != length()) { - put(JSONObject.NULL); - } - put(value); - } - return this; - } - - - /** - * Remove an index and close the hole. - * @param index The index of the element to be removed. - * @return The value that was associated with the index, - * or null if there was no value. - */ - public Object remove(int index) { - Object o = opt(index); - this.myArrayList.remove(index); - return o; - } - - - /** - * Produce a JSONObject by combining a JSONArray of names with the values - * of this JSONArray. - * @param names A JSONArray containing a list of key strings. These will be - * paired with the values. - * @return A JSONObject, or null if there are no names or if this JSONArray - * has no values. - * @throws JSONException If any of the names are null. - */ - public JSONObject toJSONObject(JSONArray names) throws JSONException { - if (names == null || names.length() == 0 || length() == 0) { - return null; - } - JSONObject jo = new JSONObject(); - for (int i = 0; i < names.length(); i += 1) { - jo.put(names.getString(i), this.opt(i)); - } - return jo; - } - - - /** - * Make a JSON text of this JSONArray. For compactness, no - * unnecessary whitespace is added. If it is not possible to produce a - * syntactically correct JSON text then null will be returned instead. This - * could occur if the array contains an invalid number. - *

- * Warning: This method assumes that the data structure is acyclical. - * - * @return a printable, displayable, transmittable - * representation of the array. - */ - public String toString() { - try { - return '[' + join(",") + ']'; - } catch (Exception e) { - return null; - } - } - - - /** - * Make a prettyprinted JSON text of this JSONArray. - * Warning: This method assumes that the data structure is acyclical. - * @param indentFactor The number of spaces to add to each level of - * indentation. - * @return a printable, displayable, transmittable - * representation of the object, beginning - * with [ (left bracket) and ending - * with ] (right bracket). - * @throws JSONException - */ - public String toString(int indentFactor) throws JSONException { - return toString(indentFactor, 0); - } - - - /** - * Make a prettyprinted JSON text of this JSONArray. - * Warning: This method assumes that the data structure is acyclical. - * @param indentFactor The number of spaces to add to each level of - * indentation. - * @param indent The indention of the top level. - * @return a printable, displayable, transmittable - * representation of the array. - * @throws JSONException - */ - String toString(int indentFactor, int indent) /*throws JSONException*/ { - int len = length(); - if (len == 0) { - return "[]"; - } - int i; - StringBuffer sb = new StringBuffer("["); - if (len == 1) { - sb.append(JSONObject.valueToString(this.myArrayList.get(0), - indentFactor, indent)); - } else { - int newindent = indent + indentFactor; - sb.append('\n'); - for (i = 0; i < len; i += 1) { - if (i > 0) { - sb.append(",\n"); - } - for (int j = 0; j < newindent; j += 1) { - sb.append(' '); - } - sb.append(JSONObject.valueToString(this.myArrayList.get(i), - indentFactor, newindent)); - } - sb.append('\n'); - for (i = 0; i < indent; i += 1) { - sb.append(' '); - } - } - sb.append(']'); - return sb.toString(); - } - - - /** - * Write the contents of the JSONArray as JSON text to a writer. - * For compactness, no whitespace is added. - *

- * Warning: This method assumes that the data structure is acyclical. - * - * @return The writer. - * @throws JSONException - */ - public Writer write(Writer writer) /*throws JSONException*/ { - try { - boolean b = false; - int len = length(); - - writer.write('['); - - for (int i = 0; i < len; i += 1) { - if (b) { - writer.write(','); - } - Object v = this.myArrayList.get(i); - if (v instanceof JSONObject) { - ((JSONObject)v).write(writer); - } else if (v instanceof JSONArray) { - ((JSONArray)v).write(writer); - } else { - writer.write(JSONObject.valueToString(v)); - } - b = true; - } - writer.write(']'); - return writer; - } catch (IOException e) { -// throw new JSONException(e); - e.printStackTrace(); - } - return writer; - } +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +import java.io.IOException; +import java.io.Writer; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; + +/** + * A JSONArray is an ordered sequence of values. Its external text form is a + * string wrapped in square brackets with commas separating the values. The + * internal form is an object having get and opt + * methods for accessing the values by index, and put methods for + * adding or replacing values. The values can be any of these types: + * Boolean, JSONArray, JSONObject, + * Number, String, or the + * JSONObject.NULL object. + *

+ * The constructor can convert a JSON text into a Java object. The + * toString method converts to JSON text. + *

+ * A get method returns a value if one can be found, and throws an + * exception if one cannot be found. An opt method returns a + * default value instead of throwing an exception, and so is useful for + * obtaining optional values. + *

+ * The generic get() and opt() methods return an + * object which you can cast or query for type. There are also typed + * get and opt methods that do type checking and type + * coercion for you. + *

+ * The texts produced by the toString methods strictly conform to + * JSON syntax rules. The constructors are more forgiving in the texts they will + * accept: + *

    + *
  • An extra , (comma) may appear just + * before the closing bracket.
  • + *
  • The null value will be inserted when there + * is , (comma) elision.
  • + *
  • Strings may be quoted with ' (single + * quote).
  • + *
  • Strings do not need to be quoted at all if they do not begin with a quote + * or single quote, and if they do not contain leading or trailing spaces, + * and if they do not contain any of these characters: + * { } [ ] / \ : , = ; # and if they do not look like numbers + * and if they are not the reserved words true, + * false, or null.
  • + *
  • Values can be separated by ; (semicolon) as + * well as by , (comma).
  • + *
  • Numbers may have the + * 0x- (hex) prefix.
  • + *
+ + * @author JSON.org + * @version 2011-08-25 + */ +public class JSONArray { + + + /** + * The arrayList where the JSONArray's properties are kept. + */ + private ArrayList myArrayList; + + + /** + * Construct an empty JSONArray. + */ + public JSONArray() { + this.myArrayList = new ArrayList(); + } + + /** + * Construct a JSONArray from a JSONTokener. + * @param x A JSONTokener + * @throws JSONException If there is a syntax error. + */ + public JSONArray(JSONTokener x) throws JSONException { + this(); + if (x.nextClean() != '[') { + throw x.syntaxError("A JSONArray text must start with '['"); + } + if (x.nextClean() != ']') { + x.back(); + for (;;) { + if (x.nextClean() == ',') { + x.back(); + this.myArrayList.add(JSONObject.NULL); + } else { + x.back(); + this.myArrayList.add(x.nextValue()); + } + switch (x.nextClean()) { + case ';': + case ',': + if (x.nextClean() == ']') { + return; + } + x.back(); + break; + case ']': + return; + default: + throw x.syntaxError("Expected a ',' or ']'"); + } + } + } + } + + + /** + * Construct a JSONArray from a source JSON text. + * @param source A string that begins with + * [ (left bracket) + * and ends with ] (right bracket). + * @throws JSONException If there is a syntax error. + */ + public JSONArray(String source) throws JSONException { + this(new JSONTokener(source)); + } + + + /** + * Construct a JSONArray from a Collection. + * @param collection A Collection. + */ + public JSONArray(Collection collection) { + this.myArrayList = new ArrayList(); + if (collection != null) { + Iterator iter = collection.iterator(); + while (iter.hasNext()) { + this.myArrayList.add(JSONObject.wrap(iter.next())); + } + } + } + + + /** + * Construct a JSONArray from an array + * @throws JSONException If not an array. + */ + public JSONArray(Object array) /*throws JSONException*/ { + this(); + if (array.getClass().isArray()) { + int length = Array.getLength(array); + for (int i = 0; i < length; i += 1) { + this.put(JSONObject.wrap(Array.get(array, i))); + } + } else { +// throw new JSONException( +//"JSONArray initial value should be a string or collection or array."); + System.out.println("JSONArray initial value should be a string or collection or array."); + } + } + + + /** + * Get the object value associated with an index. + * @param index + * The index must be between 0 and length() - 1. + * @return An object value. + * @throws JSONException If there is no value for the index. + */ + public Object get(int index) throws JSONException { + Object object = opt(index); + if (object == null) { + throw new JSONException("JSONArray[" + index + "] not found."); + } + return object; + } + + + /** + * Get the boolean value associated with an index. + * The string values "true" and "false" are converted to boolean. + * + * @param index The index must be between 0 and length() - 1. + * @return The truth. + * @throws JSONException If there is no value for the index or if the + * value is not convertible to boolean. + */ + public boolean getBoolean(int index) throws JSONException { + Object object = get(index); + if (object.equals(Boolean.FALSE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("false"))) { + return false; + } else if (object.equals(Boolean.TRUE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("true"))) { + return true; + } + throw new JSONException("JSONArray[" + index + "] is not a boolean."); + } + + + /** + * Get the double value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value cannot + * be converted to a number. + */ + public double getDouble(int index) throws JSONException { + Object object = get(index); + try { + return object instanceof Number ? + ((Number)object).doubleValue() : + Double.parseDouble((String)object); + } catch (Exception e) { + throw new JSONException("JSONArray[" + index + + "] is not a number."); + } + } + + + /** + * Get the int value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value is not a number. + */ + public int getInt(int index) throws JSONException { + Object object = get(index); + try { + return object instanceof Number ? + ((Number)object).intValue() : + Integer.parseInt((String)object); + } catch (Exception e) { + throw new JSONException("JSONArray[" + index + + "] is not a number."); + } + } + + + /** + * Get the JSONArray associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return A JSONArray value. + * @throws JSONException If there is no value for the index. or if the + * value is not a JSONArray + */ + public JSONArray getJSONArray(int index) throws JSONException { + Object object = get(index); + if (object instanceof JSONArray) { + return (JSONArray)object; + } + throw new JSONException("JSONArray[" + index + + "] is not a JSONArray."); + } + + + /** + * Get the JSONObject associated with an index. + * @param index subscript + * @return A JSONObject value. + * @throws JSONException If there is no value for the index or if the + * value is not a JSONObject + */ + public JSONObject getJSONObject(int index) /*throws JSONException*/ { + Object object = null; + try { + object = get(index); + } catch (JSONException e) { +// e.printStackTrace(); + System.out.println( "JSONArray[" + index + "] is not a JSONObject." ); + } + + if( object == null ) + return null; + + if (object instanceof JSONObject) { + return (JSONObject)object; + } +// throw new JSONException("JSONArray[" + index + +// "] is not a JSONObject."); + return null; + } + + + /** + * Get the long value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value cannot + * be converted to a number. + */ + public long getLong(int index) throws JSONException { + Object object = get(index); + try { + return object instanceof Number ? + ((Number)object).longValue() : + Long.parseLong((String)object); + } catch (Exception e) { + throw new JSONException("JSONArray[" + index + + "] is not a number."); + } + } + + + /** + * Get the string associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return A string value. + * @throws JSONException If there is no string value for the index. + */ + public String getString(int index) throws JSONException { + Object object = get(index); + if (object instanceof String) { + return (String)object; + } + throw new JSONException("JSONArray[" + index + "] not a string."); + } + + + /** + * Determine if the value is null. + * @param index The index must be between 0 and length() - 1. + * @return true if the value at the index is null, or if there is no value. + */ + public boolean isNull(int index) { + return JSONObject.NULL.equals(opt(index)); + } + + + /** + * Make a string from the contents of this JSONArray. The + * separator string is inserted between each element. + * Warning: This method assumes that the data structure is acyclical. + * @param separator A string that will be inserted between the elements. + * @return a string. + * @throws JSONException If the array contains an invalid number. + */ + public String join(String separator) throws JSONException { + int len = length(); + StringBuffer sb = new StringBuffer(); + + for (int i = 0; i < len; i += 1) { + if (i > 0) { + sb.append(separator); + } + sb.append(JSONObject.valueToString(this.myArrayList.get(i))); + } + return sb.toString(); + } + + + /** + * Get the number of elements in the JSONArray, included nulls. + * + * @return The length (or size). + */ + public int length() { + return this.myArrayList.size(); + } + + + /** + * Get the optional object value associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return An object value, or null if there is no + * object at that index. + */ + public Object opt(int index) { + return (index < 0 || index >= length()) ? + null : this.myArrayList.get(index); + } + + + /** + * Get the optional boolean value associated with an index. + * It returns false if there is no value at that index, + * or if the value is not Boolean.TRUE or the String "true". + * + * @param index The index must be between 0 and length() - 1. + * @return The truth. + */ + public boolean optBoolean(int index) { + return optBoolean(index, false); + } + + + /** + * Get the optional boolean value associated with an index. + * It returns the defaultValue if there is no value at that index or if + * it is not a Boolean or the String "true" or "false" (case insensitive). + * + * @param index The index must be between 0 and length() - 1. + * @param defaultValue A boolean default. + * @return The truth. + */ + public boolean optBoolean(int index, boolean defaultValue) { + try { + return getBoolean(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional double value associated with an index. + * NaN is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + */ + public double optDouble(int index) { + return optDouble(index, Double.NaN); + } + + + /** + * Get the optional double value associated with an index. + * The defaultValue is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index subscript + * @param defaultValue The default value. + * @return The value. + */ + public double optDouble(int index, double defaultValue) { + try { + return getDouble(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional int value associated with an index. + * Zero is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + */ + public int optInt(int index) { + return optInt(index, 0); + } + + + /** + * Get the optional int value associated with an index. + * The defaultValue is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * @param index The index must be between 0 and length() - 1. + * @param defaultValue The default value. + * @return The value. + */ + public int optInt(int index, int defaultValue) { + try { + return getInt(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional JSONArray associated with an index. + * @param index subscript + * @return A JSONArray value, or null if the index has no value, + * or if the value is not a JSONArray. + */ + public JSONArray optJSONArray(int index) { + Object o = opt(index); + return o instanceof JSONArray ? (JSONArray)o : null; + } + + + /** + * Get the optional JSONObject associated with an index. + * Null is returned if the key is not found, or null if the index has + * no value, or if the value is not a JSONObject. + * + * @param index The index must be between 0 and length() - 1. + * @return A JSONObject value. + */ + public JSONObject optJSONObject(int index) { + Object o = opt(index); + return o instanceof JSONObject ? (JSONObject)o : null; + } + + + /** + * Get the optional long value associated with an index. + * Zero is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + */ + public long optLong(int index) { + return optLong(index, 0); + } + + + /** + * Get the optional long value associated with an index. + * The defaultValue is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * @param index The index must be between 0 and length() - 1. + * @param defaultValue The default value. + * @return The value. + */ + public long optLong(int index, long defaultValue) { + try { + return getLong(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional string value associated with an index. It returns an + * empty string if there is no value at that index. If the value + * is not a string and is not null, then it is coverted to a string. + * + * @param index The index must be between 0 and length() - 1. + * @return A String value. + */ + public String optString(int index) { + return optString(index, ""); + } + + + /** + * Get the optional string associated with an index. + * The defaultValue is returned if the key is not found. + * + * @param index The index must be between 0 and length() - 1. + * @param defaultValue The default value. + * @return A String value. + */ + public String optString(int index, String defaultValue) { + Object object = opt(index); + return JSONObject.NULL.equals(object) ? object.toString() : defaultValue; + } + + + /** + * Append a boolean value. This increases the array's length by one. + * + * @param value A boolean value. + * @return this. + */ + public JSONArray put(boolean value) { + put(value ? Boolean.TRUE : Boolean.FALSE); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONArray which is produced from a Collection. + * @param value A Collection value. + * @return this. + */ + public JSONArray put(Collection value) { + put(new JSONArray(value)); + return this; + } + + + /** + * Append a double value. This increases the array's length by one. + * + * @param value A double value. + * @throws JSONException if the value is not finite. + * @return this. + */ + public JSONArray put(double value) /*throws JSONException*/ { + Double d = new Double(value); + try { + JSONObject.testValidity(d); + } catch (JSONException e) { + e.printStackTrace(); + } + put(d); + return this; + } + + + /** + * Append an int value. This increases the array's length by one. + * + * @param value An int value. + * @return this. + */ + public JSONArray put(int value) { + put(new Integer(value)); + return this; + } + + + /** + * Append an long value. This increases the array's length by one. + * + * @param value A long value. + * @return this. + */ + public JSONArray put(long value) { + put(new Long(value)); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONObject which is produced from a Map. + * @param value A Map value. + * @return this. + */ + public JSONArray put(Map value) { + put(new JSONObject(value)); + return this; + } + + + /** + * Append an object value. This increases the array's length by one. + * @param value An object value. The value should be a + * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + * JSONObject.NULL object. + * @return this. + */ + public JSONArray put(Object value) { + this.myArrayList.add(value); + return this; + } + + + /** + * Put or replace a boolean value in the JSONArray. If the index is greater + * than the length of the JSONArray, then null elements will be added as + * necessary to pad it out. + * @param index The subscript. + * @param value A boolean value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArray put(int index, boolean value) /*throws JSONException*/ { + put(index, value ? Boolean.TRUE : Boolean.FALSE); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONArray which is produced from a Collection. + * @param index The subscript. + * @param value A Collection value. + * @return this. + * @throws JSONException If the index is negative or if the value is + * not finite. + */ + public JSONArray put(int index, Collection value) /*throws JSONException*/ { + put(index, new JSONArray(value)); + return this; + } + + + /** + * Put or replace a double value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value A double value. + * @return this. + * @throws JSONException If the index is negative or if the value is + * not finite. + */ + public JSONArray put(int index, double value) /*throws JSONException*/ { + put(index, new Double(value)); + return this; + } + + + /** + * Put or replace an int value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value An int value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArray put(int index, int value) /*throws JSONException*/ { + put(index, new Integer(value)); + return this; + } + + + /** + * Put or replace a long value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value A long value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArray put(int index, long value) /*throws JSONException*/ { + put(index, new Long(value)); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONObject that is produced from a Map. + * @param index The subscript. + * @param value The Map value. + * @return this. + * @throws JSONException If the index is negative or if the the value is + * an invalid number. + */ + public JSONArray put(int index, Map value) /*throws JSONException*/ { + put(index, new JSONObject(value)); + return this; + } + + + /** + * Put or replace an object value in the JSONArray. If the index is greater + * than the length of the JSONArray, then null elements will be added as + * necessary to pad it out. + * @param index The subscript. + * @param value The value to put into the array. The value should be a + * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + * JSONObject.NULL object. + * @return this. + * @throws JSONException If the index is negative or if the the value is + * an invalid number. + */ + public JSONArray put(int index, Object value) /*throws JSONException*/ { + try { + JSONObject.testValidity(value); + } catch (JSONException e) { + e.printStackTrace(); + } + + // No exceptionhandling in the sketch! + // if (index < 0) { + // throw new JSONException("JSONArray[" + index + "] not found."); + // } + if (index < length()) { + this.myArrayList.set(index, value); + } else { + while (index != length()) { + put(JSONObject.NULL); + } + put(value); + } + return this; + } + + + /** + * Remove an index and close the hole. + * @param index The index of the element to be removed. + * @return The value that was associated with the index, + * or null if there was no value. + */ + public Object remove(int index) { + Object o = opt(index); + this.myArrayList.remove(index); + return o; + } + + + /** + * Produce a JSONObject by combining a JSONArray of names with the values + * of this JSONArray. + * @param names A JSONArray containing a list of key strings. These will be + * paired with the values. + * @return A JSONObject, or null if there are no names or if this JSONArray + * has no values. + * @throws JSONException If any of the names are null. + */ + public JSONObject toJSONObject(JSONArray names) throws JSONException { + if (names == null || names.length() == 0 || length() == 0) { + return null; + } + JSONObject jo = new JSONObject(); + for (int i = 0; i < names.length(); i += 1) { + jo.put(names.getString(i), this.opt(i)); + } + return jo; + } + + + /** + * Make a JSON text of this JSONArray. For compactness, no + * unnecessary whitespace is added. If it is not possible to produce a + * syntactically correct JSON text then null will be returned instead. This + * could occur if the array contains an invalid number. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return a printable, displayable, transmittable + * representation of the array. + */ + public String toString() { + try { + return '[' + join(",") + ']'; + } catch (Exception e) { + return null; + } + } + + + /** + * Make a prettyprinted JSON text of this JSONArray. + * Warning: This method assumes that the data structure is acyclical. + * @param indentFactor The number of spaces to add to each level of + * indentation. + * @return a printable, displayable, transmittable + * representation of the object, beginning + * with [ (left bracket) and ending + * with ] (right bracket). + * @throws JSONException + */ + public String toString(int indentFactor) throws JSONException { + return toString(indentFactor, 0); + } + + + /** + * Make a prettyprinted JSON text of this JSONArray. + * Warning: This method assumes that the data structure is acyclical. + * @param indentFactor The number of spaces to add to each level of + * indentation. + * @param indent The indention of the top level. + * @return a printable, displayable, transmittable + * representation of the array. + * @throws JSONException + */ + String toString(int indentFactor, int indent) /*throws JSONException*/ { + int len = length(); + if (len == 0) { + return "[]"; + } + int i; + StringBuffer sb = new StringBuffer("["); + if (len == 1) { + sb.append(JSONObject.valueToString(this.myArrayList.get(0), + indentFactor, indent)); + } else { + int newindent = indent + indentFactor; + sb.append('\n'); + for (i = 0; i < len; i += 1) { + if (i > 0) { + sb.append(",\n"); + } + for (int j = 0; j < newindent; j += 1) { + sb.append(' '); + } + sb.append(JSONObject.valueToString(this.myArrayList.get(i), + indentFactor, newindent)); + } + sb.append('\n'); + for (i = 0; i < indent; i += 1) { + sb.append(' '); + } + } + sb.append(']'); + return sb.toString(); + } + + + /** + * Write the contents of the JSONArray as JSON text to a writer. + * For compactness, no whitespace is added. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return The writer. + * @throws JSONException + */ + public Writer write(Writer writer) /*throws JSONException*/ { + try { + boolean b = false; + int len = length(); + + writer.write('['); + + for (int i = 0; i < len; i += 1) { + if (b) { + writer.write(','); + } + Object v = this.myArrayList.get(i); + if (v instanceof JSONObject) { + ((JSONObject)v).write(writer); + } else if (v instanceof JSONArray) { + ((JSONArray)v).write(writer); + } else { + writer.write(JSONObject.valueToString(v)); + } + b = true; + } + writer.write(']'); + return writer; + } catch (IOException e) { +// throw new JSONException(e); + e.printStackTrace(); + } + return writer; + } } \ No newline at end of file From b1998d009b3c1c896b8bda80f20147d1bd8c2b0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20G=C3=B6ransson?= Date: Wed, 28 Nov 2012 17:59:10 +0100 Subject: [PATCH 16/38] Removed another exception from JSONArray class --- .../download/json4processing-0.1.5.zip | Bin 0 -> 181632 bytes .../create_jsonarray/create_jsonarray.pde | 23 + .../create_jsonarray_of_objects.pde | 31 + .../create_jsonobject/create_jsonobject.pde | 22 + .../create_jsonobject_from_httpheader.pde | 57 + .../create_jsonobject_from_string.pde | 20 + .../reading_yahoo_weather.pde | 37 + .../write_jsonarray_of_objects.pde | 56 + distribution/json4processing-0.1.5/index.html | 132 ++ .../reference/allclasses-frame.html | 32 + .../reference/allclasses-noframe.html | 32 + .../reference/constant-values.html | 141 ++ .../reference/deprecated-list.html | 112 ++ .../reference/help-doc.html | 209 +++ .../reference/index-all.html | 1134 ++++++++++++ .../reference/index.html | 30 + .../reference/org/json/CDL.html | 470 +++++ .../reference/org/json/Cookie.html | 347 ++++ .../reference/org/json/CookieList.html | 295 +++ .../reference/org/json/HTTP.html | 363 ++++ .../reference/org/json/HTTPTokener.html | 280 +++ .../reference/org/json/JSONArray.html | 1284 +++++++++++++ .../reference/org/json/JSONException.html | 298 +++ .../reference/org/json/JSONML.html | 404 ++++ .../reference/org/json/JSONObject.html | 1626 +++++++++++++++++ .../reference/org/json/JSONString.html | 215 +++ .../reference/org/json/JSONStringer.html | 307 ++++ .../reference/org/json/JSONTokener.html | 601 ++++++ .../reference/org/json/JSONWriter.html | 474 +++++ .../reference/org/json/XML.html | 552 ++++++ .../reference/org/json/XMLTokener.html | 433 +++++ .../reference/org/json/package-frame.html | 39 + .../reference/org/json/package-summary.html | 248 +++ .../reference/org/json/package-tree.html | 152 ++ .../reference/overview-tree.html | 156 ++ .../reference/package-list | 1 + .../reference/resources/background.gif | Bin 0 -> 2313 bytes .../reference/resources/tab.gif | Bin 0 -> 291 bytes .../reference/resources/titlebar.gif | Bin 0 -> 10701 bytes .../reference/resources/titlebar_end.gif | Bin 0 -> 849 bytes .../reference/serialized-form.html | 142 ++ .../reference/stylesheet.css | 310 ++++ .../json4processing-0.1.5/stylesheet.css | 203 ++ resources/build.properties | 2 +- src/org/json/JSONArray.java | 13 +- 45 files changed, 11276 insertions(+), 7 deletions(-) create mode 100644 distribution/json4processing-0.1.5/download/json4processing-0.1.5.zip create mode 100644 distribution/json4processing-0.1.5/examples/create_jsonarray/create_jsonarray.pde create mode 100644 distribution/json4processing-0.1.5/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.5/examples/create_jsonobject/create_jsonobject.pde create mode 100644 distribution/json4processing-0.1.5/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde create mode 100644 distribution/json4processing-0.1.5/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde create mode 100644 distribution/json4processing-0.1.5/examples/reading_yahoo_weather/reading_yahoo_weather.pde create mode 100644 distribution/json4processing-0.1.5/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.5/index.html create mode 100644 distribution/json4processing-0.1.5/reference/allclasses-frame.html create mode 100644 distribution/json4processing-0.1.5/reference/allclasses-noframe.html create mode 100644 distribution/json4processing-0.1.5/reference/constant-values.html create mode 100644 distribution/json4processing-0.1.5/reference/deprecated-list.html create mode 100644 distribution/json4processing-0.1.5/reference/help-doc.html create mode 100644 distribution/json4processing-0.1.5/reference/index-all.html create mode 100644 distribution/json4processing-0.1.5/reference/index.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/CDL.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/Cookie.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/CookieList.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/HTTP.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/HTTPTokener.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONArray.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONException.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONML.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONObject.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONString.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONStringer.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONTokener.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/JSONWriter.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/XML.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/XMLTokener.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/package-frame.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/package-summary.html create mode 100644 distribution/json4processing-0.1.5/reference/org/json/package-tree.html create mode 100644 distribution/json4processing-0.1.5/reference/overview-tree.html create mode 100644 distribution/json4processing-0.1.5/reference/package-list create mode 100644 distribution/json4processing-0.1.5/reference/resources/background.gif create mode 100644 distribution/json4processing-0.1.5/reference/resources/tab.gif create mode 100644 distribution/json4processing-0.1.5/reference/resources/titlebar.gif create mode 100644 distribution/json4processing-0.1.5/reference/resources/titlebar_end.gif create mode 100644 distribution/json4processing-0.1.5/reference/serialized-form.html create mode 100644 distribution/json4processing-0.1.5/reference/stylesheet.css create mode 100644 distribution/json4processing-0.1.5/stylesheet.css diff --git a/distribution/json4processing-0.1.5/download/json4processing-0.1.5.zip b/distribution/json4processing-0.1.5/download/json4processing-0.1.5.zip new file mode 100644 index 0000000000000000000000000000000000000000..e64b1d2767578a43d65d8fdae36f150bb576db80 GIT binary patch literal 181632 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�^DuGr)F7<&&|L3 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,%e^Wp$X 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 STPp+q(t(85R|G@{=>Gsh?ghmF literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.5/examples/create_jsonarray/create_jsonarray.pde b/distribution/json4processing-0.1.5/examples/create_jsonarray/create_jsonarray.pde new file mode 100644 index 000000000..810f7cb21 --- /dev/null +++ b/distribution/json4processing-0.1.5/examples/create_jsonarray/create_jsonarray.pde @@ -0,0 +1,23 @@ +/* + * JSON 4 Processing + * Basic example 2: Creating a JSON Array + * + * Good for sending a large set of primitive values, like sensor readings. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonArray = new JSONArray(); + + // 2. Add some content to the array + myJsonArray.put( 4 ); + myJsonArray.put( 2 ); + + println( myJsonArray ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.5/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde b/distribution/json4processing-0.1.5/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde new file mode 100644 index 000000000..e8713b47b --- /dev/null +++ b/distribution/json4processing-0.1.5/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde @@ -0,0 +1,31 @@ +/* + * JSON 4 Processing + * Basic example 3: Creating a JSON Array of JSON Objects. + * + * Good for sending multiple complex values, such as database tables. + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the Array + JSONArray myJsonUsers = new JSONArray(); + + // 2. Create the first object & add to array + JSONObject firstUser = new JSONObject(); + firstUser.put( "name", "Andreas" ); + firstUser.put( "age", 32 ); + myJsonUsers.put( firstUser ); + + // 3. Create the second object + JSONObject secondUser = new JSONObject(); + secondUser.put( "name", "Maria" ); + secondUser.put( "age", 28 ); + myJsonUsers.put( secondUser ); + + println( myJsonUsers ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.5/examples/create_jsonobject/create_jsonobject.pde b/distribution/json4processing-0.1.5/examples/create_jsonobject/create_jsonobject.pde new file mode 100644 index 000000000..5e54214a7 --- /dev/null +++ b/distribution/json4processing-0.1.5/examples/create_jsonobject/create_jsonobject.pde @@ -0,0 +1,22 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object + * + * Good for sending values that has a specific meaning (complex values) + */ + +import org.json.*; + +void setup(){ + + // 1. Initialize the object + JSONObject myJsonObject = new JSONObject(); + + // 2. Add some content to the object + myJsonObject.put( "myIntegerValue", 7 ); + + println( myJsonObject ); +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.5/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde b/distribution/json4processing-0.1.5/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde new file mode 100644 index 000000000..82aaa7e18 --- /dev/null +++ b/distribution/json4processing-0.1.5/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde @@ -0,0 +1,57 @@ +/* + * JSON 4 Processing + * Basic example 5: Parsing the HTTP header from www.processing.org + * + * This example creates a JSONObject from the HTTP response when + * contacting a website (www.processing.org). + */ +import org.json.*; +import java.net.URL; +import java.net.URLConnection; + +URL url; +URLConnection conn; + +void setup() { + // Unfortunately there's a problem in the Processing Client implementation + // that forces us to use straight Java. + try { + url = new URL("http://www.processing.org"); + conn = url.openConnection(); + } + catch( Exception e) { + } + + // We will manually add the entire HTTP reponse to this StringBuffer + // and create the JSONObject using it. + StringBuffer sb = new StringBuffer(); + + // Construct the String object using the URLConnection. + for (int i = 0;; i++) { + String name = conn.getHeaderFieldKey(i); + String value = conn.getHeaderField(i); + if (name == null && value == null) { + break; + } + if (name == null) { + // Add the value, if there is no key-value pair. + sb.append(value).append("\n"); + } + else { + // Add the key-value pair. + sb.append(name).append(":").append(value).append("\n"); + } + } + + // Create the JSON HTTP instance + HTTP http = new HTTP(); + + // Create the JSONObject using the HTTP instance + JSONObject obj = http.toJSONObject(sb.toString()); + + // Print the JSONObject + System.out.println(obj); +} +void draw() { +} + diff --git a/distribution/json4processing-0.1.5/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde b/distribution/json4processing-0.1.5/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde new file mode 100644 index 000000000..94a079daa --- /dev/null +++ b/distribution/json4processing-0.1.5/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde @@ -0,0 +1,20 @@ +/* + * JSON 4 Processing + * Basic example 1: Creating a JSON Object from a json string + */ + +import org.json.*; + +void setup(){ + + // 1. Get the json-string (we'll just create one...) + String jsonstring = "{\"myIntegerValue\":7}"; + + // 2. Initialize the object + JSONObject myJsonObject = new JSONObject(jsonstring); + + println( myJsonObject ); +} + +void draw(){ +} \ No newline at end of file diff --git a/distribution/json4processing-0.1.5/examples/reading_yahoo_weather/reading_yahoo_weather.pde b/distribution/json4processing-0.1.5/examples/reading_yahoo_weather/reading_yahoo_weather.pde new file mode 100644 index 000000000..2714414e2 --- /dev/null +++ b/distribution/json4processing-0.1.5/examples/reading_yahoo_weather/reading_yahoo_weather.pde @@ -0,0 +1,37 @@ +/* + * JSON 4 Processing + * Basic example 4: Reading data from the web (Yahoo weather) + * + * This example reads the Weather feed from the Yahoo API's. It's using + * the WOEID for Malmo, you can change this by finding the ID you want + * at http://developer.yahoo.com/weather/ + */ + +import org.json.*; + +void setup() { + // Accessing the weather service + String BASE_URL = "http://weather.yahooapis.com/forecastjson?w="; + String WOEID = "898091"; + + // Get the JSON formatted response + String response = loadStrings( BASE_URL + WOEID )[0]; + + // Make sure we got a response. + if ( response != null ) { + // Initialize the JSONObject for the response + JSONObject root = new JSONObject( response ); + + // Get the "condition" JSONObject + JSONObject condition = root.getJSONObject("condition"); + + // Get the "temperature" value from the condition object + int temperature = condition.getInt("temperature"); + + // Print the temperature + println( temperature ); + } +} + +void draw() { +} diff --git a/distribution/json4processing-0.1.5/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde b/distribution/json4processing-0.1.5/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde new file mode 100644 index 000000000..23de7bec0 --- /dev/null +++ b/distribution/json4processing-0.1.5/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde @@ -0,0 +1,56 @@ +/* + * JSON 4 Processing + * Basic example 7: Creating a JSON Array of JSON Objects and saving it to a file. + * + * Good for saving multiple complex values, such as database tables. + * + * Author: Andreas Göransson, output additions: Tim Pulver + */ + +import org.json.*; +import java.io.File; + +void setup(){ + + // Object creation like in example 3 + // ================================================= + + // 1. Initialize the Array + JSONArray myJsonUsers = new JSONArray(); + + // 2. Create the first object & add to array + JSONObject firstUser = new JSONObject(); + firstUser.put( "name", "Andreas" ); + firstUser.put( "age", 32 ); + myJsonUsers.put( firstUser ); + + // 3. Create the second object + JSONObject secondUser = new JSONObject(); + secondUser.put( "name", "Maria" ); + secondUser.put( "age", 28 ); + myJsonUsers.put( secondUser ); + + // Writing the JSON Array / Object to a file + // ================================================= + + // will store the JSON Array in the file json_output.txt within the data directory + File file = new File(dataPath("") + File.separator + "json_output.txt"); + // Create the data directory if it does not exist + file.getParentFile().mkdirs(); + try{ + // If the file already exists, it will be overwritten + FileWriter fstream = new FileWriter(file, false); + // Use this instead if you want to append the data to the file + //FileWriter fstream = new FileWriter(file, true); + BufferedWriter out = new BufferedWriter(fstream); + // do the actual writing + myJsonUsers.write(out); + // Close the stream + out.close(); + }catch (Exception e){ + System.err.println("Error writing the JSON file: " + e.getMessage()); + } +} + +void draw(){ +} diff --git a/distribution/json4processing-0.1.5/index.html b/distribution/json4processing-0.1.5/index.html new file mode 100644 index 000000000..94c8f584f --- /dev/null +++ b/distribution/json4processing-0.1.5/index.html @@ -0,0 +1,132 @@ + + + +json4processing + + + + + + + + + + + + + + +

+ + + + + +
+ +
+

json4processing

+

+ A library by Andreas Goransson for the programming environment processing. Last update, 11/28/2012. +

+

+ Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. +

+
+ + + +
+

Download

+

+ Download json4processing version 0.1.5 in + .zip format. +

+

Installation

+

+ Unzip and put the extracted json4processing folder into the libraries folder of your processing sketches. Reference and examples are included in the json4processing folder. +

+
+ + +
+

Keywords ?

+

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

+

Source. The source code of json4processing is available at github, and its repository can be browsed here.

+
+ +
+

Examples

+

Find a list of examples in the current distribution of json4processing, or have a look at them by following the links below.

+ +
+ + +
+

Tested

+

+ + Platform linux, windows + + +
Processing 1.5.1 + + +
Dependencies ? +

+
+ + + + + + + + + + + + +
+
+ + +
+ + \ No newline at end of file diff --git a/distribution/json4processing-0.1.5/reference/allclasses-frame.html b/distribution/json4processing-0.1.5/reference/allclasses-frame.html new file mode 100644 index 000000000..205e34a02 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/allclasses-frame.html @@ -0,0 +1,32 @@ + + + + + +All Classes (Javadocs: json4processing) + + + + +

All Classes

+ + + diff --git a/distribution/json4processing-0.1.5/reference/allclasses-noframe.html b/distribution/json4processing-0.1.5/reference/allclasses-noframe.html new file mode 100644 index 000000000..716f8110c --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/allclasses-noframe.html @@ -0,0 +1,32 @@ + + + + + +All Classes (Javadocs: json4processing) + + + + +

All Classes

+ + + diff --git a/distribution/json4processing-0.1.5/reference/constant-values.html b/distribution/json4processing-0.1.5/reference/constant-values.html new file mode 100644 index 000000000..5648446c6 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/constant-values.html @@ -0,0 +1,141 @@ + + + + + +Constant Field Values (Javadocs: json4processing) + + + + + + + + + + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.json.*

+
    +
  • + + + + + + + + + + + + + + +
    org.json.HTTP 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringCRLF"\r\n"
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/deprecated-list.html b/distribution/json4processing-0.1.5/reference/deprecated-list.html new file mode 100644 index 000000000..b1574c5f1 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/deprecated-list.html @@ -0,0 +1,112 @@ + + + + + +Deprecated List (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/help-doc.html b/distribution/json4processing-0.1.5/reference/help-doc.html new file mode 100644 index 000000000..bdaab27b9 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/help-doc.html @@ -0,0 +1,209 @@ + + + + + +API Help (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/index-all.html b/distribution/json4processing-0.1.5/reference/index-all.html new file mode 100644 index 000000000..fef4e768d --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/index-all.html @@ -0,0 +1,1134 @@ + + + + + +Index (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
A B C D E G H I J K L M N O P Q R S T U V W X  + + +

A

+
+
accumulate(String, Object) - Method in class org.json.JSONObject
+
+
Accumulate values under a key.
+
+
AMP - Static variable in class org.json.XML
+
+
The Character '&'.
+
+
APOS - Static variable in class org.json.XML
+
+
The Character '''.
+
+
append(String, Object) - Method in class org.json.JSONObject
+
+
Append values to the array under a key.
+
+
array() - Method in class org.json.JSONWriter
+
+
Begin appending a new array.
+
+
+ + + +

B

+
+
back() - Method in class org.json.JSONTokener
+
+
Back up one character.
+
+
BANG - Static variable in class org.json.XML
+
+
The Character '!'.
+
+
+ + + +

C

+
+
CDL - Class in org.json
+
+
This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
+
+
CDL() - Constructor for class org.json.CDL
+
 
+
Cookie - Class in org.json
+
+
Convert a web browser cookie specification to a JSONObject and back.
+
+
Cookie() - Constructor for class org.json.Cookie
+
 
+
CookieList - Class in org.json
+
+
Convert a web browser cookie list string to a JSONObject and back.
+
+
CookieList() - Constructor for class org.json.CookieList
+
 
+
CRLF - Static variable in class org.json.HTTP
+
+
Carriage return/line feed.
+
+
+ + + +

D

+
+
dehexchar(char) - Static method in class org.json.JSONTokener
+
+
Get the hex value of a character (base16).
+
+
doubleToString(double) - Static method in class org.json.JSONObject
+
+
Produce a string from a double.
+
+
+ + + +

E

+
+
end() - Method in class org.json.JSONTokener
+
 
+
endArray() - Method in class org.json.JSONWriter
+
+
End an array.
+
+
endObject() - Method in class org.json.JSONWriter
+
+
End an object.
+
+
entity - Static variable in class org.json.XMLTokener
+
+
The table of entity values.
+
+
EQ - Static variable in class org.json.XML
+
+
The Character '='.
+
+
escape(String) - Static method in class org.json.Cookie
+
+
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
+
+
escape(String) - Static method in class org.json.XML
+
+
Replace special characters with XML escapes:
+
+
+ + + +

G

+
+
get(int) - Method in class org.json.JSONArray
+
+
Get the object value associated with an index.
+
+
get(String) - Method in class org.json.JSONObject
+
+
Get the value object associated with a key.
+
+
getBoolean(int) - Method in class org.json.JSONArray
+
+
Get the boolean value associated with an index.
+
+
getBoolean(String) - Method in class org.json.JSONObject
+
+
Get the boolean value associated with a key.
+
+
getCause() - Method in exception org.json.JSONException
+
 
+
getDouble(int) - Method in class org.json.JSONArray
+
+
Get the double value associated with an index.
+
+
getDouble(String) - Method in class org.json.JSONObject
+
+
Get the double value associated with a key.
+
+
getInt(int) - Method in class org.json.JSONArray
+
+
Get the int value associated with an index.
+
+
getInt(String) - Method in class org.json.JSONObject
+
+
Get the int value associated with a key.
+
+
getJSONArray(int) - Method in class org.json.JSONArray
+
+
Get the JSONArray associated with an index.
+
+
getJSONArray(String) - Method in class org.json.JSONObject
+
+
Get the JSONArray value associated with a key.
+
+
getJSONObject(int) - Method in class org.json.JSONArray
+
+
Get the JSONObject associated with an index.
+
+
getJSONObject(String) - Method in class org.json.JSONObject
+
+
Get the JSONObject value associated with a key.
+
+
getLong(int) - Method in class org.json.JSONArray
+
+
Get the long value associated with an index.
+
+
getLong(String) - Method in class org.json.JSONObject
+
+
Get the long value associated with a key.
+
+
getNames(JSONObject) - Static method in class org.json.JSONObject
+
+
Get an array of field names from a JSONObject.
+
+
getNames(Object) - Static method in class org.json.JSONObject
+
+
Get an array of field names from an Object.
+
+
getString(int) - Method in class org.json.JSONArray
+
+
Get the string associated with an index.
+
+
getString(String) - Method in class org.json.JSONObject
+
+
Get the string associated with a key.
+
+
GT - Static variable in class org.json.XML
+
+
The Character '>'.
+
+
+ + + +

H

+
+
has(String) - Method in class org.json.JSONObject
+
+
Determine if the JSONObject contains a specific key.
+
+
HTTP - Class in org.json
+
+
Convert an HTTP header to a JSONObject and back.
+
+
HTTP() - Constructor for class org.json.HTTP
+
 
+
HTTPTokener - Class in org.json
+
+
The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
+
+
HTTPTokener(String) - Constructor for class org.json.HTTPTokener
+
+
Construct an HTTPTokener from a string.
+
+
+ + + +

I

+
+
increment(String) - Method in class org.json.JSONObject
+
+
Increment a property of a JSONObject.
+
+
isNull(int) - Method in class org.json.JSONArray
+
+
Determine if the value is null.
+
+
isNull(String) - Method in class org.json.JSONObject
+
+
Determine if the value associated with the key is null or if there is no + value.
+
+
+ + + +

J

+
+
join(String) - Method in class org.json.JSONArray
+
+
Make a string from the contents of this JSONArray.
+
+
JSONArray - Class in org.json
+
+
A JSONArray is an ordered sequence of values.
+
+
JSONArray() - Constructor for class org.json.JSONArray
+
+
Construct an empty JSONArray.
+
+
JSONArray(JSONTokener) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from a JSONTokener.
+
+
JSONArray(String) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from a source JSON text.
+
+
JSONArray(Collection) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from a Collection.
+
+
JSONArray(Object) - Constructor for class org.json.JSONArray
+
+
Construct a JSONArray from an array
+
+
JSONException - Exception in org.json
+
+
The JSONException is thrown by the JSON.org classes when things are amiss.
+
+
JSONException(String) - Constructor for exception org.json.JSONException
+
+
Constructs a JSONException with an explanatory message.
+
+
JSONException(Throwable) - Constructor for exception org.json.JSONException
+
 
+
JSONML - Class in org.json
+
+
This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
+
+
JSONML() - Constructor for class org.json.JSONML
+
 
+
JSONObject - Class in org.json
+
+
A JSONObject is an unordered collection of name/value pairs.
+
+
JSONObject() - Constructor for class org.json.JSONObject
+
+
Construct an empty JSONObject.
+
+
JSONObject(JSONObject, String[]) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a subset of another JSONObject.
+
+
JSONObject(JSONTokener) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a JSONTokener.
+
+
JSONObject(Map) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a Map.
+
+
JSONObject(Object) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from an Object using bean getters.
+
+
JSONObject(Object, String[]) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from an Object, using reflection to find the + public members.
+
+
JSONObject(String) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a source JSON text string.
+
+
JSONObject(String, Locale) - Constructor for class org.json.JSONObject
+
+
Construct a JSONObject from a ResourceBundle.
+
+
JSONString - Interface in org.json
+
+
The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
+
+
JSONStringer - Class in org.json
+
+
JSONStringer provides a quick and convenient way of producing JSON text.
+
+
JSONStringer() - Constructor for class org.json.JSONStringer
+
+
Make a fresh JSONStringer.
+
+
JSONTokener - Class in org.json
+
+
A JSONTokener takes a source string and extracts characters and tokens from + it.
+
+
JSONTokener(Reader) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from a Reader.
+
+
JSONTokener(InputStream) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from an InputStream.
+
+
JSONTokener(String) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from a string.
+
+
JSONWriter - Class in org.json
+
+
JSONWriter provides a quick and convenient way of producing JSON text.
+
+
JSONWriter(Writer) - Constructor for class org.json.JSONWriter
+
+
Make a fresh JSONWriter.
+
+
+ + + +

K

+
+
key(String) - Method in class org.json.JSONWriter
+
+
Append a key.
+
+
keys() - Method in class org.json.JSONObject
+
+
Get an enumeration of the keys of the JSONObject.
+
+
+ + + +

L

+
+
length() - Method in class org.json.JSONArray
+
+
Get the number of elements in the JSONArray, included nulls.
+
+
length() - Method in class org.json.JSONObject
+
+
Get the number of keys stored in the JSONObject.
+
+
LT - Static variable in class org.json.XML
+
+
The Character '<'.
+
+
+ + + +

M

+
+
more() - Method in class org.json.JSONTokener
+
+
Determine if the source string still contains characters that next() + can consume.
+
+
+ + + +

N

+
+
names() - Method in class org.json.JSONObject
+
+
Produce a JSONArray containing the names of the elements of this + JSONObject.
+
+
next() - Method in class org.json.JSONTokener
+
+
Get the next character in the source string.
+
+
next(char) - Method in class org.json.JSONTokener
+
+
Consume the next character, and check that it matches a specified + character.
+
+
next(int) - Method in class org.json.JSONTokener
+
+
Get the next n characters.
+
+
nextCDATA() - Method in class org.json.XMLTokener
+
+
Get the text in the CDATA block.
+
+
nextClean() - Method in class org.json.JSONTokener
+
+
Get the next char in the string, skipping whitespace.
+
+
nextContent() - Method in class org.json.XMLTokener
+
+
Get the next XML outer token, trimming whitespace.
+
+
nextEntity(char) - Method in class org.json.XMLTokener
+
+
Return the next entity.
+
+
nextMeta() - Method in class org.json.XMLTokener
+
+
Returns the next XML meta token.
+
+
nextString(char) - Method in class org.json.JSONTokener
+
+
Return the characters up to the next close quote character.
+
+
nextTo(char) - Method in class org.json.JSONTokener
+
+
Get the text up but not including the specified character or the + end of line, whichever comes first.
+
+
nextTo(String) - Method in class org.json.JSONTokener
+
+
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
+
+
nextToken() - Method in class org.json.HTTPTokener
+
+
Get the next token or string.
+
+
nextToken() - Method in class org.json.XMLTokener
+
+
Get the next XML Token.
+
+
nextValue() - Method in class org.json.JSONTokener
+
+
Get the next value.
+
+
noSpace(String) - Static method in class org.json.XML
+
+
Throw an exception if the string contains whitespace.
+
+
NULL - Static variable in class org.json.JSONObject
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+
+
numberToString(Number) - Static method in class org.json.JSONObject
+
+
Produce a string from a Number.
+
+
+ + + +

O

+
+
object() - Method in class org.json.JSONWriter
+
+
Begin appending a new object.
+
+
opt(int) - Method in class org.json.JSONArray
+
+
Get the optional object value associated with an index.
+
+
opt(String) - Method in class org.json.JSONObject
+
+
Get an optional value associated with a key.
+
+
optBoolean(int) - Method in class org.json.JSONArray
+
+
Get the optional boolean value associated with an index.
+
+
optBoolean(int, boolean) - Method in class org.json.JSONArray
+
+
Get the optional boolean value associated with an index.
+
+
optBoolean(String) - Method in class org.json.JSONObject
+
+
Get an optional boolean associated with a key.
+
+
optBoolean(String, boolean) - Method in class org.json.JSONObject
+
+
Get an optional boolean associated with a key.
+
+
optDouble(int) - Method in class org.json.JSONArray
+
+
Get the optional double value associated with an index.
+
+
optDouble(int, double) - Method in class org.json.JSONArray
+
+
Get the optional double value associated with an index.
+
+
optDouble(String) - Method in class org.json.JSONObject
+
+
Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
+
+
optDouble(String, double) - Method in class org.json.JSONObject
+
+
Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
+
+
optInt(int) - Method in class org.json.JSONArray
+
+
Get the optional int value associated with an index.
+
+
optInt(int, int) - Method in class org.json.JSONArray
+
+
Get the optional int value associated with an index.
+
+
optInt(String) - Method in class org.json.JSONObject
+
+
Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
+
+
optInt(String, int) - Method in class org.json.JSONObject
+
+
Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
+
+
optJSONArray(int) - Method in class org.json.JSONArray
+
+
Get the optional JSONArray associated with an index.
+
+
optJSONArray(String) - Method in class org.json.JSONObject
+
+
Get an optional JSONArray associated with a key.
+
+
optJSONObject(int) - Method in class org.json.JSONArray
+
+
Get the optional JSONObject associated with an index.
+
+
optJSONObject(String) - Method in class org.json.JSONObject
+
+
Get an optional JSONObject associated with a key.
+
+
optLong(int) - Method in class org.json.JSONArray
+
+
Get the optional long value associated with an index.
+
+
optLong(int, long) - Method in class org.json.JSONArray
+
+
Get the optional long value associated with an index.
+
+
optLong(String) - Method in class org.json.JSONObject
+
+
Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
+
+
optLong(String, long) - Method in class org.json.JSONObject
+
+
Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
+
+
optString(int) - Method in class org.json.JSONArray
+
+
Get the optional string value associated with an index.
+
+
optString(int, String) - Method in class org.json.JSONArray
+
+
Get the optional string associated with an index.
+
+
optString(String) - Method in class org.json.JSONObject
+
+
Get an optional string associated with a key.
+
+
optString(String, String) - Method in class org.json.JSONObject
+
+
Get an optional string associated with a key.
+
+
org.json - package org.json
+
 
+
+ + + +

P

+
+
put(boolean) - Method in class org.json.JSONArray
+
+
Append a boolean value.
+
+
put(Collection) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(double) - Method in class org.json.JSONArray
+
+
Append a double value.
+
+
put(int) - Method in class org.json.JSONArray
+
+
Append an int value.
+
+
put(long) - Method in class org.json.JSONArray
+
+
Append an long value.
+
+
put(Map) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
+
+
put(Object) - Method in class org.json.JSONArray
+
+
Append an object value.
+
+
put(int, boolean) - Method in class org.json.JSONArray
+
+
Put or replace a boolean value in the JSONArray.
+
+
put(int, Collection) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(int, double) - Method in class org.json.JSONArray
+
+
Put or replace a double value.
+
+
put(int, int) - Method in class org.json.JSONArray
+
+
Put or replace an int value.
+
+
put(int, long) - Method in class org.json.JSONArray
+
+
Put or replace a long value.
+
+
put(int, Map) - Method in class org.json.JSONArray
+
+
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
+
+
put(int, Object) - Method in class org.json.JSONArray
+
+
Put or replace an object value in the JSONArray.
+
+
put(String, boolean) - Method in class org.json.JSONObject
+
+
Put a key/boolean pair in the JSONObject.
+
+
put(String, Collection) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(String, double) - Method in class org.json.JSONObject
+
+
Put a key/double pair in the JSONObject.
+
+
put(String, int) - Method in class org.json.JSONObject
+
+
Put a key/int pair in the JSONObject.
+
+
put(String, long) - Method in class org.json.JSONObject
+
+
Put a key/long pair in the JSONObject.
+
+
put(String, Map) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
+
+
put(String, Object) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject.
+
+
putOnce(String, Object) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
+
+
putOpt(String, Object) - Method in class org.json.JSONObject
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
+
+
+ + + +

Q

+
+
QUEST - Static variable in class org.json.XML
+
+
The Character '?'.
+
+
QUOT - Static variable in class org.json.XML
+
+
The Character '"'.
+
+
quote(String) - Static method in class org.json.JSONObject
+
+
Produce a string in double quotes with backslash sequences in all the + right places.
+
+
+ + + +

R

+
+
remove(int) - Method in class org.json.JSONArray
+
+
Remove an index and close the hole.
+
+
remove(String) - Method in class org.json.JSONObject
+
+
Remove a name and its value, if present.
+
+
rowToJSONArray(JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of strings from a row of comma delimited values.
+
+
rowToJSONObject(JSONArray, JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
+
+
rowToString(JSONArray) - Static method in class org.json.CDL
+
+
Produce a comma delimited text row from a JSONArray.
+
+
+ + + +

S

+
+
skipPast(String) - Method in class org.json.XMLTokener
+
+
Skip characters until past the requested string.
+
+
skipTo(char) - Method in class org.json.JSONTokener
+
+
Skip characters until the next character is the requested character.
+
+
SLASH - Static variable in class org.json.XML
+
+
The Character '/'.
+
+
stringToValue(String) - Static method in class org.json.JSONObject
+
+
Try to convert a string into a number, boolean, or null.
+
+
stringToValue(String) - Static method in class org.json.XML
+
+
Try to convert a string into a number, boolean, or null.
+
+
syntaxError(String) - Method in class org.json.JSONTokener
+
+
Make a JSONException to signal a syntax error.
+
+
+ + + +

T

+
+
testValidity(Object) - Static method in class org.json.JSONObject
+
+
Throw an exception if the object is a NaN or infinite number.
+
+
toJSONArray(String) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+
+
toJSONArray(JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+
+
toJSONArray(JSONArray, String) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+
+
toJSONArray(JSONArray, JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+
+
toJSONArray(String) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+
+
toJSONArray(XMLTokener) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+
+
toJSONArray(JSONArray) - Method in class org.json.JSONObject
+
+
Produce a JSONArray containing the values of the members of this + JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.Cookie
+
+
Convert a cookie specification string into a JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.CookieList
+
+
Convert a cookie list into a JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.HTTP
+
+
Convert an HTTP header string into a JSONObject.
+
+
toJSONObject(JSONArray) - Method in class org.json.JSONArray
+
+
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
+
+
toJSONObject(XMLTokener) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+
+
toJSONObject(String) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+
+
toJSONObject(String) - Static method in class org.json.XML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
+
+
toJSONString() - Method in interface org.json.JSONString
+
+
The toJSONString method allows a class to produce its own JSON + serialization.
+
+
toString(JSONArray) - Static method in class org.json.CDL
+
+
Produce a comma delimited text from a JSONArray of JSONObjects.
+
+
toString(JSONArray, JSONArray) - Static method in class org.json.CDL
+
+
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
+
+
toString(JSONObject) - Static method in class org.json.Cookie
+
+
Convert a JSONObject into a cookie specification string.
+
+
toString(JSONObject) - Static method in class org.json.CookieList
+
+
Convert a JSONObject into a cookie list.
+
+
toString(JSONObject) - Static method in class org.json.HTTP
+
+
Convert a JSONObject into an HTTP header.
+
+
toString() - Method in class org.json.JSONArray
+
+
Make a JSON text of this JSONArray.
+
+
toString(int) - Method in class org.json.JSONArray
+
+
Make a prettyprinted JSON text of this JSONArray.
+
+
toString(JSONArray) - Static method in class org.json.JSONML
+
+
Reverse the JSONML transformation, making an XML text from a JSONArray.
+
+
toString(JSONObject) - Static method in class org.json.JSONML
+
+
Reverse the JSONML transformation, making an XML text from a JSONObject.
+
+
toString() - Method in class org.json.JSONObject
+
+
Make a JSON text of this JSONObject.
+
+
toString(int) - Method in class org.json.JSONObject
+
+
Make a prettyprinted JSON text of this JSONObject.
+
+
toString() - Method in class org.json.JSONStringer
+
+
Return the JSON text.
+
+
toString() - Method in class org.json.JSONTokener
+
+
Make a printable string of this JSONTokener.
+
+
toString(Object) - Static method in class org.json.XML
+
+
Convert a JSONObject into a well-formed, element-normal XML string.
+
+
toString(Object, String) - Static method in class org.json.XML
+
+
Convert a JSONObject into a well-formed, element-normal XML string.
+
+
+ + + +

U

+
+
unescape(String) - Static method in class org.json.Cookie
+
+
Convert %hh sequences to single characters, and + convert plus to space.
+
+
+ + + +

V

+
+
value(boolean) - Method in class org.json.JSONWriter
+
+
Append either the value true or the value + false.
+
+
value(double) - Method in class org.json.JSONWriter
+
+
Append a double value.
+
+
value(long) - Method in class org.json.JSONWriter
+
+
Append a long value.
+
+
value(Object) - Method in class org.json.JSONWriter
+
+
Append an object value.
+
+
valueToString(Object) - Static method in class org.json.JSONObject
+
+
Make a JSON text of an Object value.
+
+
+ + + +

W

+
+
wrap(Object) - Static method in class org.json.JSONObject
+
+
Wrap an object, if necessary.
+
+
write(Writer) - Method in class org.json.JSONArray
+
+
Write the contents of the JSONArray as JSON text to a writer.
+
+
write(Writer) - Method in class org.json.JSONObject
+
+
Write the contents of the JSONObject as JSON text to a writer.
+
+
+ + + +

X

+
+
XML - Class in org.json
+
+
This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
+
+
XML() - Constructor for class org.json.XML
+
 
+
XMLTokener - Class in org.json
+
+
The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
+
+
XMLTokener(String) - Constructor for class org.json.XMLTokener
+
+
Construct an XMLTokener from a string.
+
+
+A B C D E G H I J K L M N O P Q R S T U V W X 
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/index.html b/distribution/json4processing-0.1.5/reference/index.html new file mode 100644 index 000000000..6c8fe8aed --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/index.html @@ -0,0 +1,30 @@ + + + + + +Javadocs: json4processing + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="org/json/package-summary.html">Non-frame version</a>.</p> + + + diff --git a/distribution/json4processing-0.1.5/reference/org/json/CDL.html b/distribution/json4processing-0.1.5/reference/org/json/CDL.html new file mode 100644 index 000000000..79b6719b9 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/CDL.html @@ -0,0 +1,470 @@ + + + + + +CDL (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class CDL

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.CDL
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class CDL
    +extends java.lang.Object
    +
    This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text. Comma + delimited text is a very popular format for data interchange. It is + understood by most database, spreadsheet, and organizer programs. +

    + Each row of text represents a row in a table or a data record. Each row + ends with a NEWLINE character. Each row contains one or more values. + Values are separated by commas. A value can contain any character except + for comma, unless is is wrapped in single quotes or double quotes. +

    + The first row usually contains the names of the columns. +

    + A comma delimited list can be converted into a JSONArray of JSONObjects. + The names for the elements in the JSONObjects can be taken from the names + in the first row.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      CDL() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONArrayrowToJSONArray(JSONTokener x) +
      Produce a JSONArray of strings from a row of comma delimited values.
      +
      static JSONObjectrowToJSONObject(JSONArray names, + JSONTokener x) +
      Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
      +
      static java.lang.StringrowToString(JSONArray ja) +
      Produce a comma delimited text row from a JSONArray.
      +
      static JSONArraytoJSONArray(JSONArray names, + JSONTokener x) +
      Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
      +
      static JSONArraytoJSONArray(JSONArray names, + java.lang.String string) +
      Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
      +
      static JSONArraytoJSONArray(JSONTokener x) +
      Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
      +
      static JSONArraytoJSONArray(java.lang.String string) +
      Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
      +
      static java.lang.StringtoString(JSONArray ja) +
      Produce a comma delimited text from a JSONArray of JSONObjects.
      +
      static java.lang.StringtoString(JSONArray names, + JSONArray ja) +
      Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CDL

        +
        public CDL()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        rowToJSONArray

        +
        public static JSONArray rowToJSONArray(JSONTokener x)
        +                                throws JSONException
        +
        Produce a JSONArray of strings from a row of comma delimited values.
        +
        Parameters:
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONArray of strings.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        rowToJSONObject

        +
        public static JSONObject rowToJSONObject(JSONArray names,
        +                         JSONTokener x)
        +                                  throws JSONException
        +
        Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
        +
        Parameters:
        names - A JSONArray of names. This is commonly obtained from the + first row of a comma delimited text file using the rowToJSONArray + method.
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONObject combining the names and values.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        rowToString

        +
        public static java.lang.String rowToString(JSONArray ja)
        +
        Produce a comma delimited text row from a JSONArray. Values containing + the comma character will be quoted. Troublesome characters may be + removed.
        +
        Parameters:
        ja - A JSONArray of strings.
        +
        Returns:
        A string ending in NEWLINE.
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(java.lang.String string)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
        +
        Parameters:
        string - The comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(JSONTokener x)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
        +
        Parameters:
        x - The JSONTokener containing the comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(JSONArray names,
        +                    java.lang.String string)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
        +
        Parameters:
        names - A JSONArray of strings.
        string - The comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(JSONArray names,
        +                    JSONTokener x)
        +                             throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
        +
        Parameters:
        names - A JSONArray of strings.
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArray ja)
        +                                 throws JSONException
        +
        Produce a comma delimited text from a JSONArray of JSONObjects. The + first row will be a list of names obtained by inspecting the first + JSONObject.
        +
        Parameters:
        ja - A JSONArray of JSONObjects.
        +
        Returns:
        A comma delimited text.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArray names,
        +                        JSONArray ja)
        +                                 throws JSONException
        +
        Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. The list of names is not included in the + output.
        +
        Parameters:
        names - A JSONArray of strings.
        ja - A JSONArray of JSONObjects.
        +
        Returns:
        A comma delimited text.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/Cookie.html b/distribution/json4processing-0.1.5/reference/org/json/Cookie.html new file mode 100644 index 000000000..545e972cb --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/Cookie.html @@ -0,0 +1,347 @@ + + + + + +Cookie (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class Cookie

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.Cookie
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Cookie
    +extends java.lang.Object
    +
    Convert a web browser cookie specification to a JSONObject and back. + JSON and Cookies are both notations for name/value pairs.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Cookie() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static java.lang.Stringescape(java.lang.String string) +
      Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
      +
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a cookie specification string into a JSONObject.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Convert a JSONObject into a cookie specification string.
      +
      static java.lang.Stringunescape(java.lang.String string) +
      Convert %hh sequences to single characters, and + convert plus to space.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Cookie

        +
        public Cookie()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        escape

        +
        public static java.lang.String escape(java.lang.String string)
        +
        Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". This is a gentle form + of URL encoding, attempting to cause as little distortion to the + string as possible. The characters '=' and ';' are meta characters in + cookies. By convention, they are escaped using the URL-encoding. This is + only a convention, not a standard. Often, cookies are expected to have + encoded values. We encode '=' and ';' because we must. We encode '%' and + '+' because they are meta characters in URL encoding.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        The escaped result.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a cookie specification string into a JSONObject. The string + will contain a name value pair separated by '='. The name and the value + will be unescaped, possibly converting '+' and '%' sequences. The + cookie properties may follow, separated by ';', also represented as + name=value (except the secure property, which does not have a value). + The name will be stored under the key "name", and the value will be + stored under the key "value". This method does not do checking or + validation of the parameters. It only converts the cookie string into + a JSONObject.
        +
        Parameters:
        string - The cookie specification string.
        +
        Returns:
        A JSONObject containing "name", "value", and possibly other + members.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +                                 throws JSONException
        +
        Convert a JSONObject into a cookie specification string. The JSONObject + must contain "name" and "value" members. + If the JSONObject contains "expires", "domain", "path", or "secure" + members, they will be appended to the cookie specification string. + All other members are ignored.
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        A cookie specification string
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        unescape

        +
        public static java.lang.String unescape(java.lang.String string)
        +
        Convert %hh sequences to single characters, and + convert plus to space.
        +
        Parameters:
        string - A string that may contain + + (plus) and + %hh sequences.
        +
        Returns:
        The unescaped string.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/CookieList.html b/distribution/json4processing-0.1.5/reference/org/json/CookieList.html new file mode 100644 index 000000000..8c39cd4a9 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/CookieList.html @@ -0,0 +1,295 @@ + + + + + +CookieList (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class CookieList

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.CookieList
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class CookieList
    +extends java.lang.Object
    +
    Convert a web browser cookie list string to a JSONObject and back.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      CookieList() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a cookie list into a JSONObject.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Convert a JSONObject into a cookie list.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CookieList

        +
        public CookieList()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a cookie list into a JSONObject. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The names and the values + will be unescaped, possibly converting '+' and '%' sequences. + + To add a cookie to a cooklist, + cookielistJSONObject.put(cookieJSONObject.getString("name"), + cookieJSONObject.getString("value"));
        +
        Parameters:
        string - A cookie list string
        +
        Returns:
        A JSONObject
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +                                 throws JSONException
        +
        Convert a JSONObject into a cookie list. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The characters '%', '+', '=', and ';' + in the names and values are replaced by "%hh".
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        A cookie list string
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/HTTP.html b/distribution/json4processing-0.1.5/reference/org/json/HTTP.html new file mode 100644 index 000000000..464b02fcc --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/HTTP.html @@ -0,0 +1,363 @@ + + + + + +HTTP (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class HTTP

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.HTTP
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class HTTP
    +extends java.lang.Object
    +
    Convert an HTTP header to a JSONObject and back.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringCRLF +
      Carriage return/line feed.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      HTTP() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert an HTTP header string into a JSONObject.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Convert a JSONObject into an HTTP header.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CRLF

        +
        public static final java.lang.String CRLF
        +
        Carriage return/line feed.
        +
        See Also:
        Constant Field Values
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HTTP

        +
        public HTTP()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +
        Convert an HTTP header string into a JSONObject. It can be a request + header or a response header. A request header will contain +
        {
        +    Method: "POST" (for example),
        +    "Request-URI": "/" (for example),
        +    "HTTP-Version": "HTTP/1.1" (for example)
        + }
        + A response header will contain +
        {
        +    "HTTP-Version": "HTTP/1.1" (for example),
        +    "Status-Code": "200" (for example),
        +    "Reason-Phrase": "OK" (for example)
        + }
        + In addition, the other parameters in the header will be captured, using + the HTTP field names as JSON names, so that
        +    Date: Sun, 26 May 2002 18:06:04 GMT
        +    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
        +    Cache-Control: no-cache
        + become +
        {...
        +    Date: "Sun, 26 May 2002 18:06:04 GMT",
        +    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
        +    "Cache-Control": "no-cache",
        + ...}
        + It does no further checking or conversion. It does not parse dates. + It does not do '%' transforms on URLs.
        +
        Parameters:
        string - An HTTP header string.
        +
        Returns:
        A JSONObject containing the elements and attributes + of the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +
        Convert a JSONObject into an HTTP header. A request header must contain +
        {
        +    Method: "POST" (for example),
        +    "Request-URI": "/" (for example),
        +    "HTTP-Version": "HTTP/1.1" (for example)
        + }
        + A response header must contain +
        {
        +    "HTTP-Version": "HTTP/1.1" (for example),
        +    "Status-Code": "200" (for example),
        +    "Reason-Phrase": "OK" (for example)
        + }
        + Any other members of the JSONObject will be output as HTTP fields. + The result will end with two CRLF pairs.
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        An HTTP header string.
        +
        Throws:
        +
        JSONException - if the object does not contain enough + information.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.5/reference/org/json/HTTPTokener.html new file mode 100644 index 000000000..8d552f5e6 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/HTTPTokener.html @@ -0,0 +1,280 @@ + + + + + +HTTPTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class HTTPTokener

+
+
+ +
+
    +
  • +
    +
    +
    public class HTTPTokener
    +extends JSONTokener
    +
    The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HTTPTokener

        +
        public HTTPTokener(java.lang.String string)
        +
        Construct an HTTPTokener from a string.
        +
        Parameters:
        string - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        nextToken

        +
        public java.lang.String nextToken()
        +                           throws JSONException
        +
        Get the next token or string. This is used in parsing HTTP headers.
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONArray.html b/distribution/json4processing-0.1.5/reference/org/json/JSONArray.html new file mode 100644 index 000000000..cfcf78539 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONArray.html @@ -0,0 +1,1284 @@ + + + + + +JSONArray (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONArray

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONArray
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONArray
    +extends java.lang.Object
    +
    A JSONArray is an ordered sequence of values. Its external text form is a + string wrapped in square brackets with commas separating the values. The + internal form is an object having get and opt + methods for accessing the values by index, and put methods for + adding or replacing values. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the + JSONObject.NULL object. +

    + The constructor can convert a JSON text into a Java object. The + toString method converts to JSON text. +

    + A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

    + The generic get() and opt() methods return an + object which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. +

    + The texts produced by the toString methods strictly conform to + JSON syntax rules. The constructors are more forgiving in the texts they will + accept: +

      +
    • An extra , (comma) may appear just + before the closing bracket.
    • +
    • The null value will be inserted when there + is , (comma) elision.
    • +
    • Strings may be quoted with ' (single + quote).
    • +
    • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
    • +
    • Values can be separated by ; (semicolon) as + well as by , (comma).
    • +
    • Numbers may have the + 0x- (hex) prefix.
    • +
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONArray() +
      Construct an empty JSONArray.
      +
      JSONArray(java.util.Collection collection) +
      Construct a JSONArray from a Collection.
      +
      JSONArray(JSONTokener x) +
      Construct a JSONArray from a JSONTokener.
      +
      JSONArray(java.lang.Object array) +
      Construct a JSONArray from an array
      +
      JSONArray(java.lang.String source) +
      Construct a JSONArray from a source JSON text.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.Objectget(int index) +
      Get the object value associated with an index.
      +
      booleangetBoolean(int index) +
      Get the boolean value associated with an index.
      +
      doublegetDouble(int index) +
      Get the double value associated with an index.
      +
      intgetInt(int index) +
      Get the int value associated with an index.
      +
      JSONArraygetJSONArray(int index) +
      Get the JSONArray associated with an index.
      +
      JSONObjectgetJSONObject(int index) +
      Get the JSONObject associated with an index.
      +
      longgetLong(int index) +
      Get the long value associated with an index.
      +
      java.lang.StringgetString(int index) +
      Get the string associated with an index.
      +
      booleanisNull(int index) +
      Determine if the value is null.
      +
      java.lang.Stringjoin(java.lang.String separator) +
      Make a string from the contents of this JSONArray.
      +
      intlength() +
      Get the number of elements in the JSONArray, included nulls.
      +
      java.lang.Objectopt(int index) +
      Get the optional object value associated with an index.
      +
      booleanoptBoolean(int index) +
      Get the optional boolean value associated with an index.
      +
      booleanoptBoolean(int index, + boolean defaultValue) +
      Get the optional boolean value associated with an index.
      +
      doubleoptDouble(int index) +
      Get the optional double value associated with an index.
      +
      doubleoptDouble(int index, + double defaultValue) +
      Get the optional double value associated with an index.
      +
      intoptInt(int index) +
      Get the optional int value associated with an index.
      +
      intoptInt(int index, + int defaultValue) +
      Get the optional int value associated with an index.
      +
      JSONArrayoptJSONArray(int index) +
      Get the optional JSONArray associated with an index.
      +
      JSONObjectoptJSONObject(int index) +
      Get the optional JSONObject associated with an index.
      +
      longoptLong(int index) +
      Get the optional long value associated with an index.
      +
      longoptLong(int index, + long defaultValue) +
      Get the optional long value associated with an index.
      +
      java.lang.StringoptString(int index) +
      Get the optional string value associated with an index.
      +
      java.lang.StringoptString(int index, + java.lang.String defaultValue) +
      Get the optional string associated with an index.
      +
      JSONArrayput(boolean value) +
      Append a boolean value.
      +
      JSONArrayput(java.util.Collection value) +
      Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONArrayput(double value) +
      Append a double value.
      +
      JSONArrayput(int value) +
      Append an int value.
      +
      JSONArrayput(int index, + boolean value) +
      Put or replace a boolean value in the JSONArray.
      +
      JSONArrayput(int index, + java.util.Collection value) +
      Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONArrayput(int index, + double value) +
      Put or replace a double value.
      +
      JSONArrayput(int index, + int value) +
      Put or replace an int value.
      +
      JSONArrayput(int index, + long value) +
      Put or replace a long value.
      +
      JSONArrayput(int index, + java.util.Map value) +
      Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
      +
      JSONArrayput(int index, + java.lang.Object value) +
      Put or replace an object value in the JSONArray.
      +
      JSONArrayput(long value) +
      Append an long value.
      +
      JSONArrayput(java.util.Map value) +
      Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
      +
      JSONArrayput(java.lang.Object value) +
      Append an object value.
      +
      java.lang.Objectremove(int index) +
      Remove an index and close the hole.
      +
      JSONObjecttoJSONObject(JSONArray names) +
      Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
      +
      java.lang.StringtoString() +
      Make a JSON text of this JSONArray.
      +
      java.lang.StringtoString(int indentFactor) +
      Make a prettyprinted JSON text of this JSONArray.
      +
      java.io.Writerwrite(java.io.Writer writer) +
      Write the contents of the JSONArray as JSON text to a writer.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray()
        +
        Construct an empty JSONArray.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(JSONTokener x)
        +          throws JSONException
        +
        Construct a JSONArray from a JSONTokener.
        +
        Parameters:
        x - A JSONTokener
        +
        Throws:
        +
        JSONException - If there is a syntax error.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(java.lang.String source)
        +          throws JSONException
        +
        Construct a JSONArray from a source JSON text.
        +
        Parameters:
        source - A string that begins with + [ (left bracket) + and ends with ] (right bracket).
        +
        Throws:
        +
        JSONException - If there is a syntax error.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(java.util.Collection collection)
        +
        Construct a JSONArray from a Collection.
        +
        Parameters:
        collection - A Collection.
        +
      • +
      + + + +
        +
      • +

        JSONArray

        +
        public JSONArray(java.lang.Object array)
        +
        Construct a JSONArray from an array
        +
        Throws:
        +
        JSONException - If not an array.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(int index)
        +
        Get the object value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        An object value.
        +
        Throws:
        +
        JSONException - If there is no value for the index.
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(int index)
        +                   throws JSONException
        +
        Get the boolean value associated with an index. + The string values "true" and "false" are converted to boolean.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The truth.
        +
        Throws:
        +
        JSONException - If there is no value for the index or if the + value is not convertible to boolean.
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(int index)
        +                 throws JSONException
        +
        Get the double value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value cannot + be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(int index)
        +           throws JSONException
        +
        Get the int value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value is not a number.
        +
      • +
      + + + +
        +
      • +

        getJSONArray

        +
        public JSONArray getJSONArray(int index)
        +                       throws JSONException
        +
        Get the JSONArray associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A JSONArray value.
        +
        Throws:
        +
        JSONException - If there is no value for the index. or if the + value is not a JSONArray
        +
      • +
      + + + +
        +
      • +

        getJSONObject

        +
        public JSONObject getJSONObject(int index)
        +
        Get the JSONObject associated with an index.
        +
        Parameters:
        index - subscript
        +
        Returns:
        A JSONObject value.
        +
        Throws:
        +
        JSONException - If there is no value for the index or if the + value is not a JSONObject
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        public long getLong(int index)
        +             throws JSONException
        +
        Get the long value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value cannot + be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(int index)
        +                           throws JSONException
        +
        Get the string associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A string value.
        +
        Throws:
        +
        JSONException - If there is no string value for the index.
        +
      • +
      + + + +
        +
      • +

        isNull

        +
        public boolean isNull(int index)
        +
        Determine if the value is null.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        true if the value at the index is null, or if there is no value.
        +
      • +
      + + + +
        +
      • +

        join

        +
        public java.lang.String join(java.lang.String separator)
        +                      throws JSONException
        +
        Make a string from the contents of this JSONArray. The + separator string is inserted between each element. + Warning: This method assumes that the data structure is acyclical.
        +
        Parameters:
        separator - A string that will be inserted between the elements.
        +
        Returns:
        a string.
        +
        Throws:
        +
        JSONException - If the array contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        length

        +
        public int length()
        +
        Get the number of elements in the JSONArray, included nulls.
        +
        Returns:
        The length (or size).
        +
      • +
      + + + +
        +
      • +

        opt

        +
        public java.lang.Object opt(int index)
        +
        Get the optional object value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        An object value, or null if there is no + object at that index.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(int index)
        +
        Get the optional boolean value associated with an index. + It returns false if there is no value at that index, + or if the value is not Boolean.TRUE or the String "true".
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(int index,
        +                 boolean defaultValue)
        +
        Get the optional boolean value associated with an index. + It returns the defaultValue if there is no value at that index or if + it is not a Boolean or the String "true" or "false" (case insensitive).
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - A boolean default.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(int index)
        +
        Get the optional double value associated with an index. + NaN is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(int index,
        +               double defaultValue)
        +
        Get the optional double value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - subscript
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(int index)
        +
        Get the optional int value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(int index,
        +         int defaultValue)
        +
        Get the optional int value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optJSONArray

        +
        public JSONArray optJSONArray(int index)
        +
        Get the optional JSONArray associated with an index.
        +
        Parameters:
        index - subscript
        +
        Returns:
        A JSONArray value, or null if the index has no value, + or if the value is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        optJSONObject

        +
        public JSONObject optJSONObject(int index)
        +
        Get the optional JSONObject associated with an index. + Null is returned if the key is not found, or null if the index has + no value, or if the value is not a JSONObject.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A JSONObject value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(int index)
        +
        Get the optional long value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(int index,
        +           long defaultValue)
        +
        Get the optional long value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(int index)
        +
        Get the optional string value associated with an index. It returns an + empty string if there is no value at that index. If the value + is not a string and is not null, then it is coverted to a string.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A String value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(int index,
        +                         java.lang.String defaultValue)
        +
        Get the optional string associated with an index. + The defaultValue is returned if the key is not found.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        A String value.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(boolean value)
        +
        Append a boolean value. This increases the array's length by one.
        +
        Parameters:
        value - A boolean value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(java.util.Collection value)
        +
        Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        value - A Collection value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(double value)
        +
        Append a double value. This increases the array's length by one.
        +
        Parameters:
        value - A double value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - if the value is not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int value)
        +
        Append an int value. This increases the array's length by one.
        +
        Parameters:
        value - An int value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(long value)
        +
        Append an long value. This increases the array's length by one.
        +
        Parameters:
        value - A long value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(java.util.Map value)
        +
        Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
        +
        Parameters:
        value - A Map value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(java.lang.Object value)
        +
        Append an object value. This increases the array's length by one.
        +
        Parameters:
        value - An object value. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            boolean value)
        +
        Put or replace a boolean value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out.
        +
        Parameters:
        index - The subscript.
        value - A boolean value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            java.util.Collection value)
        +
        Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        index - The subscript.
        value - A Collection value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the value is + not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            double value)
        +
        Put or replace a double value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - A double value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the value is + not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            int value)
        +
        Put or replace an int value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - An int value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            long value)
        +
        Put or replace a long value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - A long value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            java.util.Map value)
        +
        Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
        +
        Parameters:
        index - The subscript.
        value - The Map value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the the value is + an invalid number.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArray put(int index,
        +            java.lang.Object value)
        +
        Put or replace an object value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out.
        +
        Parameters:
        index - The subscript.
        value - The value to put into the array. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the the value is + an invalid number.
        +
      • +
      + + + +
        +
      • +

        remove

        +
        public java.lang.Object remove(int index)
        +
        Remove an index and close the hole.
        +
        Parameters:
        index - The index of the element to be removed.
        +
        Returns:
        The value that was associated with the index, + or null if there was no value.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public JSONObject toJSONObject(JSONArray names)
        +                        throws JSONException
        +
        Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
        +
        Parameters:
        names - A JSONArray containing a list of key strings. These will be + paired with the values.
        +
        Returns:
        A JSONObject, or null if there are no names or if this JSONArray + has no values.
        +
        Throws:
        +
        JSONException - If any of the names are null.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a JSON text of this JSONArray. For compactness, no + unnecessary whitespace is added. If it is not possible to produce a + syntactically correct JSON text then null will be returned instead. This + could occur if the array contains an invalid number. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        a printable, displayable, transmittable + representation of the array.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString(int indentFactor)
        +                          throws JSONException
        +
        Make a prettyprinted JSON text of this JSONArray. + Warning: This method assumes that the data structure is acyclical.
        +
        Parameters:
        indentFactor - The number of spaces to add to each level of + indentation.
        +
        Returns:
        a printable, displayable, transmittable + representation of the object, beginning + with [ (left bracket) and ending + with ] (right bracket).
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        write

        +
        public java.io.Writer write(java.io.Writer writer)
        +
        Write the contents of the JSONArray as JSON text to a writer. + For compactness, no whitespace is added. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Returns:
        The writer.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONException.html b/distribution/json4processing-0.1.5/reference/org/json/JSONException.html new file mode 100644 index 000000000..2993dbb00 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONException.html @@ -0,0 +1,298 @@ + + + + + +JSONException (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • org.json.JSONException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class JSONException
    +extends java.lang.Exception
    +
    The JSONException is thrown by the JSON.org classes when things are amiss.
    +
    Author:
    +
    JSON.org
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONException(java.lang.String message) +
      Constructs a JSONException with an explanatory message.
      +
      JSONException(java.lang.Throwable cause) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.ThrowablegetCause() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONException

        +
        public JSONException(java.lang.String message)
        +
        Constructs a JSONException with an explanatory message.
        +
        Parameters:
        message - Detail about the reason for the exception.
        +
      • +
      + + + +
        +
      • +

        JSONException

        +
        public JSONException(java.lang.Throwable cause)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCause

        +
        public java.lang.Throwable getCause()
        +
        +
        Overrides:
        +
        getCause in class java.lang.Throwable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONML.html b/distribution/json4processing-0.1.5/reference/org/json/JSONML.html new file mode 100644 index 000000000..0dee299c2 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONML.html @@ -0,0 +1,404 @@ + + + + + +JSONML (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONML

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONML
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONML
    +extends java.lang.Object
    +
    This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONML() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONArraytoJSONArray(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
      +
      static JSONArraytoJSONArray(XMLTokener x) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
      +
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
      +
      static JSONObjecttoJSONObject(XMLTokener x) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
      +
      static java.lang.StringtoString(JSONArray ja) +
      Reverse the JSONML transformation, making an XML text from a JSONArray.
      +
      static java.lang.StringtoString(JSONObject jo) +
      Reverse the JSONML transformation, making an XML text from a JSONObject.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONML

        +
        public JSONML()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(java.lang.String string)
        +                             throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        A JSONArray containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArray toJSONArray(XMLTokener x)
        +                             throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child content and tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        x - An XMLTokener.
        +
        Returns:
        A JSONArray containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(XMLTokener x)
        +                               throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        x - An XMLTokener of the XML source text.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        string - The XML source text.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArray ja)
        +                                 throws JSONException
        +
        Reverse the JSONML transformation, making an XML text from a JSONArray.
        +
        Parameters:
        ja - A JSONArray.
        +
        Returns:
        An XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObject jo)
        +                                 throws JSONException
        +
        Reverse the JSONML transformation, making an XML text from a JSONObject. + The JSONObject must contain a "tagName" property. If it has children, + then it must have a "childNodes" property containing an array of objects. + The other properties are attributes with string values.
        +
        Parameters:
        jo - A JSONObject.
        +
        Returns:
        An XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONObject.html b/distribution/json4processing-0.1.5/reference/org/json/JSONObject.html new file mode 100644 index 000000000..db9fd1a8b --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONObject.html @@ -0,0 +1,1626 @@ + + + + + +JSONObject (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONObject

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONObject
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONObject
    +extends java.lang.Object
    +
    A JSONObject is an unordered collection of name/value pairs. Its external + form is a string wrapped in curly braces with colons between the names and + values, and commas between the values and names. The internal form is an + object having get and opt methods for accessing the + values by name, and put methods for adding or replacing values + by name. The values can be any of these types: Boolean, + JSONArray, JSONObject, Number, + String, or the JSONObject.NULL object. A JSONObject + constructor can be used to convert an external form JSON text into an + internal form whose values can be retrieved with the get and + opt methods, or to convert values into a JSON text using the + put and toString methods. A get method + returns a value if one can be found, and throws an exception if one cannot be + found. An opt method returns a default value instead of throwing + an exception, and so is useful for obtaining optional values. +

    + The generic get() and opt() methods return an + object, which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. The opt methods differ from the get methods in that they do + not throw. Instead, they return a specified value, such as null. +

    + The put methods add or replace values in an object. For example, + +

    + myString = new JSONObject().put("JSON", "Hello, World!").toString();
    + 
    + + produces the string {"JSON": "Hello, World"}. +

    + The texts produced by the toString methods strictly conform to + the JSON syntax rules. The constructors are more forgiving in the texts they + will accept: +

      +
    • An extra , (comma) may appear just + before the closing brace.
    • +
    • Strings may be quoted with ' (single + quote).
    • +
    • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, and + if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers and + if they are not the reserved words true, false, or + null.
    • +
    • Keys can be followed by = or => as well as by + :.
    • +
    • Values can be followed by ; (semicolon) as + well as by , (comma).
    • +
    • Numbers may have the 0x- (hex) prefix.
    • +
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.ObjectNULL +
      It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONObject() +
      Construct an empty JSONObject.
      +
      JSONObject(JSONObject jo, + java.lang.String[] names) +
      Construct a JSONObject from a subset of another JSONObject.
      +
      JSONObject(JSONTokener x) +
      Construct a JSONObject from a JSONTokener.
      +
      JSONObject(java.util.Map map) +
      Construct a JSONObject from a Map.
      +
      JSONObject(java.lang.Object bean) +
      Construct a JSONObject from an Object using bean getters.
      +
      JSONObject(java.lang.Object object, + java.lang.String[] names) +
      Construct a JSONObject from an Object, using reflection to find the + public members.
      +
      JSONObject(java.lang.String source) +
      Construct a JSONObject from a source JSON text string.
      +
      JSONObject(java.lang.String baseName, + java.util.Locale locale) +
      Construct a JSONObject from a ResourceBundle.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      JSONObjectaccumulate(java.lang.String key, + java.lang.Object value) +
      Accumulate values under a key.
      +
      JSONObjectappend(java.lang.String key, + java.lang.Object value) +
      Append values to the array under a key.
      +
      static java.lang.StringdoubleToString(double d) +
      Produce a string from a double.
      +
      java.lang.Objectget(java.lang.String key) +
      Get the value object associated with a key.
      +
      booleangetBoolean(java.lang.String key) +
      Get the boolean value associated with a key.
      +
      doublegetDouble(java.lang.String key) +
      Get the double value associated with a key.
      +
      intgetInt(java.lang.String key) +
      Get the int value associated with a key.
      +
      JSONArraygetJSONArray(java.lang.String key) +
      Get the JSONArray value associated with a key.
      +
      JSONObjectgetJSONObject(java.lang.String key) +
      Get the JSONObject value associated with a key.
      +
      longgetLong(java.lang.String key) +
      Get the long value associated with a key.
      +
      static java.lang.String[]getNames(JSONObject jo) +
      Get an array of field names from a JSONObject.
      +
      static java.lang.String[]getNames(java.lang.Object object) +
      Get an array of field names from an Object.
      +
      java.lang.StringgetString(java.lang.String key) +
      Get the string associated with a key.
      +
      booleanhas(java.lang.String key) +
      Determine if the JSONObject contains a specific key.
      +
      JSONObjectincrement(java.lang.String key) +
      Increment a property of a JSONObject.
      +
      booleanisNull(java.lang.String key) +
      Determine if the value associated with the key is null or if there is no + value.
      +
      java.util.Iteratorkeys() +
      Get an enumeration of the keys of the JSONObject.
      +
      intlength() +
      Get the number of keys stored in the JSONObject.
      +
      JSONArraynames() +
      Produce a JSONArray containing the names of the elements of this + JSONObject.
      +
      static java.lang.StringnumberToString(java.lang.Number number) +
      Produce a string from a Number.
      +
      java.lang.Objectopt(java.lang.String key) +
      Get an optional value associated with a key.
      +
      booleanoptBoolean(java.lang.String key) +
      Get an optional boolean associated with a key.
      +
      booleanoptBoolean(java.lang.String key, + boolean defaultValue) +
      Get an optional boolean associated with a key.
      +
      doubleoptDouble(java.lang.String key) +
      Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
      +
      doubleoptDouble(java.lang.String key, + double defaultValue) +
      Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
      +
      intoptInt(java.lang.String key) +
      Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
      +
      intoptInt(java.lang.String key, + int defaultValue) +
      Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
      +
      JSONArrayoptJSONArray(java.lang.String key) +
      Get an optional JSONArray associated with a key.
      +
      JSONObjectoptJSONObject(java.lang.String key) +
      Get an optional JSONObject associated with a key.
      +
      longoptLong(java.lang.String key) +
      Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
      +
      longoptLong(java.lang.String key, + long defaultValue) +
      Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
      +
      java.lang.StringoptString(java.lang.String key) +
      Get an optional string associated with a key.
      +
      java.lang.StringoptString(java.lang.String key, + java.lang.String defaultValue) +
      Get an optional string associated with a key.
      +
      JSONObjectput(java.lang.String key, + boolean value) +
      Put a key/boolean pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + java.util.Collection value) +
      Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONObjectput(java.lang.String key, + double value) +
      Put a key/double pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + int value) +
      Put a key/int pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + long value) +
      Put a key/long pair in the JSONObject.
      +
      JSONObjectput(java.lang.String key, + java.util.Map value) +
      Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
      +
      JSONObjectput(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject.
      +
      JSONObjectputOnce(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
      +
      JSONObjectputOpt(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
      +
      static java.lang.Stringquote(java.lang.String string) +
      Produce a string in double quotes with backslash sequences in all the + right places.
      +
      java.lang.Objectremove(java.lang.String key) +
      Remove a name and its value, if present.
      +
      static java.lang.ObjectstringToValue(java.lang.String string) +
      Try to convert a string into a number, boolean, or null.
      +
      static voidtestValidity(java.lang.Object o) +
      Throw an exception if the object is a NaN or infinite number.
      +
      JSONArraytoJSONArray(JSONArray names) +
      Produce a JSONArray containing the values of the members of this + JSONObject.
      +
      java.lang.StringtoString() +
      Make a JSON text of this JSONObject.
      +
      java.lang.StringtoString(int indentFactor) +
      Make a prettyprinted JSON text of this JSONObject.
      +
      static java.lang.StringvalueToString(java.lang.Object value) +
      Make a JSON text of an Object value.
      +
      static java.lang.Objectwrap(java.lang.Object object) +
      Wrap an object, if necessary.
      +
      java.io.Writerwrite(java.io.Writer writer) +
      Write the contents of the JSONObject as JSON text to a writer.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NULL

        +
        public static final java.lang.Object NULL
        +
        It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null".
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject()
        +
        Construct an empty JSONObject.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(JSONObject jo,
        +          java.lang.String[] names)
        +
        Construct a JSONObject from a subset of another JSONObject. An array of + strings is used to identify the keys that should be copied. Missing keys + are ignored.
        +
        Parameters:
        jo - A JSONObject.
        names - An array of strings.
        +
        Throws:
        +
        JSONException
        +
        JSONException - If a value is a non-finite number or if a name is + duplicated.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(JSONTokener x)
        +
        Construct a JSONObject from a JSONTokener.
        +
        Parameters:
        x - A JSONTokener object containing the source string.
        +
        Throws:
        +
        JSONException - If there is a syntax error in the source string or a + duplicated key.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.util.Map map)
        +
        Construct a JSONObject from a Map.
        +
        Parameters:
        map - A map object that can be used to initialize the contents of + the JSONObject.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.Object bean)
        +
        Construct a JSONObject from an Object using bean getters. It reflects on + all of the public methods of the object. For each of the methods with no + parameters and a name starting with "get" or + "is" followed by an uppercase letter, the method is invoked, + and a key and the value returned from the getter method are put into the + new JSONObject. + + The key is formed by removing the "get" or "is" + prefix. If the second remaining character is not upper case, then the + first character is converted to lower case. + + For example, if an object has a method named "getName", and + if the result of calling object.getName() is + "Larry Fine", then the JSONObject will contain + "name": "Larry Fine".
        +
        Parameters:
        bean - An object that has getter methods that should be used to make + a JSONObject.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.Object object,
        +          java.lang.String[] names)
        +
        Construct a JSONObject from an Object, using reflection to find the + public members. The resulting JSONObject's keys will be the strings from + the names array, and the values will be the field values associated with + those keys in the object. If a key is not found or not visible, then it + will not be copied into the new JSONObject.
        +
        Parameters:
        object - An object that has fields that should be used to make a + JSONObject.
        names - An array of strings, the names of the fields to be obtained + from the object.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.String source)
        +
        Construct a JSONObject from a source JSON text string. This is the most + commonly used JSONObject constructor.
        +
        Parameters:
        source - A string beginning with { (left + brace) and ending with } +  (right brace).
        +
        Throws:
        +
        JSONException - If there is a syntax error in the source string or a + duplicated key.
        +
      • +
      + + + +
        +
      • +

        JSONObject

        +
        public JSONObject(java.lang.String baseName,
        +          java.util.Locale locale)
        +
        Construct a JSONObject from a ResourceBundle.
        +
        Parameters:
        baseName - The ResourceBundle base name.
        locale - The Locale to load the ResourceBundle for.
        +
        Throws:
        +
        JSONException - If any JSONExceptions are detected.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accumulate

        +
        public JSONObject accumulate(java.lang.String key,
        +                    java.lang.Object value)
        +
        Accumulate values under a key. It is similar to the put method except + that if there is already an object stored under the key then a JSONArray + is stored under the key to hold all of the accumulated values. If there + is already a JSONArray, then the new value is appended to it. In + contrast, the put method replaces the previous value. + + If only one value is accumulated that is not a JSONArray, then the result + will be the same as using put. But if multiple values are accumulated, + then the result will be like append.
        +
        Parameters:
        key - A key string.
        value - An object to be accumulated under the key.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is an invalid number or if the key is null.
        +
      • +
      + + + +
        +
      • +

        append

        +
        public JSONObject append(java.lang.String key,
        +                java.lang.Object value)
        +
        Append values to the array under a key. If the key does not exist in the + JSONObject, then the key is put in the JSONObject with its value being a + JSONArray containing the value parameter. If the key was already + associated with a JSONArray, then the value parameter is appended to it.
        +
        Parameters:
        key - A key string.
        value - An object to be accumulated under the key.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null or if the current value associated with + the key is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        doubleToString

        +
        public static java.lang.String doubleToString(double d)
        +
        Produce a string from a double. The string "null" will be returned if the + number is not finite.
        +
        Parameters:
        d - A double.
        +
        Returns:
        A String.
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key)
        +
        Get the value object associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The object associated with the key.
        +
        Throws:
        +
        JSONException - if the key is not found.
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(java.lang.String key)
        +
        Get the boolean value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The truth. (False if it failes to find the value)
        +
        Throws:
        +
        JSONException - if the value is not a Boolean or the String "true" or + "false".
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(java.lang.String key)
        +
        Get the double value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The numeric value. -1 if it failes to find the value
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a Number + object and cannot be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(java.lang.String key)
        +
        Get the int value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The integer value. (-1 if it failes to get the integer)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value cannot be converted + to an integer.
        +
      • +
      + + + +
        +
      • +

        getJSONArray

        +
        public JSONArray getJSONArray(java.lang.String key)
        +
        Get the JSONArray value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONArray which is the value. (null if failes to find the array)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        getJSONObject

        +
        public JSONObject getJSONObject(java.lang.String key)
        +
        Get the JSONObject value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONObject which is the value.
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a JSONObject.
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        public long getLong(java.lang.String key)
        +
        Get the long value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The long value. (-1 if it failes)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value cannot be converted + to a long.
        +
      • +
      + + + +
        +
      • +

        getNames

        +
        public static java.lang.String[] getNames(JSONObject jo)
        +
        Get an array of field names from a JSONObject.
        +
        Returns:
        An array of field names, or null if there are no names.
        +
      • +
      + + + +
        +
      • +

        getNames

        +
        public static java.lang.String[] getNames(java.lang.Object object)
        +
        Get an array of field names from an Object.
        +
        Returns:
        An array of field names, or null if there are no names.
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String key)
        +
        Get the string associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A string which is the value. (empty string if it fails)
        +
        Throws:
        +
        JSONException - if there is no string value for the key.
        +
      • +
      + + + +
        +
      • +

        has

        +
        public boolean has(java.lang.String key)
        +
        Determine if the JSONObject contains a specific key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        true if the key exists in the JSONObject.
        +
      • +
      + + + +
        +
      • +

        increment

        +
        public JSONObject increment(java.lang.String key)
        +
        Increment a property of a JSONObject. If there is no such property, + create one with a value of 1. If there is such a property, and if it is + an Integer, Long, Double, or Float, then add one to it.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If there is already a property with this name that is not an + Integer, Long, Double, or Float.
        +
      • +
      + + + +
        +
      • +

        isNull

        +
        public boolean isNull(java.lang.String key)
        +
        Determine if the value associated with the key is null or if there is no + value.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        true if there is no value associated with the key or if the value + is the JSONObject.NULL object.
        +
      • +
      + + + +
        +
      • +

        keys

        +
        public java.util.Iterator keys()
        +
        Get an enumeration of the keys of the JSONObject.
        +
        Returns:
        An iterator of the keys.
        +
      • +
      + + + +
        +
      • +

        length

        +
        public int length()
        +
        Get the number of keys stored in the JSONObject.
        +
        Returns:
        The number of keys in the JSONObject.
        +
      • +
      + + + +
        +
      • +

        names

        +
        public JSONArray names()
        +
        Produce a JSONArray containing the names of the elements of this + JSONObject.
        +
        Returns:
        A JSONArray containing the key strings, or null if the JSONObject + is empty.
        +
      • +
      + + + +
        +
      • +

        numberToString

        +
        public static java.lang.String numberToString(java.lang.Number number)
        +
        Produce a string from a Number.
        +
        Parameters:
        number - A Number
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException - If n is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        opt

        +
        public java.lang.Object opt(java.lang.String key)
        +
        Get an optional value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value, or null if there is no value.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(java.lang.String key)
        +
        Get an optional boolean associated with a key. It returns false if there + is no such key, or if the value is not Boolean.TRUE or the String "true".
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(java.lang.String key,
        +                 boolean defaultValue)
        +
        Get an optional boolean associated with a key. It returns the + defaultValue if there is no such key, or if it is not a Boolean or the + String "true" or "false" (case insensitive).
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(java.lang.String key)
        +
        Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number. If the value is a string, an attempt + will be made to evaluate it as a number.
        +
        Parameters:
        key - A string which is the key.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(java.lang.String key,
        +               double defaultValue)
        +
        Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number. If the value is a + string, an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(java.lang.String key)
        +
        Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(java.lang.String key,
        +         int defaultValue)
        +
        Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optJSONArray

        +
        public JSONArray optJSONArray(java.lang.String key)
        +
        Get an optional JSONArray associated with a key. It returns null if there + is no such key, or if its value is not a JSONArray.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONArray which is the value.
        +
      • +
      + + + +
        +
      • +

        optJSONObject

        +
        public JSONObject optJSONObject(java.lang.String key)
        +
        Get an optional JSONObject associated with a key. It returns null if + there is no such key, or if its value is not a JSONObject.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONObject which is the value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(java.lang.String key)
        +
        Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(java.lang.String key,
        +           long defaultValue)
        +
        Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(java.lang.String key)
        +
        Get an optional string associated with a key. It returns an empty string + if there is no such key. If the value is not a string and is not null, + then it is converted to a string.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A string which is the value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(java.lang.String key,
        +                         java.lang.String defaultValue)
        +
        Get an optional string associated with a key. It returns the defaultValue + if there is no such key.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        A string which is the value.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             boolean value)
        +
        Put a key/boolean pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A boolean which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             java.util.Collection value)
        +
        Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        key - A key string.
        value - A Collection value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             double value)
        +
        Put a key/double pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A double which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null or if the number is invalid.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             int value)
        +
        Put a key/int pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - An int which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             long value)
        +
        Put a key/long pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A long which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             java.util.Map value)
        +
        Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
        +
        Parameters:
        key - A key string.
        value - A Map value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObject put(java.lang.String key,
        +             java.lang.Object value)
        +
        Put a key/value pair in the JSONObject. If the value is null, then the + key will be removed from the JSONObject if it is present.
        +
        Parameters:
        key - A key string.
        value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is non-finite number or if the key is null.
        +
      • +
      + + + +
        +
      • +

        putOnce

        +
        public JSONObject putOnce(java.lang.String key,
        +                 java.lang.Object value)
        +
        Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
        +
        Parameters:
        key -
        value -
        +
        Returns:
        his.
        +
        Throws:
        +
        JSONException - if the key is a duplicate
        +
      • +
      + + + +
        +
      • +

        putOpt

        +
        public JSONObject putOpt(java.lang.String key,
        +                java.lang.Object value)
        +
        Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
        +
        Parameters:
        key - A key string.
        value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        quote

        +
        public static java.lang.String quote(java.lang.String string)
        +
        Produce a string in double quotes with backslash sequences in all the + right places. A backslash will be inserted within +
        Parameters:
        string - A String
        +
        Returns:
        A String correctly formatted for insertion in a JSON text.
        +
      • +
      + + + +
        +
      • +

        remove

        +
        public java.lang.Object remove(java.lang.String key)
        +
        Remove a name and its value, if present.
        +
        Parameters:
        key - The name to be removed.
        +
        Returns:
        The value that was associated with the name, or null if there was + no value.
        +
      • +
      + + + +
        +
      • +

        stringToValue

        +
        public static java.lang.Object stringToValue(java.lang.String string)
        +
        Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string.
        +
        Parameters:
        string - A String.
        +
        Returns:
        A simple JSON value.
        +
      • +
      + + + +
        +
      • +

        testValidity

        +
        public static void testValidity(java.lang.Object o)
        +                         throws JSONException
        +
        Throw an exception if the object is a NaN or infinite number.
        +
        Parameters:
        o - The object to test.
        +
        Throws:
        +
        JSONException - If o is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public JSONArray toJSONArray(JSONArray names)
        +                      throws JSONException
        +
        Produce a JSONArray containing the values of the members of this + JSONObject.
        +
        Parameters:
        names - A JSONArray containing a list of key strings. This determines + the sequence of the values in the result.
        +
        Returns:
        A JSONArray of values.
        +
        Throws:
        +
        JSONException - If any of the values are non-finite numbers.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a JSON text of this JSONObject. For compactness, no whitespace is + added. If this would not result in a syntactically correct JSON text, + then null will be returned instead. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString(int indentFactor)
        +
        Make a prettyprinted JSON text of this JSONObject. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Parameters:
        indentFactor - The number of spaces to add to each level of indentation.
        +
        Returns:
        a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
        +
        Throws:
        +
        JSONException - If the object contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        valueToString

        +
        public static java.lang.String valueToString(java.lang.Object value)
        +
        Make a JSON text of an Object value. If the object has an + value.toJSONString() method, then that method will be used to produce the + JSON text. The method is required to produce a strictly conforming text. + If the object does not contain a toJSONString method (which is the most + common case), then a text will be produced by other means. If the value + is an array or Collection, then a JSONArray will be made from it and its + toJSONString method will be called. If the value is a MAP, then a + JSONObject will be made from it and its toJSONString method will be + called. Otherwise, the value's toString method will be called, and the + result will be quoted. + +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Parameters:
        value - The value to be serialized.
        +
        Returns:
        a printable, displayable, transmittable representation of the + object, beginning with { (left + brace) and ending with } (right + brace).
        +
        Throws:
        +
        JSONException - If the value is or contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        wrap

        +
        public static java.lang.Object wrap(java.lang.Object object)
        +
        Wrap an object, if necessary. If the object is null, return the NULL + object. If it is an array or collection, wrap it in a JSONArray. If it is + a map, wrap it in a JSONObject. If it is a standard property (Double, + String, et al) then it is already wrapped. Otherwise, if it comes from + one of the java packages, turn it into a string. And if it doesn't, try + to wrap it in a JSONObject. If the wrapping fails, then null is returned.
        +
        Parameters:
        object - The object to wrap
        +
        Returns:
        The wrapped value
        +
      • +
      + + + +
        +
      • +

        write

        +
        public java.io.Writer write(java.io.Writer writer)
        +
        Write the contents of the JSONObject as JSON text to a writer. For + compactness, no whitespace is added. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Returns:
        The writer.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONString.html b/distribution/json4processing-0.1.5/reference/org/json/JSONString.html new file mode 100644 index 000000000..dc181defe --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONString.html @@ -0,0 +1,215 @@ + + + + + +JSONString (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Interface JSONString

+
+
+
+
    +
  • +
    +
    +
    public interface JSONString
    +
    The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object). The + toJSONString method will be used instead of the default behavior + of using the Object's toString() method and quoting the result.
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.StringtoJSONString() +
      The toJSONString method allows a class to produce its own JSON + serialization.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONString

        +
        java.lang.String toJSONString()
        +
        The toJSONString method allows a class to produce its own JSON + serialization.
        +
        Returns:
        A strictly syntactically correct JSON text.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.5/reference/org/json/JSONStringer.html new file mode 100644 index 000000000..afdd6951c --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONStringer.html @@ -0,0 +1,307 @@ + + + + + +JSONStringer (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONStringer

+
+
+ +
+
    +
  • +
    +
    +
    public class JSONStringer
    +extends JSONWriter
    +
    JSONStringer provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONStringer can produce one JSON text. +

    + A JSONStringer instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting cascade style. For example,

    + myString = new JSONStringer()
    +     .object()
    +         .key("JSON")
    +         .value("Hello, World!")
    +     .endObject()
    +     .toString();
    which produces the string
    + {"JSON":"Hello, World!"}
    +

    + The first method called must be array or object. + There are no methods for adding commas or colons. JSONStringer adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

    + This can sometimes be easier than using a JSONObject to build a string.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONStringer() +
      Make a fresh JSONStringer.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONStringer

        +
        public JSONStringer()
        +
        Make a fresh JSONStringer. It can be used to build one JSON text.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Return the JSON text. This method is used to obtain the product of the + JSONStringer instance. It will return null if there was a + problem in the construction of the JSON text (such as the calls to + array were not properly balanced with calls to + endArray).
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        The JSON text.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.5/reference/org/json/JSONTokener.html new file mode 100644 index 000000000..03fcde39f --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONTokener.html @@ -0,0 +1,601 @@ + + + + + +JSONTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONTokener

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONTokener
    • +
    +
  • +
+
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    HTTPTokener, XMLTokener
    +
    +
    +
    +
    public class JSONTokener
    +extends java.lang.Object
    +
    A JSONTokener takes a source string and extracts characters and tokens from + it. It is used by the JSONObject and JSONArray constructors to parse + JSON source strings.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONTokener(java.io.InputStream inputStream) +
      Construct a JSONTokener from an InputStream.
      +
      JSONTokener(java.io.Reader reader) +
      Construct a JSONTokener from a Reader.
      +
      JSONTokener(java.lang.String s) +
      Construct a JSONTokener from a string.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidback() +
      Back up one character.
      +
      static intdehexchar(char c) +
      Get the hex value of a character (base16).
      +
      booleanend() 
      booleanmore() +
      Determine if the source string still contains characters that next() + can consume.
      +
      charnext() +
      Get the next character in the source string.
      +
      charnext(char c) +
      Consume the next character, and check that it matches a specified + character.
      +
      java.lang.Stringnext(int n) +
      Get the next n characters.
      +
      charnextClean() +
      Get the next char in the string, skipping whitespace.
      +
      java.lang.StringnextString(char quote) +
      Return the characters up to the next close quote character.
      +
      java.lang.StringnextTo(char delimiter) +
      Get the text up but not including the specified character or the + end of line, whichever comes first.
      +
      java.lang.StringnextTo(java.lang.String delimiters) +
      Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
      +
      java.lang.ObjectnextValue() +
      Get the next value.
      +
      charskipTo(char to) +
      Skip characters until the next character is the requested character.
      +
      JSONExceptionsyntaxError(java.lang.String message) +
      Make a JSONException to signal a syntax error.
      +
      java.lang.StringtoString() +
      Make a printable string of this JSONTokener.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.io.Reader reader)
        +
        Construct a JSONTokener from a Reader.
        +
        Parameters:
        reader - A reader.
        +
      • +
      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.io.InputStream inputStream)
        +            throws JSONException
        +
        Construct a JSONTokener from an InputStream.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.lang.String s)
        +
        Construct a JSONTokener from a string.
        +
        Parameters:
        s - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        back

        +
        public void back()
        +          throws JSONException
        +
        Back up one character. This provides a sort of lookahead capability, + so that you can test for a digit or letter before attempting to parse + the next number or identifier.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        dehexchar

        +
        public static int dehexchar(char c)
        +
        Get the hex value of a character (base16).
        +
        Parameters:
        c - A character between '0' and '9' or between 'A' and 'F' or + between 'a' and 'f'.
        +
        Returns:
        An int between 0 and 15, or -1 if c was not a hex digit.
        +
      • +
      + + + +
        +
      • +

        end

        +
        public boolean end()
        +
      • +
      + + + +
        +
      • +

        more

        +
        public boolean more()
        +             throws JSONException
        +
        Determine if the source string still contains characters that next() + can consume.
        +
        Returns:
        true if not yet at the end of the source.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        next

        +
        public char next()
        +          throws JSONException
        +
        Get the next character in the source string.
        +
        Returns:
        The next character, or 0 if past the end of the source string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        next

        +
        public char next(char c)
        +          throws JSONException
        +
        Consume the next character, and check that it matches a specified + character.
        +
        Parameters:
        c - The character to match.
        +
        Returns:
        The character.
        +
        Throws:
        +
        JSONException - if the character does not match.
        +
      • +
      + + + +
        +
      • +

        next

        +
        public java.lang.String next(int n)
        +                      throws JSONException
        +
        Get the next n characters.
        +
        Parameters:
        n - The number of characters to take.
        +
        Returns:
        A string of n characters.
        +
        Throws:
        +
        JSONException - Substring bounds error if there are not + n characters remaining in the source string.
        +
      • +
      + + + +
        +
      • +

        nextClean

        +
        public char nextClean()
        +               throws JSONException
        +
        Get the next char in the string, skipping whitespace.
        +
        Returns:
        A character, or 0 if there are no more characters.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextString

        +
        public java.lang.String nextString(char quote)
        +                            throws JSONException
        +
        Return the characters up to the next close quote character. + Backslash processing is done. The formal JSON format does not + allow strings in single quotes, but an implementation is allowed to + accept them.
        +
        Parameters:
        quote - The quoting character, either + " (double quote) or + ' (single quote).
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException - Unterminated string.
        +
      • +
      + + + +
        +
      • +

        nextTo

        +
        public java.lang.String nextTo(char delimiter)
        +                        throws JSONException
        +
        Get the text up but not including the specified character or the + end of line, whichever comes first.
        +
        Parameters:
        delimiter - A delimiter character.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextTo

        +
        public java.lang.String nextTo(java.lang.String delimiters)
        +                        throws JSONException
        +
        Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
        +
        Parameters:
        delimiters - A set of delimiter characters.
        +
        Returns:
        A string, trimmed.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextValue

        +
        public java.lang.Object nextValue()
        +                           throws JSONException
        +
        Get the next value. The value can be a Boolean, Double, Integer, + JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object.
        +
        Returns:
        An object.
        +
        Throws:
        +
        JSONException - If syntax error.
        +
      • +
      + + + +
        +
      • +

        skipTo

        +
        public char skipTo(char to)
        +            throws JSONException
        +
        Skip characters until the next character is the requested character. + If the requested character is not found, no characters are skipped.
        +
        Parameters:
        to - A character to skip to.
        +
        Returns:
        The requested character, or zero if the requested character + is not found.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        syntaxError

        +
        public JSONException syntaxError(java.lang.String message)
        +
        Make a JSONException to signal a syntax error.
        +
        Parameters:
        message - The error message.
        +
        Returns:
        A JSONException object, suitable for throwing
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a printable string of this JSONTokener.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        " at {index} [character {character} line {line}]"
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.5/reference/org/json/JSONWriter.html new file mode 100644 index 000000000..04cbcfabb --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/JSONWriter.html @@ -0,0 +1,474 @@ + + + + + +JSONWriter (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONWriter

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONWriter
    • +
    +
  • +
+
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    JSONStringer
    +
    +
    +
    +
    public class JSONWriter
    +extends java.lang.Object
    +
    JSONWriter provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONWriter can produce one JSON text. +

    + A JSONWriter instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting a cascade style. For example,

    + new JSONWriter(myWriter)
    +     .object()
    +         .key("JSON")
    +         .value("Hello, World!")
    +     .endObject();
    which writes
    + {"JSON":"Hello, World!"}
    +

    + The first method called must be array or object. + There are no methods for adding commas or colons. JSONWriter adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

    + This can sometimes be easier than using a JSONObject to build a string.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONWriter(java.io.Writer w) +
      Make a fresh JSONWriter.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      JSONWriterarray() +
      Begin appending a new array.
      +
      JSONWriterendArray() +
      End an array.
      +
      JSONWriterendObject() +
      End an object.
      +
      JSONWriterkey(java.lang.String string) +
      Append a key.
      +
      JSONWriterobject() +
      Begin appending a new object.
      +
      JSONWritervalue(boolean b) +
      Append either the value true or the value + false.
      +
      JSONWritervalue(double d) +
      Append a double value.
      +
      JSONWritervalue(long l) +
      Append a long value.
      +
      JSONWritervalue(java.lang.Object object) +
      Append an object value.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONWriter

        +
        public JSONWriter(java.io.Writer w)
        +
        Make a fresh JSONWriter. It can be used to build one JSON text.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        array

        +
        public JSONWriter array()
        +                 throws JSONException
        +
        Begin appending a new array. All values until the balancing + endArray will be appended to this array. The + endArray method must be called to mark the array's end.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
        +
      • +
      + + + +
        +
      • +

        endArray

        +
        public JSONWriter endArray()
        +                    throws JSONException
        +
        End an array. This method most be called to balance calls to + array.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If incorrectly nested.
        +
      • +
      + + + +
        +
      • +

        endObject

        +
        public JSONWriter endObject()
        +                     throws JSONException
        +
        End an object. This method most be called to balance calls to + object.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If incorrectly nested.
        +
      • +
      + + + +
        +
      • +

        key

        +
        public JSONWriter key(java.lang.String string)
        +               throws JSONException
        +
        Append a key. The key will be associated with the next value. In an + object, every value must be preceded by a key.
        +
        Parameters:
        string - A key string.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the key is out of place. For example, keys + do not belong in arrays or if the key is null.
        +
      • +
      + + + +
        +
      • +

        object

        +
        public JSONWriter object()
        +                  throws JSONException
        +
        Begin appending a new object. All keys and values until the balancing + endObject will be appended to this object. The + endObject method must be called to mark the object's end.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
        +
      • +
      + + + +
        +
      • +

        value

        +
        public JSONWriter value(boolean b)
        +                 throws JSONException
        +
        Append either the value true or the value + false.
        +
        Parameters:
        b - A boolean.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        value

        +
        public JSONWriter value(double d)
        +                 throws JSONException
        +
        Append a double value.
        +
        Parameters:
        d - A double.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the number is not finite.
        +
      • +
      + + + + + + + +
        +
      • +

        value

        +
        public JSONWriter value(java.lang.Object object)
        +                 throws JSONException
        +
        Append an object value.
        +
        Parameters:
        object - The object to append. It can be null, or a Boolean, Number, + String, JSONObject, or JSONArray, or an object that implements JSONString.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the value is out of sequence.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/XML.html b/distribution/json4processing-0.1.5/reference/org/json/XML.html new file mode 100644 index 000000000..7c7ae0171 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/XML.html @@ -0,0 +1,552 @@ + + + + + +XML (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class XML

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.XML
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class XML
    +extends java.lang.Object
    +
    This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.CharacterAMP +
      The Character '&'.
      +
      static java.lang.CharacterAPOS +
      The Character '''.
      +
      static java.lang.CharacterBANG +
      The Character '!'.
      +
      static java.lang.CharacterEQ +
      The Character '='.
      +
      static java.lang.CharacterGT +
      The Character '>'.
      +
      static java.lang.CharacterLT +
      The Character '<'.
      +
      static java.lang.CharacterQUEST +
      The Character '?'.
      +
      static java.lang.CharacterQUOT +
      The Character '"'.
      +
      static java.lang.CharacterSLASH +
      The Character '/'.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      XML() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static java.lang.Stringescape(java.lang.String string) +
      Replace special characters with XML escapes:
      +
      static voidnoSpace(java.lang.String string) +
      Throw an exception if the string contains whitespace.
      +
      static java.lang.ObjectstringToValue(java.lang.String string) +
      Try to convert a string into a number, boolean, or null.
      +
      static JSONObjecttoJSONObject(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
      +
      static java.lang.StringtoString(java.lang.Object object) +
      Convert a JSONObject into a well-formed, element-normal XML string.
      +
      static java.lang.StringtoString(java.lang.Object object, + java.lang.String tagName) +
      Convert a JSONObject into a well-formed, element-normal XML string.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        AMP

        +
        public static final java.lang.Character AMP
        +
        The Character '&'.
        +
      • +
      + + + +
        +
      • +

        APOS

        +
        public static final java.lang.Character APOS
        +
        The Character '''.
        +
      • +
      + + + +
        +
      • +

        BANG

        +
        public static final java.lang.Character BANG
        +
        The Character '!'.
        +
      • +
      + + + +
        +
      • +

        EQ

        +
        public static final java.lang.Character EQ
        +
        The Character '='.
        +
      • +
      + + + +
        +
      • +

        GT

        +
        public static final java.lang.Character GT
        +
        The Character '>'.
        +
      • +
      + + + +
        +
      • +

        LT

        +
        public static final java.lang.Character LT
        +
        The Character '<'.
        +
      • +
      + + + +
        +
      • +

        QUEST

        +
        public static final java.lang.Character QUEST
        +
        The Character '?'.
        +
      • +
      + + + +
        +
      • +

        QUOT

        +
        public static final java.lang.Character QUOT
        +
        The Character '"'.
        +
      • +
      + + + +
        +
      • +

        SLASH

        +
        public static final java.lang.Character SLASH
        +
        The Character '/'.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XML

        +
        public XML()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        escape

        +
        public static java.lang.String escape(java.lang.String string)
        +
        Replace special characters with XML escapes: +
        + & (ampersand) is replaced by &amp;
        + < (less than) is replaced by &lt;
        + > (greater than) is replaced by &gt;
        + " (double quote) is replaced by &quot;
        + 
        +
        Parameters:
        string - The string to be escaped.
        +
        Returns:
        The escaped string.
        +
      • +
      + + + +
        +
      • +

        noSpace

        +
        public static void noSpace(java.lang.String string)
        +                    throws JSONException
        +
        Throw an exception if the string contains whitespace. + Whitespace is not allowed in tagNames and attributes.
        +
        Parameters:
        string -
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        stringToValue

        +
        public static java.lang.Object stringToValue(java.lang.String string)
        +
        Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. This is much less ambitious than + JSONObject.stringToValue, especially because it does not attempt to + convert plus forms, octal forms, hex forms, or E forms lacking decimal + points.
        +
        Parameters:
        string - A String.
        +
        Returns:
        A simple JSON value.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObject toJSONObject(java.lang.String string)
        +                               throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. Some information may be lost in this transformation + because JSON is a data format and XML is a document format. XML uses + elements, attributes, and content text, while JSON uses unordered + collections of name/value pairs and arrays of values. JSON does not + does not like to distinguish between elements and attributes. + Sequences of similar elements are represented as JSONArrays. Content + text may be placed in a "content" member. Comments, prologs, DTDs, and + <[ [ ]]> are ignored.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(java.lang.Object object)
        +                                 throws JSONException
        +
        Convert a JSONObject into a well-formed, element-normal XML string.
        +
        Parameters:
        object - A JSONObject.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(java.lang.Object object,
        +                        java.lang.String tagName)
        +                                 throws JSONException
        +
        Convert a JSONObject into a well-formed, element-normal XML string.
        +
        Parameters:
        object - A JSONObject.
        tagName - The optional name of the enclosing tag.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.5/reference/org/json/XMLTokener.html new file mode 100644 index 000000000..dae8dba4b --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/XMLTokener.html @@ -0,0 +1,433 @@ + + + + + +XMLTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class XMLTokener

+
+
+ +
+
    +
  • +
    +
    +
    public class XMLTokener
    +extends JSONTokener
    +
    The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.util.HashMapentity +
      The table of entity values.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      XMLTokener(java.lang.String s) +
      Construct an XMLTokener from a string.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        entity

        +
        public static final java.util.HashMap entity
        +
        The table of entity values. It initially contains Character values for + amp, apos, gt, lt, quot.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XMLTokener

        +
        public XMLTokener(java.lang.String s)
        +
        Construct an XMLTokener from a string.
        +
        Parameters:
        s - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        nextCDATA

        +
        public java.lang.String nextCDATA()
        +                           throws JSONException
        +
        Get the text in the CDATA block.
        +
        Returns:
        The string up to the ]]>.
        +
        Throws:
        +
        JSONException - If the ]]> is not found.
        +
      • +
      + + + +
        +
      • +

        nextContent

        +
        public java.lang.Object nextContent()
        +                             throws JSONException
        +
        Get the next XML outer token, trimming whitespace. There are two kinds + of tokens: the '<' character which begins a markup tag, and the content + text between markup tags.
        +
        Returns:
        A string, or a '<' Character, or null if there is no more + source text.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextEntity

        +
        public java.lang.Object nextEntity(char ampersand)
        +                            throws JSONException
        +
        Return the next entity. These entities are translated to Characters: + & ' > < ".
        +
        Parameters:
        ampersand - An ampersand character.
        +
        Returns:
        A Character or an entity String if the entity is not recognized.
        +
        Throws:
        +
        JSONException - If missing ';' in XML entity.
        +
      • +
      + + + +
        +
      • +

        nextMeta

        +
        public java.lang.Object nextMeta()
        +                          throws JSONException
        +
        Returns the next XML meta token. This is used for skipping over + and structures.
        +
        Returns:
        Syntax characters (< > / = ! ?) are returned as + Character, and strings and names are returned as Boolean. We don't care + what the values actually are.
        +
        Throws:
        +
        JSONException - If a string is not properly closed or if the XML + is badly structured.
        +
      • +
      + + + +
        +
      • +

        nextToken

        +
        public java.lang.Object nextToken()
        +                           throws JSONException
        +
        Get the next XML Token. These tokens are found inside of angle + brackets. It may be one of these characters: / > = ! ? or it + may be a string wrapped in single quotes or double quotes, or it may be a + name.
        +
        Returns:
        a String or a Character.
        +
        Throws:
        +
        JSONException - If the XML is not well formed.
        +
      • +
      + + + +
        +
      • +

        skipPast

        +
        public boolean skipPast(java.lang.String to)
        +                 throws JSONException
        +
        Skip characters until past the requested string. + If it is not found, we are left at the end of the source with a result of false.
        +
        Parameters:
        to - A string to skip past.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/package-frame.html b/distribution/json4processing-0.1.5/reference/org/json/package-frame.html new file mode 100644 index 000000000..a496ebacb --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/package-frame.html @@ -0,0 +1,39 @@ + + + + + +org.json (Javadocs: json4processing) + + + + +

org.json

+ + + diff --git a/distribution/json4processing-0.1.5/reference/org/json/package-summary.html b/distribution/json4processing-0.1.5/reference/org/json/package-summary.html new file mode 100644 index 000000000..69246461f --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/package-summary.html @@ -0,0 +1,248 @@ + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + +
+

Package org.json

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    JSONString +
    The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    CDL +
    This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
    +
    Cookie +
    Convert a web browser cookie specification to a JSONObject and back.
    +
    CookieList +
    Convert a web browser cookie list string to a JSONObject and back.
    +
    HTTP +
    Convert an HTTP header to a JSONObject and back.
    +
    HTTPTokener +
    The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
    +
    JSONArray +
    A JSONArray is an ordered sequence of values.
    +
    JSONML +
    This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
    +
    JSONObject +
    A JSONObject is an unordered collection of name/value pairs.
    +
    JSONStringer +
    JSONStringer provides a quick and convenient way of producing JSON text.
    +
    JSONTokener +
    A JSONTokener takes a source string and extracts characters and tokens from + it.
    +
    JSONWriter +
    JSONWriter provides a quick and convenient way of producing JSON text.
    +
    XML +
    This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
    +
    XMLTokener +
    The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    JSONException +
    The JSONException is thrown by the JSON.org classes when things are amiss.
    +
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/org/json/package-tree.html b/distribution/json4processing-0.1.5/reference/org/json/package-tree.html new file mode 100644 index 000000000..a582468af --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/org/json/package-tree.html @@ -0,0 +1,152 @@ + + + + + +org.json Class Hierarchy (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.json

+
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/overview-tree.html b/distribution/json4processing-0.1.5/reference/overview-tree.html new file mode 100644 index 000000000..d98b2ba7b --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/overview-tree.html @@ -0,0 +1,156 @@ + + + + + +Class Hierarchy (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/package-list b/distribution/json4processing-0.1.5/reference/package-list new file mode 100644 index 000000000..ccf841806 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/package-list @@ -0,0 +1 @@ +org.json diff --git a/distribution/json4processing-0.1.5/reference/resources/background.gif b/distribution/json4processing-0.1.5/reference/resources/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..f471940fde2f39ef8943a6af9569bcf986b1579b GIT binary patch literal 2313 zcmV+k3HJ6!Nk%w1VKM-40OkMy00030|NlK(aXwsfKV5S}VtGJbbVOr%L0@%CZH88Q zl{{NzcR^uxNo<2iYk@pjY)*5FJz8x~bc{)B zfk z+1T6M-s9WdW8dcJ-wO*3@9+W*5AY543-j^$^!EPz_4eHZ2#>)41`h@dc!2OAgN6$a zCS2I?;lqgx6IR4nkpTe;1RN0f=zxMq2O=q`94V5d$&e>Unta)^<;;^G3>e7yp=ZvW z6DIW3xpSvaogXF?_4%`@(V;s}NR^5J!3hrtJV@1QRV&r5S*L!zYE|rss${iFkg&!? zTN5V#)~=bmMorwgZsEpdOE)iExo+FO-8;8Kga{=HbSQCnF=E6W3?o*|ID%uwi5**> zJXy127Y9m+=HQ|PhXWi+xNwoWv}n_%Pq%(e+H~mGqhq5kv4Mo|-n~g|7!F*xZ{xv< zCpXS~dGg^IGK?4@J-T%b(XnUHFul6n<@2&4)zzyO2) z3Q8`i0+UKY*`$}e9mmp;tg*))`|PsK1|hAo%u0K$vDwm4gaSkm0j{`26k#qAKmbuhxZ#cquDR>B zD{s8+&TH-uNg$C#68QG}1HMBHfrP&L@@w$F_!itRzXdCN@V|LDAu%3!IDtq1#1UV7 z#1RxvT=B(DWbCoU5l=ia$Pp`Hgb_?Mp@hmtxZDI2N-)v#$}PXVvdm1d>@v(v`0TUJ zF)Pu89(q`zv=w^nVTIF3@3BYIPA}c`(@ZCAwbNBEt@PDUKe5CTR8aB66IE1!w%Amt zy+jpcn~k>GZpVFg+H6x{_uOksvBlq0OyT$6TyQZ37k(cOxZr|JEx1sGm<(M9gH z-~PMqyn|tT=))UN`|-FFFUA#KToK0fUOaz=7}Z~KeHhVC&%O27cTfHQ^WBU8z4p&T zp#>D|V}XShTD;Hx745Iz{`>K-Z$A|7!*Boo{mY;G21vjH8t{M!OrQc6$iN0V@PQDF zpadsK!3tXNf*8!81~qnXWuHZ)kytd=_y+ADWvw31ouV;CdZ#ya*(l7-A-C-Y^+iit8O zBy3*`Ls$|5Hn4m_^I^|C7{m7EFn|5vTk;|oywIgCc9Bb*=L+Y$)M>9GC<|HGs@6NB zHLY%03!dDf=eDRt2O6lVSFRcsuWZEwU?=z$CZ0W?#VJfdN>HG(l%oKpyiftJc|Y)xkjSJYCrQal-0PC~()T9xwF!Jf zVi1UA#3BBbh(i8r5&v#Pz!cF41KjbCc?4u2@@Q~oKLirt2TM30;y6b+zyX2`Yl9u; z`0$3;v0-YUp&7NdPT#q`cZlbij$jvbRk6R>8g*>}*b9E+WDwmpHAAxYzyT aU_pX{M6b8i>#Dq3onfZy}_nli%!Q$ZV%e&!tN2 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 YpWXKgmku8Vj|K)Vje`mzEKCg608Q#dYybcN literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.5/reference/serialized-form.html b/distribution/json4processing-0.1.5/reference/serialized-form.html new file mode 100644 index 000000000..c38a4d113 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/serialized-form.html @@ -0,0 +1,142 @@ + + + + + +Serialized Form (Javadocs: json4processing) + + + + + + + + + + +
+

Serialized Form

+
+
+
    +
  • +

    Package org.json

    +
      +
    • + + +

      Class org.json.JSONException extends java.lang.Exception implements Serializable

      +
      +
      serialVersionUID:
      +
      0L
      +
      +
        +
      • + + +

        Serialized Fields

        +
          +
        • +

          cause

          +
          java.lang.Throwable cause
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.5/reference/stylesheet.css b/distribution/json4processing-0.1.5/reference/stylesheet.css new file mode 100644 index 000000000..1f18ea6a7 --- /dev/null +++ b/distribution/json4processing-0.1.5/reference/stylesheet.css @@ -0,0 +1,310 @@ +/* Javadoc style sheet */ +/* Define colors, fonts and other style attributes here to override the defaults */ +/* processingLibs style by andreas schlegel, sojamo */ + + +body { + margin : 0; + padding : 0; + padding-left : 10px; + padding-right : 8px; + background-color : #FFFFFF; + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.7em; + font-weight : normal; + line-height : normal; + margin-bottom:30px; +} + + + + +/* Headings */ +h1, h2, h3, h4, h5, th { + font-family :Arial, Helvetica, sans-serif; + font-size:1.2em; +} + + +p { + font-size : 1em; + width:80%; +} + +pre, code { + font-family : "Courier New", Courier, monospace; + font-size : 12px; + line-height : normal; +} + + + +table { + border:0; + margin-bottom:10px; + margin-top:10px; +} + + +tr, td { + border-top: 0px solid; + border-left: 0px solid; + padding-top:8px; + padding-bottom:8px; +} + + + +hr { + border:0; + height:1px; + padding:0; + margin:0; + margin-bottom:4px; + +} + + + +dd, th, td, font { + font-size:1.0em; + line-height:1.0em; +} + + + +dt { + margin-bottom:0px; +} + + + +dd { + margin-top:2px; + margin-bottom:4px; +} + + + +a { + text-decoration: underline; + font-weight: normal; +} + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + +img { + border: 0px solid #000000; +} + + + +/* Navigation bar fonts */ +.NavBarCell1 { + border:0; +} + +.NavBarCell1Rev { + border:0; +} + +.NavBarFont1 { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + + +.NavBarFont1 b { + font-weight:normal; +} + + + +.NavBarFont1:after, .NavBarFont1Rev:after { + font-weight:normal; + content: " \\"; +} + + +.NavBarFont1Rev { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + +.NavBarFont1Rev b { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; + font-weight:normal; +} + +.NavBarCell2 { + font-family: Arial, Helvetica, sans-serif; +} + +.NavBarCell3 { + font-family: Arial, Helvetica, sans-serif; +} + + + +font.FrameItemFont { + font-family: Helvetica, Arial, sans-serif; + font-size:1.1em; + line-height:1.1em; +} + +font.FrameHeadingFont { + font-family: Helvetica, Arial, sans-serif; + line-height:32px; +} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { + font-family: Helvetica, Arial, sans-serif +} + + +.toggleList { + padding:0; + margin:0; + margin-top:12px; +} + +.toggleList dt { + font-weight:bold; + font-size:12px; + font-family:arial,sans-serif; + padding:0px; + margin:10px 0px 10px 0px; +} + +.toggleList dt span { + font-family: monospace; + padding:0; + margin:0; +} + + +.toggleList dd { + margin:0; + padding:0; +} + +html.isjs .toggleList dd { + display: none; +} + +.toggleList pre { + padding: 4px 4px 4px 4px; +} + + + + + +/* COLORS */ + +pre, code { + color: #000000; +} + + +body { + color : #333333; + background-color :#FFFFFF; +} + + +h1, h2, h3, h4, h5, h6 { + color:#555; +} + +a, +.toggleList dt { + color: #1a7eb0; +} + +a:hover, +a:active { + color: #1a7eb0; +} + +a:visited, +a:link:visited { + color: #1a7eb0; +} + +td,tr { + border-color: #999999; +} + +hr { + color:#999999; + background:#999999; +} + + +.TableHeadingColor { + background: #dcdcdc; + color: #555; +} + + +.TableSubHeadingColor { + background: #EEEEFF +} + +.TableRowColor { + background: #FFFFFF +} + + +.NavBarCell1 { + background-color:#dcdcdc; + color:#000; +} + +.NavBarCell1 a { + color:#333; +} + + +.NavBarCell1Rev { + background-color:transparent; +} + +.NavBarFont1 { + color:#333; +} + + +.NavBarFont1Rev { + color:#fff; +} + +.NavBarCell2 { + background-color:#999; +} + +.NavBarCell2 a { + color:#fff; +} + + + +.NavBarCell3 { + background-color:#dcdcdc; +} + diff --git a/distribution/json4processing-0.1.5/stylesheet.css b/distribution/json4processing-0.1.5/stylesheet.css new file mode 100644 index 000000000..646d20063 --- /dev/null +++ b/distribution/json4processing-0.1.5/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} diff --git a/resources/build.properties b/resources/build.properties index 8a623648d..4d570496d 100644 --- a/resources/build.properties +++ b/resources/build.properties @@ -97,7 +97,7 @@ project.compile=normal # set the current version of your project. -project.version=0.1.4 +project.version=0.1.5 project.copyright=(c) 2011 project.dependencies=? project.keywords=? diff --git a/src/org/json/JSONArray.java b/src/org/json/JSONArray.java index 241482877..a65c3d7d0 100644 --- a/src/org/json/JSONArray.java +++ b/src/org/json/JSONArray.java @@ -187,10 +187,11 @@ public JSONArray(Object array) /*throws JSONException*/ { * @return An object value. * @throws JSONException If there is no value for the index. */ - public Object get(int index) throws JSONException { + public Object get(int index) /*throws JSONException*/ { Object object = opt(index); if (object == null) { - throw new JSONException("JSONArray[" + index + "] not found."); + //throw new JSONException("JSONArray[" + index + "] not found."); + System.out.println("JSONArray[" + index + "] not found."); } return object; } @@ -287,12 +288,12 @@ public JSONArray getJSONArray(int index) throws JSONException { */ public JSONObject getJSONObject(int index) /*throws JSONException*/ { Object object = null; - try { +// try { object = get(index); - } catch (JSONException e) { +// } catch (JSONException e) { // e.printStackTrace(); - System.out.println( "JSONArray[" + index + "] is not a JSONObject." ); - } +// System.out.println( "JSONArray[" + index + "] is not a JSONObject." ); +// } if( object == null ) return null; From 19e49af0e8df163215ab4ab3c276a701fdc154a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20G=C3=B6ransson?= Date: Mon, 18 Mar 2013 11:47:46 +0100 Subject: [PATCH 17/38] Information regarding the core-library Added information about the introduction of the core JSON libray in Processing. --- .settings/org.eclipse.core.resources.prefs | 1 - README.md | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 65d33d245..efc68c026 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,2 @@ -#Tue Feb 21 10:36:23 CET 2012 eclipse.preferences.version=1 encoding//examples/reading_yahoo_weather/reading_yahoo_weather.pde=UTF-8 diff --git a/README.md b/README.md index 61354e64f..7396075c9 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ This library is simply a fork of the original JSON for [Java library written by Douglas Crockford](https://github.com/douglascrockford/JSON-java) for easy use inside Processing IDE. See the original README below. +# Since Processing 2.0 beta 8 + +Since the beta release (8) of Processing 2.0 (February 24) JSON is part of the core libraries; the combination of this contributed library and the core library will cause the "type is ambiguous" error, basically meaning that Processing doesnt know which of the libraries to use. The simplest way to combat this is to delete the json4processing library. + # Installation in Processing 1. Download the latest version [here](https://github.com/agoransson/JSON-processing/downloads) From 13d015427035aa4866cdad8c13dd69b5daf0a675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20G=C3=B6ransson?= Date: Fri, 22 Mar 2013 17:46:55 +0100 Subject: [PATCH 18/38] First version singular json API --- .../download/json4processing-0.1.6.zip | Bin 0 -> 218226 bytes .../create_jsonarray/create_jsonarray.pde | 23 + .../create_jsonarray_of_objects.pde | 31 + .../create_jsonobject/create_jsonobject.pde | 22 + .../create_jsonobject_from_httpheader.pde | 57 + .../create_jsonobject_from_string.pde | 20 + .../reading_yahoo_weather.pde | 37 + .../write_jsonarray_of_objects.pde | 56 + distribution/json4processing-0.1.6/index.html | 132 + .../reference/allclasses-frame.html | 34 + .../reference/allclasses-noframe.html | 34 + .../reference/constant-values.html | 141 + .../reference/deprecated-list.html | 112 + .../reference/help-doc.html | 209 ++ .../reference/index-all.html | 1187 ++++++ .../reference/index.html | 30 + .../reference/org/json/CDL.html | 470 +++ .../reference/org/json/Cookie.html | 347 ++ .../reference/org/json/CookieList.html | 295 ++ .../reference/org/json/HTTP.html | 363 ++ .../reference/org/json/HTTPTokener.html | 280 ++ .../reference/org/json/JSON.JSONType.html | 334 ++ .../reference/org/json/JSON.html | 520 +++ .../reference/org/json/JSONArr.html | 1284 +++++++ .../reference/org/json/JSONException.html | 298 ++ .../reference/org/json/JSONML.html | 404 ++ .../reference/org/json/JSONObj.html | 1626 ++++++++ .../reference/org/json/JSONString.html | 215 ++ .../reference/org/json/JSONStringer.html | 307 ++ .../reference/org/json/JSONTokener.html | 557 +++ .../reference/org/json/JSONWriter.html | 474 +++ .../reference/org/json/XML.html | 552 +++ .../reference/org/json/XMLTokener.html | 427 +++ .../reference/org/json/package-frame.html | 44 + .../reference/org/json/package-summary.html | 270 ++ .../reference/org/json/package-tree.html | 165 + .../reference/overview-tree.html | 169 + .../reference/package-list | 1 + .../reference/resources/background.gif | Bin 0 -> 2313 bytes .../reference/resources/tab.gif | Bin 0 -> 291 bytes .../reference/resources/titlebar.gif | Bin 0 -> 10701 bytes .../reference/resources/titlebar_end.gif | Bin 0 -> 849 bytes .../reference/serialized-form.html | 142 + .../reference/stylesheet.css | 310 ++ .../json4processing-0.1.6/stylesheet.css | 203 + resources/build.properties | 248 +- src/org/json/CDL.java | 38 +- src/org/json/Cookie.java | 10 +- src/org/json/CookieList.java | 6 +- src/org/json/HTTP.java | 6 +- src/org/json/HTTPTokener.java | 2 +- src/org/json/JSON.java | 3298 +++++++++++++++++ src/org/json/{JSONArray.java => JSONArr.java} | 1886 +++++----- src/org/json/JSONML.java | 76 +- .../json/{JSONObject.java => JSONObj.java} | 204 +- src/org/json/JSONTokener.java | 749 ++-- src/org/json/JSONWriter.java | 12 +- src/org/json/XML.java | 59 +- src/org/json/XMLTokener.java | 28 +- 59 files changed, 17139 insertions(+), 1665 deletions(-) create mode 100644 distribution/json4processing-0.1.6/download/json4processing-0.1.6.zip create mode 100644 distribution/json4processing-0.1.6/examples/create_jsonarray/create_jsonarray.pde create mode 100644 distribution/json4processing-0.1.6/examples/create_jsonarray_of_objects/create_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.6/examples/create_jsonobject/create_jsonobject.pde create mode 100644 distribution/json4processing-0.1.6/examples/create_jsonobject_from_httpheader/create_jsonobject_from_httpheader.pde create mode 100644 distribution/json4processing-0.1.6/examples/create_jsonobject_from_string/create_jsonobject_from_string.pde create mode 100644 distribution/json4processing-0.1.6/examples/reading_yahoo_weather/reading_yahoo_weather.pde create mode 100644 distribution/json4processing-0.1.6/examples/write_jsonarray_of_objects/write_jsonarray_of_objects.pde create mode 100644 distribution/json4processing-0.1.6/index.html create mode 100644 distribution/json4processing-0.1.6/reference/allclasses-frame.html create mode 100644 distribution/json4processing-0.1.6/reference/allclasses-noframe.html create mode 100644 distribution/json4processing-0.1.6/reference/constant-values.html create mode 100644 distribution/json4processing-0.1.6/reference/deprecated-list.html create mode 100644 distribution/json4processing-0.1.6/reference/help-doc.html create mode 100644 distribution/json4processing-0.1.6/reference/index-all.html create mode 100644 distribution/json4processing-0.1.6/reference/index.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/CDL.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/Cookie.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/CookieList.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/HTTP.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/HTTPTokener.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSON.JSONType.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSON.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONArr.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONException.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONML.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONObj.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONString.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONStringer.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONTokener.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/JSONWriter.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/XML.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/XMLTokener.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/package-frame.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/package-summary.html create mode 100644 distribution/json4processing-0.1.6/reference/org/json/package-tree.html create mode 100644 distribution/json4processing-0.1.6/reference/overview-tree.html create mode 100644 distribution/json4processing-0.1.6/reference/package-list create mode 100644 distribution/json4processing-0.1.6/reference/resources/background.gif create mode 100644 distribution/json4processing-0.1.6/reference/resources/tab.gif create mode 100644 distribution/json4processing-0.1.6/reference/resources/titlebar.gif create mode 100644 distribution/json4processing-0.1.6/reference/resources/titlebar_end.gif create mode 100644 distribution/json4processing-0.1.6/reference/serialized-form.html create mode 100644 distribution/json4processing-0.1.6/reference/stylesheet.css create mode 100644 distribution/json4processing-0.1.6/stylesheet.css create mode 100644 src/org/json/JSON.java rename src/org/json/{JSONArray.java => JSONArr.java} (87%) rename src/org/json/{JSONObject.java => JSONObj.java} (91%) diff --git a/distribution/json4processing-0.1.6/download/json4processing-0.1.6.zip b/distribution/json4processing-0.1.6/download/json4processing-0.1.6.zip new file mode 100644 index 0000000000000000000000000000000000000000..ecde9f0dddba9f25535abdc73f8f4f6b238a82e5 GIT binary patch literal 218226 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 z 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

SwG6rU2#@g`Hymh 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


?t+GH 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

DUxp`qs1SGD8 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≀c* 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 + + +json4processing + + + + + + + + + + + + + + +

+ + + + + +
+ +
+

json4processing

+

+ A library by Andreas Goransson for the programming environment processing. Last update, 03/22/2013. +

+

+ Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. +

+
+ + + +
+

Download

+

+ Download json4processing version 0.1.6 in + .zip format. +

+

Installation

+

+ Unzip and put the extracted json4processing folder into the libraries folder of your processing sketches. Reference and examples are included in the json4processing folder. +

+
+ + +
+

Keywords ?

+

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

+

Source. The source code of json4processing is available at github, and its repository can be browsed here.

+
+ +
+

Examples

+

Find a list of examples in the current distribution of json4processing, or have a look at them by following the links below.

+ +
+ + +
+

Tested

+

+ + Platform linux, windows + + +
Processing 1.5.1 + + +
Dependencies ? +

+
+ + + + + + + + + + + + +
+
+ + +
+ + \ No newline at end of file diff --git a/distribution/json4processing-0.1.6/reference/allclasses-frame.html b/distribution/json4processing-0.1.6/reference/allclasses-frame.html new file mode 100644 index 000000000..c30d384db --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/allclasses-frame.html @@ -0,0 +1,34 @@ + + + + + +All Classes (Javadocs: json4processing) + + + + +

All Classes

+ + + diff --git a/distribution/json4processing-0.1.6/reference/allclasses-noframe.html b/distribution/json4processing-0.1.6/reference/allclasses-noframe.html new file mode 100644 index 000000000..02b38ec6a --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/allclasses-noframe.html @@ -0,0 +1,34 @@ + + + + + +All Classes (Javadocs: json4processing) + + + + +

All Classes

+ + + diff --git a/distribution/json4processing-0.1.6/reference/constant-values.html b/distribution/json4processing-0.1.6/reference/constant-values.html new file mode 100644 index 000000000..ef0211c2f --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/constant-values.html @@ -0,0 +1,141 @@ + + + + + +Constant Field Values (Javadocs: json4processing) + + + + + + + + + + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.json.*

+
    +
  • + + + + + + + + + + + + + + +
    org.json.HTTP 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringCRLF"\r\n"
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/deprecated-list.html b/distribution/json4processing-0.1.6/reference/deprecated-list.html new file mode 100644 index 000000000..e416351d7 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/deprecated-list.html @@ -0,0 +1,112 @@ + + + + + +Deprecated List (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/help-doc.html b/distribution/json4processing-0.1.6/reference/help-doc.html new file mode 100644 index 000000000..0633d6289 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/help-doc.html @@ -0,0 +1,209 @@ + + + + + +API Help (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/index-all.html b/distribution/json4processing-0.1.6/reference/index-all.html new file mode 100644 index 000000000..684679dbb --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/index-all.html @@ -0,0 +1,1187 @@ + + + + + +Index (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
A B C D E G H I J K L M N O P Q R S T U V W X  + + +

A

+
+
accumulate(String, Object) - Method in class org.json.JSONObj
+
+
Accumulate values under a key.
+
+
AMP - Static variable in class org.json.XML
+
+
The Character '&'.
+
+
APOS - Static variable in class org.json.XML
+
+
The Character '''.
+
+
append(String, Object) - Method in class org.json.JSONObj
+
+
Append values to the array under a key.
+
+
array() - Method in class org.json.JSONWriter
+
+
Begin appending a new array.
+
+
+ + + +

B

+
+
back() - Method in class org.json.JSONTokener
+
+
Back up one character.
+
+
BANG - Static variable in class org.json.XML
+
+
The Character '!'.
+
+
+ + + +

C

+
+
CDL - Class in org.json
+
+
This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
+
+
CDL() - Constructor for class org.json.CDL
+
 
+
Cookie - Class in org.json
+
+
Convert a web browser cookie specification to a JSONObject and back.
+
+
Cookie() - Constructor for class org.json.Cookie
+
 
+
CookieList - Class in org.json
+
+
Convert a web browser cookie list string to a JSONObject and back.
+
+
CookieList() - Constructor for class org.json.CookieList
+
 
+
CRLF - Static variable in class org.json.HTTP
+
+
Carriage return/line feed.
+
+
+ + + +

D

+
+
dehexchar(char) - Static method in class org.json.JSONTokener
+
+
Get the hex value of a character (base16).
+
+
doubleToString(double) - Static method in class org.json.JSONObj
+
+
Produce a string from a double.
+
+
+ + + +

E

+
+
end() - Method in class org.json.JSONTokener
+
 
+
endArray() - Method in class org.json.JSONWriter
+
+
End an array.
+
+
endObject() - Method in class org.json.JSONWriter
+
+
End an object.
+
+
entity - Static variable in class org.json.XMLTokener
+
+
The table of entity values.
+
+
EQ - Static variable in class org.json.XML
+
+
The Character '='.
+
+
escape(String) - Static method in class org.json.Cookie
+
+
Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
+
+
escape(String) - Static method in class org.json.XML
+
+
Replace special characters with XML escapes:
+
+
+ + + +

G

+
+
get(int) - Method in class org.json.JSONArr
+
+
Get the object value associated with an index.
+
+
get(String) - Method in class org.json.JSONObj
+
+
Get the value object associated with a key.
+
+
getArray(int) - Method in class org.json.JSON
+
 
+
getBoolean(String) - Method in class org.json.JSON
+
 
+
getBoolean(int) - Method in class org.json.JSON
+
 
+
getBoolean(int) - Method in class org.json.JSONArr
+
+
Get the boolean value associated with an index.
+
+
getBoolean(String) - Method in class org.json.JSONObj
+
+
Get the boolean value associated with a key.
+
+
getCause() - Method in exception org.json.JSONException
+
 
+
getDouble(String) - Method in class org.json.JSON
+
 
+
getDouble(int) - Method in class org.json.JSON
+
 
+
getDouble(int) - Method in class org.json.JSONArr
+
+
Get the double value associated with an index.
+
+
getDouble(String) - Method in class org.json.JSONObj
+
+
Get the double value associated with a key.
+
+
getFloat(String) - Method in class org.json.JSON
+
 
+
getFloat(int) - Method in class org.json.JSON
+
 
+
getInt(String) - Method in class org.json.JSON
+
 
+
getInt(int) - Method in class org.json.JSON
+
 
+
getInt(int) - Method in class org.json.JSONArr
+
+
Get the int value associated with an index.
+
+
getInt(String) - Method in class org.json.JSONObj
+
+
Get the int value associated with a key.
+
+
getJSONArray(String) - Method in class org.json.JSON
+
 
+
getJSONArray(int) - Method in class org.json.JSONArr
+
+
Get the JSONArray associated with an index.
+
+
getJSONArray(String) - Method in class org.json.JSONObj
+
+
Get the JSONArray value associated with a key.
+
+
getJSONObject(String) - Method in class org.json.JSON
+
 
+
getJSONObject(int) - Method in class org.json.JSONArr
+
+
Get the JSONObject associated with an index.
+
+
getJSONObject(String) - Method in class org.json.JSONObj
+
+
Get the JSONObject value associated with a key.
+
+
getLong(int) - Method in class org.json.JSONArr
+
+
Get the long value associated with an index.
+
+
getLong(String) - Method in class org.json.JSONObj
+
+
Get the long value associated with a key.
+
+
getNames(JSONObj) - Static method in class org.json.JSONObj
+
+
Get an array of field names from a JSONObject.
+
+
getNames(Object) - Static method in class org.json.JSONObj
+
+
Get an array of field names from an Object.
+
+
getObject(int) - Method in class org.json.JSON
+
 
+
getString(String) - Method in class org.json.JSON
+
 
+
getString(int) - Method in class org.json.JSON
+
 
+
getString(int) - Method in class org.json.JSONArr
+
+
Get the string associated with an index.
+
+
getString(String) - Method in class org.json.JSONObj
+
+
Get the string associated with a key.
+
+
GT - Static variable in class org.json.XML
+
+
The Character '>'.
+
+
+ + + +

H

+
+
has(String) - Method in class org.json.JSONObj
+
+
Determine if the JSONObject contains a specific key.
+
+
HTTP - Class in org.json
+
+
Convert an HTTP header to a JSONObject and back.
+
+
HTTP() - Constructor for class org.json.HTTP
+
 
+
HTTPTokener - Class in org.json
+
+
The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
+
+
HTTPTokener(String) - Constructor for class org.json.HTTPTokener
+
+
Construct an HTTPTokener from a string.
+
+
+ + + +

I

+
+
increment(String) - Method in class org.json.JSONObj
+
+
Increment a property of a JSONObject.
+
+
isNull(int) - Method in class org.json.JSONArr
+
+
Determine if the value is null.
+
+
isNull(String) - Method in class org.json.JSONObj
+
+
Determine if the value associated with the key is null or if there is no + value.
+
+
+ + + +

J

+
+
join(String) - Method in class org.json.JSONArr
+
+
Make a string from the contents of this JSONArray.
+
+
JSON - Class in org.json
+
+
This is a "mashup" test for combining the two JSON types, the goal is to make + it work similarly to how the processing XML library works.
+
+
JSON(JSONTokener) - Constructor for class org.json.JSON
+
+
Constructor for JSONTokeners.
+
+
JSON.JSONType - Enum in org.json
+
 
+
JSONArr - Class in org.json
+
+
A JSONArray is an ordered sequence of values.
+
+
JSONArr() - Constructor for class org.json.JSONArr
+
+
Construct an empty JSONArray.
+
+
JSONArr(JSONTokener) - Constructor for class org.json.JSONArr
+
+
Construct a JSONArray from a JSONTokener.
+
+
JSONArr(String) - Constructor for class org.json.JSONArr
+
+
Construct a JSONArray from a source JSON text.
+
+
JSONArr(Collection) - Constructor for class org.json.JSONArr
+
+
Construct a JSONArray from a Collection.
+
+
JSONArr(Object) - Constructor for class org.json.JSONArr
+
+
Construct a JSONArray from an array
+
+
JSONException - Exception in org.json
+
+
The JSONException is thrown by the JSON.org classes when things are amiss.
+
+
JSONException(String) - Constructor for exception org.json.JSONException
+
+
Constructs a JSONException with an explanatory message.
+
+
JSONException(Throwable) - Constructor for exception org.json.JSONException
+
 
+
JSONML - Class in org.json
+
+
This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
+
+
JSONML() - Constructor for class org.json.JSONML
+
 
+
JSONObj - Class in org.json
+
+
A JSONObject is an unordered collection of name/value pairs.
+
+
JSONObj() - Constructor for class org.json.JSONObj
+
+
Construct an empty JSONObject.
+
+
JSONObj(JSONObj, String[]) - Constructor for class org.json.JSONObj
+
+
Construct a JSONObject from a subset of another JSONObject.
+
+
JSONObj(JSONTokener) - Constructor for class org.json.JSONObj
+
+
Construct a JSONObject from a JSONTokener.
+
+
JSONObj(Map) - Constructor for class org.json.JSONObj
+
+
Construct a JSONObject from a Map.
+
+
JSONObj(Object) - Constructor for class org.json.JSONObj
+
+
Construct a JSONObject from an Object using bean getters.
+
+
JSONObj(Object, String[]) - Constructor for class org.json.JSONObj
+
+
Construct a JSONObject from an Object, using reflection to find the + public members.
+
+
JSONObj(String) - Constructor for class org.json.JSONObj
+
+
Construct a JSONObject from a source JSON text string.
+
+
JSONObj(String, Locale) - Constructor for class org.json.JSONObj
+
+
Construct a JSONObject from a ResourceBundle.
+
+
JSONString - Interface in org.json
+
+
The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
+
+
JSONStringer - Class in org.json
+
+
JSONStringer provides a quick and convenient way of producing JSON text.
+
+
JSONStringer() - Constructor for class org.json.JSONStringer
+
+
Make a fresh JSONStringer.
+
+
JSONTokener - Class in org.json
+
+
A JSONTokener takes a source string and extracts characters and tokens from + it.
+
+
JSONTokener(Reader) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from a Reader.
+
+
JSONTokener(InputStream) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from an InputStream.
+
+
JSONTokener(String) - Constructor for class org.json.JSONTokener
+
+
Construct a JSONTokener from a string.
+
+
JSONWriter - Class in org.json
+
+
JSONWriter provides a quick and convenient way of producing JSON text.
+
+
JSONWriter(Writer) - Constructor for class org.json.JSONWriter
+
+
Make a fresh JSONWriter.
+
+
+ + + +

K

+
+
key(String) - Method in class org.json.JSONWriter
+
+
Append a key.
+
+
keys() - Method in class org.json.JSONObj
+
+
Get an enumeration of the keys of the JSONObject.
+
+
+ + + +

L

+
+
length() - Method in class org.json.JSONArr
+
+
Get the number of elements in the JSONArray, included nulls.
+
+
length() - Method in class org.json.JSONObj
+
+
Get the number of keys stored in the JSONObject.
+
+
LT - Static variable in class org.json.XML
+
+
The Character '<'.
+
+
+ + + +

M

+
+
more() - Method in class org.json.JSONTokener
+
+
Determine if the source string still contains characters that next() + can consume.
+
+
+ + + +

N

+
+
names() - Method in class org.json.JSONObj
+
+
Produce a JSONArray containing the names of the elements of this + JSONObject.
+
+
next() - Method in class org.json.JSONTokener
+
+
Get the next character in the source string.
+
+
next(char) - Method in class org.json.JSONTokener
+
+
Consume the next character, and check that it matches a specified + character.
+
+
next(int) - Method in class org.json.JSONTokener
+
+
Get the next n characters.
+
+
nextCDATA() - Method in class org.json.XMLTokener
+
+
Get the text in the CDATA block.
+
+
nextClean() - Method in class org.json.JSONTokener
+
+
Get the next char in the string, skipping whitespace.
+
+
nextContent() - Method in class org.json.XMLTokener
+
+
Get the next XML outer token, trimming whitespace.
+
+
nextEntity(char) - Method in class org.json.XMLTokener
+
+
Return the next entity.
+
+
nextMeta() - Method in class org.json.XMLTokener
+
+
Returns the next XML meta token.
+
+
nextString(char) - Method in class org.json.JSONTokener
+
+
Return the characters up to the next close quote character.
+
+
nextTo(char) - Method in class org.json.JSONTokener
+
+
Get the text up but not including the specified character or the + end of line, whichever comes first.
+
+
nextTo(String) - Method in class org.json.JSONTokener
+
+
Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
+
+
nextToken() - Method in class org.json.HTTPTokener
+
+
Get the next token or string.
+
+
nextToken() - Method in class org.json.XMLTokener
+
+
Get the next XML Token.
+
+
nextValue() - Method in class org.json.JSONTokener
+
+
Get the next value.
+
+
noSpace(String) - Static method in class org.json.XML
+
+
Throw an exception if the string contains whitespace.
+
+
NULL - Static variable in class org.json.JSON
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+
+
NULL - Static variable in class org.json.JSONObj
+
+
It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
+
+
numberToString(Number) - Static method in class org.json.JSONObj
+
+
Produce a string from a Number.
+
+
+ + + +

O

+
+
object() - Method in class org.json.JSONWriter
+
+
Begin appending a new object.
+
+
opt(int) - Method in class org.json.JSONArr
+
+
Get the optional object value associated with an index.
+
+
opt(String) - Method in class org.json.JSONObj
+
+
Get an optional value associated with a key.
+
+
optBoolean(int) - Method in class org.json.JSONArr
+
+
Get the optional boolean value associated with an index.
+
+
optBoolean(int, boolean) - Method in class org.json.JSONArr
+
+
Get the optional boolean value associated with an index.
+
+
optBoolean(String) - Method in class org.json.JSONObj
+
+
Get an optional boolean associated with a key.
+
+
optBoolean(String, boolean) - Method in class org.json.JSONObj
+
+
Get an optional boolean associated with a key.
+
+
optDouble(int) - Method in class org.json.JSONArr
+
+
Get the optional double value associated with an index.
+
+
optDouble(int, double) - Method in class org.json.JSONArr
+
+
Get the optional double value associated with an index.
+
+
optDouble(String) - Method in class org.json.JSONObj
+
+
Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
+
+
optDouble(String, double) - Method in class org.json.JSONObj
+
+
Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
+
+
optInt(int) - Method in class org.json.JSONArr
+
+
Get the optional int value associated with an index.
+
+
optInt(int, int) - Method in class org.json.JSONArr
+
+
Get the optional int value associated with an index.
+
+
optInt(String) - Method in class org.json.JSONObj
+
+
Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
+
+
optInt(String, int) - Method in class org.json.JSONObj
+
+
Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
+
+
optJSONArray(int) - Method in class org.json.JSONArr
+
+
Get the optional JSONArray associated with an index.
+
+
optJSONArray(String) - Method in class org.json.JSONObj
+
+
Get an optional JSONArray associated with a key.
+
+
optJSONObject(int) - Method in class org.json.JSONArr
+
+
Get the optional JSONObject associated with an index.
+
+
optJSONObject(String) - Method in class org.json.JSONObj
+
+
Get an optional JSONObject associated with a key.
+
+
optLong(int) - Method in class org.json.JSONArr
+
+
Get the optional long value associated with an index.
+
+
optLong(int, long) - Method in class org.json.JSONArr
+
+
Get the optional long value associated with an index.
+
+
optLong(String) - Method in class org.json.JSONObj
+
+
Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
+
+
optLong(String, long) - Method in class org.json.JSONObj
+
+
Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
+
+
optString(int) - Method in class org.json.JSONArr
+
+
Get the optional string value associated with an index.
+
+
optString(int, String) - Method in class org.json.JSONArr
+
+
Get the optional string associated with an index.
+
+
optString(String) - Method in class org.json.JSONObj
+
+
Get an optional string associated with a key.
+
+
optString(String, String) - Method in class org.json.JSONObj
+
+
Get an optional string associated with a key.
+
+
org.json - package org.json
+
 
+
+ + + +

P

+
+
parse(String) - Static method in class org.json.JSON
+
+
Open a json file
+
+
put(boolean) - Method in class org.json.JSONArr
+
+
Append a boolean value.
+
+
put(Collection) - Method in class org.json.JSONArr
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(double) - Method in class org.json.JSONArr
+
+
Append a double value.
+
+
put(int) - Method in class org.json.JSONArr
+
+
Append an int value.
+
+
put(long) - Method in class org.json.JSONArr
+
+
Append an long value.
+
+
put(Map) - Method in class org.json.JSONArr
+
+
Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
+
+
put(Object) - Method in class org.json.JSONArr
+
+
Append an object value.
+
+
put(int, boolean) - Method in class org.json.JSONArr
+
+
Put or replace a boolean value in the JSONArray.
+
+
put(int, Collection) - Method in class org.json.JSONArr
+
+
Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(int, double) - Method in class org.json.JSONArr
+
+
Put or replace a double value.
+
+
put(int, int) - Method in class org.json.JSONArr
+
+
Put or replace an int value.
+
+
put(int, long) - Method in class org.json.JSONArr
+
+
Put or replace a long value.
+
+
put(int, Map) - Method in class org.json.JSONArr
+
+
Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
+
+
put(int, Object) - Method in class org.json.JSONArr
+
+
Put or replace an object value in the JSONArray.
+
+
put(String, boolean) - Method in class org.json.JSONObj
+
+
Put a key/boolean pair in the JSONObject.
+
+
put(String, Collection) - Method in class org.json.JSONObj
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
+
+
put(String, double) - Method in class org.json.JSONObj
+
+
Put a key/double pair in the JSONObject.
+
+
put(String, int) - Method in class org.json.JSONObj
+
+
Put a key/int pair in the JSONObject.
+
+
put(String, long) - Method in class org.json.JSONObj
+
+
Put a key/long pair in the JSONObject.
+
+
put(String, Map) - Method in class org.json.JSONObj
+
+
Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
+
+
put(String, Object) - Method in class org.json.JSONObj
+
+
Put a key/value pair in the JSONObject.
+
+
putOnce(String, Object) - Method in class org.json.JSONObj
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
+
+
putOpt(String, Object) - Method in class org.json.JSONObj
+
+
Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
+
+
+ + + +

Q

+
+
QUEST - Static variable in class org.json.XML
+
+
The Character '?'.
+
+
QUOT - Static variable in class org.json.XML
+
+
The Character '"'.
+
+
quote(String) - Static method in class org.json.JSONObj
+
+
Produce a string in double quotes with backslash sequences in all the + right places.
+
+
+ + + +

R

+
+
remove(int) - Method in class org.json.JSONArr
+
+
Remove an index and close the hole.
+
+
remove(String) - Method in class org.json.JSONObj
+
+
Remove a name and its value, if present.
+
+
rowToJSONArray(JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of strings from a row of comma delimited values.
+
+
rowToJSONObject(JSONArr, JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
+
+
rowToString(JSONArr) - Static method in class org.json.CDL
+
+
Produce a comma delimited text row from a JSONArray.
+
+
+ + + +

S

+
+
skipPast(String) - Method in class org.json.XMLTokener
+
+
Skip characters until past the requested string.
+
+
skipTo(char) - Method in class org.json.JSONTokener
+
+
Skip characters until the next character is the requested character.
+
+
SLASH - Static variable in class org.json.XML
+
+
The Character '/'.
+
+
stringToValue(String) - Static method in class org.json.JSONObj
+
+
Try to convert a string into a number, boolean, or null.
+
+
stringToValue(String) - Static method in class org.json.XML
+
+
Try to convert a string into a number, boolean, or null.
+
+
+ + + +

T

+
+
testValidity(Object) - Static method in class org.json.JSONObj
+
+
Throw an exception if the object is a NaN or infinite number.
+
+
toJSONArray(String) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+
+
toJSONArray(JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
+
+
toJSONArray(JSONArr, String) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+
+
toJSONArray(JSONArr, JSONTokener) - Static method in class org.json.CDL
+
+
Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
+
+
toJSONArray(String) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+
+
toJSONArray(XMLTokener) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
+
+
toJSONArray(JSONArr) - Method in class org.json.JSONObj
+
+
Produce a JSONArray containing the values of the members of this + JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.Cookie
+
+
Convert a cookie specification string into a JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.CookieList
+
+
Convert a cookie list into a JSONObject.
+
+
toJSONObject(String) - Static method in class org.json.HTTP
+
+
Convert an HTTP header string into a JSONObject.
+
+
toJSONObject(JSONArr) - Method in class org.json.JSONArr
+
+
Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
+
+
toJSONObject(XMLTokener) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+
+
toJSONObject(String) - Static method in class org.json.JSONML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
+
+
toJSONObject(String) - Static method in class org.json.XML
+
+
Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
+
+
toJSONString() - Method in interface org.json.JSONString
+
+
The toJSONString method allows a class to produce its own JSON + serialization.
+
+
toString(JSONArr) - Static method in class org.json.CDL
+
+
Produce a comma delimited text from a JSONArray of JSONObjects.
+
+
toString(JSONArr, JSONArr) - Static method in class org.json.CDL
+
+
Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
+
+
toString(JSONObj) - Static method in class org.json.Cookie
+
+
Convert a JSONObject into a cookie specification string.
+
+
toString(JSONObj) - Static method in class org.json.CookieList
+
+
Convert a JSONObject into a cookie list.
+
+
toString(JSONObj) - Static method in class org.json.HTTP
+
+
Convert a JSONObject into an HTTP header.
+
+
toString() - Method in class org.json.JSONArr
+
+
Make a JSON text of this JSONArray.
+
+
toString(int) - Method in class org.json.JSONArr
+
+
Make a prettyprinted JSON text of this JSONArray.
+
+
toString(JSONArr) - Static method in class org.json.JSONML
+
+
Reverse the JSONML transformation, making an XML text from a JSONArray.
+
+
toString(JSONObj) - Static method in class org.json.JSONML
+
+
Reverse the JSONML transformation, making an XML text from a JSONObject.
+
+
toString() - Method in class org.json.JSONObj
+
+
Make a JSON text of this JSONObject.
+
+
toString(int) - Method in class org.json.JSONObj
+
+
Make a prettyprinted JSON text of this JSONObject.
+
+
toString() - Method in class org.json.JSONStringer
+
+
Return the JSON text.
+
+
toString() - Method in class org.json.JSONTokener
+
+
Make a printable string of this JSONTokener.
+
+
toString(Object) - Static method in class org.json.XML
+
+
Convert a JSONObject into a well-formed, element-normal XML string.
+
+
toString(Object, String) - Static method in class org.json.XML
+
+
Convert a JSONObject into a well-formed, element-normal XML string.
+
+
+ + + +

U

+
+
unescape(String) - Static method in class org.json.Cookie
+
+
Convert %hh sequences to single characters, and + convert plus to space.
+
+
+ + + +

V

+
+
value(boolean) - Method in class org.json.JSONWriter
+
+
Append either the value true or the value + false.
+
+
value(double) - Method in class org.json.JSONWriter
+
+
Append a double value.
+
+
value(long) - Method in class org.json.JSONWriter
+
+
Append a long value.
+
+
value(Object) - Method in class org.json.JSONWriter
+
+
Append an object value.
+
+
valueOf(String) - Static method in enum org.json.JSON.JSONType
+
+
Returns the enum constant of this type with the specified name.
+
+
values() - Static method in enum org.json.JSON.JSONType
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
valueToString(Object) - Static method in class org.json.JSONObj
+
+
Make a JSON text of an Object value.
+
+
+ + + +

W

+
+
wrap(Object) - Static method in class org.json.JSONObj
+
+
Wrap an object, if necessary.
+
+
write(Writer) - Method in class org.json.JSONArr
+
+
Write the contents of the JSONArray as JSON text to a writer.
+
+
write(Writer) - Method in class org.json.JSONObj
+
+
Write the contents of the JSONObject as JSON text to a writer.
+
+
+ + + +

X

+
+
XML - Class in org.json
+
+
This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
+
+
XML() - Constructor for class org.json.XML
+
 
+
XMLTokener - Class in org.json
+
+
The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
+
+
XMLTokener(String) - Constructor for class org.json.XMLTokener
+
+
Construct an XMLTokener from a string.
+
+
+A B C D E G H I J K L M N O P Q R S T U V W X 
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/index.html b/distribution/json4processing-0.1.6/reference/index.html new file mode 100644 index 000000000..67f41f64d --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/index.html @@ -0,0 +1,30 @@ + + + + + +Javadocs: json4processing + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="org/json/package-summary.html">Non-frame version</a>.</p> + + + diff --git a/distribution/json4processing-0.1.6/reference/org/json/CDL.html b/distribution/json4processing-0.1.6/reference/org/json/CDL.html new file mode 100644 index 000000000..2dfd703f3 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/CDL.html @@ -0,0 +1,470 @@ + + + + + +CDL (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class CDL

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.CDL
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class CDL
    +extends java.lang.Object
    +
    This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text. Comma + delimited text is a very popular format for data interchange. It is + understood by most database, spreadsheet, and organizer programs. +

    + Each row of text represents a row in a table or a data record. Each row + ends with a NEWLINE character. Each row contains one or more values. + Values are separated by commas. A value can contain any character except + for comma, unless is is wrapped in single quotes or double quotes. +

    + The first row usually contains the names of the columns. +

    + A comma delimited list can be converted into a JSONArray of JSONObjects. + The names for the elements in the JSONObjects can be taken from the names + in the first row.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      CDL() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONArrrowToJSONArray(JSONTokener x) +
      Produce a JSONArray of strings from a row of comma delimited values.
      +
      static JSONObjrowToJSONObject(JSONArr names, + JSONTokener x) +
      Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
      +
      static java.lang.StringrowToString(JSONArr ja) +
      Produce a comma delimited text row from a JSONArray.
      +
      static JSONArrtoJSONArray(JSONArr names, + JSONTokener x) +
      Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
      +
      static JSONArrtoJSONArray(JSONArr names, + java.lang.String string) +
      Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
      +
      static JSONArrtoJSONArray(JSONTokener x) +
      Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
      +
      static JSONArrtoJSONArray(java.lang.String string) +
      Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
      +
      static java.lang.StringtoString(JSONArr ja) +
      Produce a comma delimited text from a JSONArray of JSONObjects.
      +
      static java.lang.StringtoString(JSONArr names, + JSONArr ja) +
      Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CDL

        +
        public CDL()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        rowToJSONArray

        +
        public static JSONArr rowToJSONArray(JSONTokener x)
        +                              throws JSONException
        +
        Produce a JSONArray of strings from a row of comma delimited values.
        +
        Parameters:
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONArray of strings.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        rowToJSONObject

        +
        public static JSONObj rowToJSONObject(JSONArr names,
        +                      JSONTokener x)
        +                               throws JSONException
        +
        Produce a JSONObject from a row of comma delimited text, using a + parallel JSONArray of strings to provides the names of the elements.
        +
        Parameters:
        names - A JSONArray of names. This is commonly obtained from the + first row of a comma delimited text file using the rowToJSONArray + method.
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONObject combining the names and values.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        rowToString

        +
        public static java.lang.String rowToString(JSONArr ja)
        +
        Produce a comma delimited text row from a JSONArray. Values containing + the comma character will be quoted. Troublesome characters may be + removed.
        +
        Parameters:
        ja - A JSONArray of strings.
        +
        Returns:
        A string ending in NEWLINE.
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArr toJSONArray(java.lang.String string)
        +                           throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
        +
        Parameters:
        string - The comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArr toJSONArray(JSONTokener x)
        +                           throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string, + using the first row as a source of names.
        +
        Parameters:
        x - The JSONTokener containing the comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArr toJSONArray(JSONArr names,
        +                  java.lang.String string)
        +                           throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
        +
        Parameters:
        names - A JSONArray of strings.
        string - The comma delimited text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArr toJSONArray(JSONArr names,
        +                  JSONTokener x)
        +                           throws JSONException
        +
        Produce a JSONArray of JSONObjects from a comma delimited text string + using a supplied JSONArray as the source of element names.
        +
        Parameters:
        names - A JSONArray of strings.
        x - A JSONTokener of the source text.
        +
        Returns:
        A JSONArray of JSONObjects.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArr ja)
        +                                 throws JSONException
        +
        Produce a comma delimited text from a JSONArray of JSONObjects. The + first row will be a list of names obtained by inspecting the first + JSONObject.
        +
        Parameters:
        ja - A JSONArray of JSONObjects.
        +
        Returns:
        A comma delimited text.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArr names,
        +                        JSONArr ja)
        +                                 throws JSONException
        +
        Produce a comma delimited text from a JSONArray of JSONObjects using + a provided list of names. The list of names is not included in the + output.
        +
        Parameters:
        names - A JSONArray of strings.
        ja - A JSONArray of JSONObjects.
        +
        Returns:
        A comma delimited text.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/Cookie.html b/distribution/json4processing-0.1.6/reference/org/json/Cookie.html new file mode 100644 index 000000000..8166b54be --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/Cookie.html @@ -0,0 +1,347 @@ + + + + + +Cookie (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class Cookie

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.Cookie
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Cookie
    +extends java.lang.Object
    +
    Convert a web browser cookie specification to a JSONObject and back. + JSON and Cookies are both notations for name/value pairs.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Cookie() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static java.lang.Stringescape(java.lang.String string) +
      Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh".
      +
      static JSONObjtoJSONObject(java.lang.String string) +
      Convert a cookie specification string into a JSONObject.
      +
      static java.lang.StringtoString(JSONObj jo) +
      Convert a JSONObject into a cookie specification string.
      +
      static java.lang.Stringunescape(java.lang.String string) +
      Convert %hh sequences to single characters, and + convert plus to space.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Cookie

        +
        public Cookie()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        escape

        +
        public static java.lang.String escape(java.lang.String string)
        +
        Produce a copy of a string in which the characters '+', '%', '=', ';' + and control characters are replaced with "%hh". This is a gentle form + of URL encoding, attempting to cause as little distortion to the + string as possible. The characters '=' and ';' are meta characters in + cookies. By convention, they are escaped using the URL-encoding. This is + only a convention, not a standard. Often, cookies are expected to have + encoded values. We encode '=' and ';' because we must. We encode '%' and + '+' because they are meta characters in URL encoding.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        The escaped result.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObj toJSONObject(java.lang.String string)
        +                            throws JSONException
        +
        Convert a cookie specification string into a JSONObject. The string + will contain a name value pair separated by '='. The name and the value + will be unescaped, possibly converting '+' and '%' sequences. The + cookie properties may follow, separated by ';', also represented as + name=value (except the secure property, which does not have a value). + The name will be stored under the key "name", and the value will be + stored under the key "value". This method does not do checking or + validation of the parameters. It only converts the cookie string into + a JSONObject.
        +
        Parameters:
        string - The cookie specification string.
        +
        Returns:
        A JSONObject containing "name", "value", and possibly other + members.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObj jo)
        +                                 throws JSONException
        +
        Convert a JSONObject into a cookie specification string. The JSONObject + must contain "name" and "value" members. + If the JSONObject contains "expires", "domain", "path", or "secure" + members, they will be appended to the cookie specification string. + All other members are ignored.
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        A cookie specification string
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        unescape

        +
        public static java.lang.String unescape(java.lang.String string)
        +
        Convert %hh sequences to single characters, and + convert plus to space.
        +
        Parameters:
        string - A string that may contain + + (plus) and + %hh sequences.
        +
        Returns:
        The unescaped string.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/CookieList.html b/distribution/json4processing-0.1.6/reference/org/json/CookieList.html new file mode 100644 index 000000000..831e926b3 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/CookieList.html @@ -0,0 +1,295 @@ + + + + + +CookieList (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class CookieList

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.CookieList
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class CookieList
    +extends java.lang.Object
    +
    Convert a web browser cookie list string to a JSONObject and back.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      CookieList() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONObjtoJSONObject(java.lang.String string) +
      Convert a cookie list into a JSONObject.
      +
      static java.lang.StringtoString(JSONObj jo) +
      Convert a JSONObject into a cookie list.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CookieList

        +
        public CookieList()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObj toJSONObject(java.lang.String string)
        +                            throws JSONException
        +
        Convert a cookie list into a JSONObject. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The names and the values + will be unescaped, possibly converting '+' and '%' sequences. + + To add a cookie to a cooklist, + cookielistJSONObject.put(cookieJSONObject.getString("name"), + cookieJSONObject.getString("value"));
        +
        Parameters:
        string - A cookie list string
        +
        Returns:
        A JSONObject
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObj jo)
        +                                 throws JSONException
        +
        Convert a JSONObject into a cookie list. A cookie list is a sequence + of name/value pairs. The names are separated from the values by '='. + The pairs are separated by ';'. The characters '%', '+', '=', and ';' + in the names and values are replaced by "%hh".
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        A cookie list string
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/HTTP.html b/distribution/json4processing-0.1.6/reference/org/json/HTTP.html new file mode 100644 index 000000000..14ac4718d --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/HTTP.html @@ -0,0 +1,363 @@ + + + + + +HTTP (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class HTTP

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.HTTP
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class HTTP
    +extends java.lang.Object
    +
    Convert an HTTP header to a JSONObject and back.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringCRLF +
      Carriage return/line feed.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      HTTP() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONObjtoJSONObject(java.lang.String string) +
      Convert an HTTP header string into a JSONObject.
      +
      static java.lang.StringtoString(JSONObj jo) +
      Convert a JSONObject into an HTTP header.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CRLF

        +
        public static final java.lang.String CRLF
        +
        Carriage return/line feed.
        +
        See Also:
        Constant Field Values
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HTTP

        +
        public HTTP()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObj toJSONObject(java.lang.String string)
        +
        Convert an HTTP header string into a JSONObject. It can be a request + header or a response header. A request header will contain +
        {
        +    Method: "POST" (for example),
        +    "Request-URI": "/" (for example),
        +    "HTTP-Version": "HTTP/1.1" (for example)
        + }
        + A response header will contain +
        {
        +    "HTTP-Version": "HTTP/1.1" (for example),
        +    "Status-Code": "200" (for example),
        +    "Reason-Phrase": "OK" (for example)
        + }
        + In addition, the other parameters in the header will be captured, using + the HTTP field names as JSON names, so that
        +    Date: Sun, 26 May 2002 18:06:04 GMT
        +    Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
        +    Cache-Control: no-cache
        + become +
        {...
        +    Date: "Sun, 26 May 2002 18:06:04 GMT",
        +    Cookie: "Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s",
        +    "Cache-Control": "no-cache",
        + ...}
        + It does no further checking or conversion. It does not parse dates. + It does not do '%' transforms on URLs.
        +
        Parameters:
        string - An HTTP header string.
        +
        Returns:
        A JSONObject containing the elements and attributes + of the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObj jo)
        +
        Convert a JSONObject into an HTTP header. A request header must contain +
        {
        +    Method: "POST" (for example),
        +    "Request-URI": "/" (for example),
        +    "HTTP-Version": "HTTP/1.1" (for example)
        + }
        + A response header must contain +
        {
        +    "HTTP-Version": "HTTP/1.1" (for example),
        +    "Status-Code": "200" (for example),
        +    "Reason-Phrase": "OK" (for example)
        + }
        + Any other members of the JSONObject will be output as HTTP fields. + The result will end with two CRLF pairs.
        +
        Parameters:
        jo - A JSONObject
        +
        Returns:
        An HTTP header string.
        +
        Throws:
        +
        JSONException - if the object does not contain enough + information.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/HTTPTokener.html b/distribution/json4processing-0.1.6/reference/org/json/HTTPTokener.html new file mode 100644 index 000000000..59fd893bb --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/HTTPTokener.html @@ -0,0 +1,280 @@ + + + + + +HTTPTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class HTTPTokener

+
+
+ +
+
    +
  • +
    +
    +
    public class HTTPTokener
    +extends JSONTokener
    +
    The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HTTPTokener

        +
        public HTTPTokener(java.lang.String string)
        +
        Construct an HTTPTokener from a string.
        +
        Parameters:
        string - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        nextToken

        +
        public java.lang.String nextToken()
        +                           throws JSONException
        +
        Get the next token or string. This is used in parsing HTTP headers.
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSON.JSONType.html b/distribution/json4processing-0.1.6/reference/org/json/JSON.JSONType.html new file mode 100644 index 000000000..3a2fcfbe5 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSON.JSONType.html @@ -0,0 +1,334 @@ + + + + + +JSON.JSONType (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Enum JSON.JSONType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<JSON.JSONType>
    • +
    • +
        +
      • org.json.JSON.JSONType
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<JSON.JSONType>
    +
    +
    +
    Enclosing class:
    +
    JSON
    +
    +
    +
    +
    public static enum JSON.JSONType
    +extends java.lang.Enum<JSON.JSONType>
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      ARRAY 
      NULL 
      OBJECT 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSON.JSONTypevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static JSON.JSONType[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        values

        +
        public static JSON.JSONType[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (JSON.JSONType c : JSON.JSONType.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      + + + +
        +
      • +

        valueOf

        +
        public static JSON.JSONType valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSON.html b/distribution/json4processing-0.1.6/reference/org/json/JSON.html new file mode 100644 index 000000000..bdb318ff4 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSON.html @@ -0,0 +1,520 @@ + + + + + +JSON (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSON

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSON
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSON
    +extends java.lang.Object
    +
    This is a "mashup" test for combining the two JSON types, the goal is to make + it work similarly to how the processing XML library works. + + loadJSON(); should be able of returning both types of objects, and to do that + without having the typecast you need to combine the two classes somehow. + + The way you use this is calling JSON.loadJSON("filename"); (or similar) and + then the class will maintain the type of object it is (either array or + object) and simply forward the requests the user does to the correct class... + of course making sure that the type is of correct class! You shouldn't be + able of calling ".get(index)" on an JSONObject for example... it should then + notify the user by a simple text message to the console.
    +
    Author:
    +
    ksango
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      + + + + + + + + + + +
      Nested Classes 
      Modifier and TypeClass and Description
      static class JSON.JSONType 
      +
    • +
    + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.ObjectNULL +
      It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSON(JSONTokener tokener) +
      Constructor for JSONTokeners.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      org.json.JSON.JSONArraygetArray(int index) 
      booleangetBoolean(int index) 
      booleangetBoolean(java.lang.String key) 
      doublegetDouble(int index) 
      doublegetDouble(java.lang.String key) 
      floatgetFloat(int index) 
      floatgetFloat(java.lang.String key) 
      intgetInt(int index) 
      intgetInt(java.lang.String key) 
      org.json.JSON.JSONArraygetJSONArray(java.lang.String key) 
      org.json.JSON.JSONObjectgetJSONObject(java.lang.String key) 
      org.json.JSON.JSONObjectgetObject(int index) 
      java.lang.StringgetString(int index) 
      java.lang.StringgetString(java.lang.String key) 
      static JSONparse(java.lang.String filename) +
      Open a json file
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NULL

        +
        public static final java.lang.Object NULL
        +
        It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null".
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSON

        +
        public JSON(JSONTokener tokener)
        +
        Constructor for JSONTokeners.
        +
        Parameters:
        tokener -
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        parse

        +
        public static JSON parse(java.lang.String filename)
        +
        Open a json file
        +
        Parameters:
        json -
        +
        Returns:
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String key)
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(java.lang.String key)
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(java.lang.String key)
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(java.lang.String key)
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(java.lang.String key)
        +
      • +
      + + + +
        +
      • +

        getJSONObject

        +
        public org.json.JSON.JSONObject getJSONObject(java.lang.String key)
        +
      • +
      + + + +
        +
      • +

        getJSONArray

        +
        public org.json.JSON.JSONArray getJSONArray(java.lang.String key)
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(int index)
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(int index)
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(int index)
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(int index)
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(int index)
        +
      • +
      + + + +
        +
      • +

        getArray

        +
        public org.json.JSON.JSONArray getArray(int index)
        +
      • +
      + + + +
        +
      • +

        getObject

        +
        public org.json.JSON.JSONObject getObject(int index)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONArr.html b/distribution/json4processing-0.1.6/reference/org/json/JSONArr.html new file mode 100644 index 000000000..80407bb11 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONArr.html @@ -0,0 +1,1284 @@ + + + + + +JSONArr (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONArr

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONArr
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONArr
    +extends java.lang.Object
    +
    A JSONArray is an ordered sequence of values. Its external text form is a + string wrapped in square brackets with commas separating the values. The + internal form is an object having get and opt + methods for accessing the values by index, and put methods for + adding or replacing values. The values can be any of these types: + Boolean, JSONArray, JSONObject, + Number, String, or the + JSONObject.NULL object. +

    + The constructor can convert a JSON text into a Java object. The + toString method converts to JSON text. +

    + A get method returns a value if one can be found, and throws an + exception if one cannot be found. An opt method returns a + default value instead of throwing an exception, and so is useful for + obtaining optional values. +

    + The generic get() and opt() methods return an + object which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. +

    + The texts produced by the toString methods strictly conform to + JSON syntax rules. The constructors are more forgiving in the texts they will + accept: +

      +
    • An extra , (comma) may appear just + before the closing bracket.
    • +
    • The null value will be inserted when there + is , (comma) elision.
    • +
    • Strings may be quoted with ' (single + quote).
    • +
    • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, + and if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers + and if they are not the reserved words true, + false, or null.
    • +
    • Values can be separated by ; (semicolon) as + well as by , (comma).
    • +
    • Numbers may have the + 0x- (hex) prefix.
    • +
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONArr() +
      Construct an empty JSONArray.
      +
      JSONArr(java.util.Collection collection) +
      Construct a JSONArray from a Collection.
      +
      JSONArr(JSONTokener x) +
      Construct a JSONArray from a JSONTokener.
      +
      JSONArr(java.lang.Object array) +
      Construct a JSONArray from an array
      +
      JSONArr(java.lang.String source) +
      Construct a JSONArray from a source JSON text.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.Objectget(int index) +
      Get the object value associated with an index.
      +
      booleangetBoolean(int index) +
      Get the boolean value associated with an index.
      +
      doublegetDouble(int index) +
      Get the double value associated with an index.
      +
      intgetInt(int index) +
      Get the int value associated with an index.
      +
      JSONArrgetJSONArray(int index) +
      Get the JSONArray associated with an index.
      +
      JSONObjgetJSONObject(int index) +
      Get the JSONObject associated with an index.
      +
      longgetLong(int index) +
      Get the long value associated with an index.
      +
      java.lang.StringgetString(int index) +
      Get the string associated with an index.
      +
      booleanisNull(int index) +
      Determine if the value is null.
      +
      java.lang.Stringjoin(java.lang.String separator) +
      Make a string from the contents of this JSONArray.
      +
      intlength() +
      Get the number of elements in the JSONArray, included nulls.
      +
      java.lang.Objectopt(int index) +
      Get the optional object value associated with an index.
      +
      booleanoptBoolean(int index) +
      Get the optional boolean value associated with an index.
      +
      booleanoptBoolean(int index, + boolean defaultValue) +
      Get the optional boolean value associated with an index.
      +
      doubleoptDouble(int index) +
      Get the optional double value associated with an index.
      +
      doubleoptDouble(int index, + double defaultValue) +
      Get the optional double value associated with an index.
      +
      intoptInt(int index) +
      Get the optional int value associated with an index.
      +
      intoptInt(int index, + int defaultValue) +
      Get the optional int value associated with an index.
      +
      JSONArroptJSONArray(int index) +
      Get the optional JSONArray associated with an index.
      +
      JSONObjoptJSONObject(int index) +
      Get the optional JSONObject associated with an index.
      +
      longoptLong(int index) +
      Get the optional long value associated with an index.
      +
      longoptLong(int index, + long defaultValue) +
      Get the optional long value associated with an index.
      +
      java.lang.StringoptString(int index) +
      Get the optional string value associated with an index.
      +
      java.lang.StringoptString(int index, + java.lang.String defaultValue) +
      Get the optional string associated with an index.
      +
      JSONArrput(boolean value) +
      Append a boolean value.
      +
      JSONArrput(java.util.Collection value) +
      Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONArrput(double value) +
      Append a double value.
      +
      JSONArrput(int value) +
      Append an int value.
      +
      JSONArrput(int index, + boolean value) +
      Put or replace a boolean value in the JSONArray.
      +
      JSONArrput(int index, + java.util.Collection value) +
      Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONArrput(int index, + double value) +
      Put or replace a double value.
      +
      JSONArrput(int index, + int value) +
      Put or replace an int value.
      +
      JSONArrput(int index, + long value) +
      Put or replace a long value.
      +
      JSONArrput(int index, + java.util.Map value) +
      Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
      +
      JSONArrput(int index, + java.lang.Object value) +
      Put or replace an object value in the JSONArray.
      +
      JSONArrput(long value) +
      Append an long value.
      +
      JSONArrput(java.util.Map value) +
      Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
      +
      JSONArrput(java.lang.Object value) +
      Append an object value.
      +
      java.lang.Objectremove(int index) +
      Remove an index and close the hole.
      +
      JSONObjtoJSONObject(JSONArr names) +
      Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
      +
      java.lang.StringtoString() +
      Make a JSON text of this JSONArray.
      +
      java.lang.StringtoString(int indentFactor) +
      Make a prettyprinted JSON text of this JSONArray.
      +
      java.io.Writerwrite(java.io.Writer writer) +
      Write the contents of the JSONArray as JSON text to a writer.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONArr

        +
        public JSONArr()
        +
        Construct an empty JSONArray.
        +
      • +
      + + + +
        +
      • +

        JSONArr

        +
        public JSONArr(JSONTokener x)
        +        throws JSONException
        +
        Construct a JSONArray from a JSONTokener.
        +
        Parameters:
        x - A JSONTokener
        +
        Throws:
        +
        JSONException - If there is a syntax error.
        +
      • +
      + + + +
        +
      • +

        JSONArr

        +
        public JSONArr(java.lang.String source)
        +        throws JSONException
        +
        Construct a JSONArray from a source JSON text.
        +
        Parameters:
        source - A string that begins with + [ (left bracket) + and ends with ] (right bracket).
        +
        Throws:
        +
        JSONException - If there is a syntax error.
        +
      • +
      + + + +
        +
      • +

        JSONArr

        +
        public JSONArr(java.util.Collection collection)
        +
        Construct a JSONArray from a Collection.
        +
        Parameters:
        collection - A Collection.
        +
      • +
      + + + +
        +
      • +

        JSONArr

        +
        public JSONArr(java.lang.Object array)
        +
        Construct a JSONArray from an array
        +
        Throws:
        +
        JSONException - If not an array.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(int index)
        +
        Get the object value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        An object value.
        +
        Throws:
        +
        JSONException - If there is no value for the index.
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(int index)
        +                   throws JSONException
        +
        Get the boolean value associated with an index. + The string values "true" and "false" are converted to boolean.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The truth.
        +
        Throws:
        +
        JSONException - If there is no value for the index or if the + value is not convertible to boolean.
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(int index)
        +                 throws JSONException
        +
        Get the double value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value cannot + be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(int index)
        +           throws JSONException
        +
        Get the int value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value is not a number.
        +
      • +
      + + + +
        +
      • +

        getJSONArray

        +
        public JSONArr getJSONArray(int index)
        +                     throws JSONException
        +
        Get the JSONArray associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A JSONArray value.
        +
        Throws:
        +
        JSONException - If there is no value for the index. or if the + value is not a JSONArray
        +
      • +
      + + + +
        +
      • +

        getJSONObject

        +
        public JSONObj getJSONObject(int index)
        +
        Get the JSONObject associated with an index.
        +
        Parameters:
        index - subscript
        +
        Returns:
        A JSONObject value.
        +
        Throws:
        +
        JSONException - If there is no value for the index or if the + value is not a JSONObject
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        public long getLong(int index)
        +             throws JSONException
        +
        Get the long value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
        Throws:
        +
        JSONException - If the key is not found or if the value cannot + be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(int index)
        +                           throws JSONException
        +
        Get the string associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A string value.
        +
        Throws:
        +
        JSONException - If there is no string value for the index.
        +
      • +
      + + + +
        +
      • +

        isNull

        +
        public boolean isNull(int index)
        +
        Determine if the value is null.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        true if the value at the index is null, or if there is no value.
        +
      • +
      + + + +
        +
      • +

        join

        +
        public java.lang.String join(java.lang.String separator)
        +                      throws JSONException
        +
        Make a string from the contents of this JSONArray. The + separator string is inserted between each element. + Warning: This method assumes that the data structure is acyclical.
        +
        Parameters:
        separator - A string that will be inserted between the elements.
        +
        Returns:
        a string.
        +
        Throws:
        +
        JSONException - If the array contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        length

        +
        public int length()
        +
        Get the number of elements in the JSONArray, included nulls.
        +
        Returns:
        The length (or size).
        +
      • +
      + + + +
        +
      • +

        opt

        +
        public java.lang.Object opt(int index)
        +
        Get the optional object value associated with an index.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        An object value, or null if there is no + object at that index.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(int index)
        +
        Get the optional boolean value associated with an index. + It returns false if there is no value at that index, + or if the value is not Boolean.TRUE or the String "true".
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(int index,
        +                 boolean defaultValue)
        +
        Get the optional boolean value associated with an index. + It returns the defaultValue if there is no value at that index or if + it is not a Boolean or the String "true" or "false" (case insensitive).
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - A boolean default.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(int index)
        +
        Get the optional double value associated with an index. + NaN is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(int index,
        +               double defaultValue)
        +
        Get the optional double value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - subscript
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(int index)
        +
        Get the optional int value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(int index,
        +         int defaultValue)
        +
        Get the optional int value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optJSONArray

        +
        public JSONArr optJSONArray(int index)
        +
        Get the optional JSONArray associated with an index.
        +
        Parameters:
        index - subscript
        +
        Returns:
        A JSONArray value, or null if the index has no value, + or if the value is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        optJSONObject

        +
        public JSONObj optJSONObject(int index)
        +
        Get the optional JSONObject associated with an index. + Null is returned if the key is not found, or null if the index has + no value, or if the value is not a JSONObject.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A JSONObject value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(int index)
        +
        Get the optional long value associated with an index. + Zero is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(int index,
        +           long defaultValue)
        +
        Get the optional long value associated with an index. + The defaultValue is returned if there is no value for the index, + or if the value is not a number and cannot be converted to a number.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        The value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(int index)
        +
        Get the optional string value associated with an index. It returns an + empty string if there is no value at that index. If the value + is not a string and is not null, then it is coverted to a string.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        +
        Returns:
        A String value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(int index,
        +                         java.lang.String defaultValue)
        +
        Get the optional string associated with an index. + The defaultValue is returned if the key is not found.
        +
        Parameters:
        index - The index must be between 0 and length() - 1.
        defaultValue - The default value.
        +
        Returns:
        A String value.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(boolean value)
        +
        Append a boolean value. This increases the array's length by one.
        +
        Parameters:
        value - A boolean value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(java.util.Collection value)
        +
        Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        value - A Collection value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(double value)
        +
        Append a double value. This increases the array's length by one.
        +
        Parameters:
        value - A double value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - if the value is not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int value)
        +
        Append an int value. This increases the array's length by one.
        +
        Parameters:
        value - An int value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(long value)
        +
        Append an long value. This increases the array's length by one.
        +
        Parameters:
        value - A long value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(java.util.Map value)
        +
        Put a value in the JSONArray, where the value will be a + JSONObject which is produced from a Map.
        +
        Parameters:
        value - A Map value.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(java.lang.Object value)
        +
        Append an object value. This increases the array's length by one.
        +
        Parameters:
        value - An object value. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object.
        +
        Returns:
        this.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int index,
        +          boolean value)
        +
        Put or replace a boolean value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out.
        +
        Parameters:
        index - The subscript.
        value - A boolean value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int index,
        +          java.util.Collection value)
        +
        Put a value in the JSONArray, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        index - The subscript.
        value - A Collection value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the value is + not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int index,
        +          double value)
        +
        Put or replace a double value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - A double value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the value is + not finite.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int index,
        +          int value)
        +
        Put or replace an int value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - An int value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int index,
        +          long value)
        +
        Put or replace a long value. If the index is greater than the length of + the JSONArray, then null elements will be added as necessary to pad + it out.
        +
        Parameters:
        index - The subscript.
        value - A long value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int index,
        +          java.util.Map value)
        +
        Put a value in the JSONArray, where the value will be a + JSONObject that is produced from a Map.
        +
        Parameters:
        index - The subscript.
        value - The Map value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the the value is + an invalid number.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONArr put(int index,
        +          java.lang.Object value)
        +
        Put or replace an object value in the JSONArray. If the index is greater + than the length of the JSONArray, then null elements will be added as + necessary to pad it out.
        +
        Parameters:
        index - The subscript.
        value - The value to put into the array. The value should be a + Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the index is negative or if the the value is + an invalid number.
        +
      • +
      + + + +
        +
      • +

        remove

        +
        public java.lang.Object remove(int index)
        +
        Remove an index and close the hole.
        +
        Parameters:
        index - The index of the element to be removed.
        +
        Returns:
        The value that was associated with the index, + or null if there was no value.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public JSONObj toJSONObject(JSONArr names)
        +                     throws JSONException
        +
        Produce a JSONObject by combining a JSONArray of names with the values + of this JSONArray.
        +
        Parameters:
        names - A JSONArray containing a list of key strings. These will be + paired with the values.
        +
        Returns:
        A JSONObject, or null if there are no names or if this JSONArray + has no values.
        +
        Throws:
        +
        JSONException - If any of the names are null.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a JSON text of this JSONArray. For compactness, no + unnecessary whitespace is added. If it is not possible to produce a + syntactically correct JSON text then null will be returned instead. This + could occur if the array contains an invalid number. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        a printable, displayable, transmittable + representation of the array.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString(int indentFactor)
        +                          throws JSONException
        +
        Make a prettyprinted JSON text of this JSONArray. + Warning: This method assumes that the data structure is acyclical.
        +
        Parameters:
        indentFactor - The number of spaces to add to each level of + indentation.
        +
        Returns:
        a printable, displayable, transmittable + representation of the object, beginning + with [ (left bracket) and ending + with ] (right bracket).
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        write

        +
        public java.io.Writer write(java.io.Writer writer)
        +
        Write the contents of the JSONArray as JSON text to a writer. + For compactness, no whitespace is added. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Returns:
        The writer.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONException.html b/distribution/json4processing-0.1.6/reference/org/json/JSONException.html new file mode 100644 index 000000000..f17f05ae3 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONException.html @@ -0,0 +1,298 @@ + + + + + +JSONException (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • org.json.JSONException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class JSONException
    +extends java.lang.Exception
    +
    The JSONException is thrown by the JSON.org classes when things are amiss.
    +
    Author:
    +
    JSON.org
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONException(java.lang.String message) +
      Constructs a JSONException with an explanatory message.
      +
      JSONException(java.lang.Throwable cause) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.ThrowablegetCause() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONException

        +
        public JSONException(java.lang.String message)
        +
        Constructs a JSONException with an explanatory message.
        +
        Parameters:
        message - Detail about the reason for the exception.
        +
      • +
      + + + +
        +
      • +

        JSONException

        +
        public JSONException(java.lang.Throwable cause)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCause

        +
        public java.lang.Throwable getCause()
        +
        +
        Overrides:
        +
        getCause in class java.lang.Throwable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONML.html b/distribution/json4processing-0.1.6/reference/org/json/JSONML.html new file mode 100644 index 000000000..f712a28a7 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONML.html @@ -0,0 +1,404 @@ + + + + + +JSONML (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONML

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONML
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONML
    +extends java.lang.Object
    +
    This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONML() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static JSONArrtoJSONArray(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
      +
      static JSONArrtoJSONArray(XMLTokener x) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform.
      +
      static JSONObjtoJSONObject(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
      +
      static JSONObjtoJSONObject(XMLTokener x) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform.
      +
      static java.lang.StringtoString(JSONArr ja) +
      Reverse the JSONML transformation, making an XML text from a JSONArray.
      +
      static java.lang.StringtoString(JSONObj jo) +
      Reverse the JSONML transformation, making an XML text from a JSONObject.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONML

        +
        public JSONML()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArr toJSONArray(java.lang.String string)
        +                           throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        A JSONArray containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public static JSONArr toJSONArray(XMLTokener x)
        +                           throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONArray using the JsonML transform. Each XML tag is represented as + a JSONArray in which the first element is the tag name. If the tag has + attributes, then the second element will be JSONObject containing the + name/value pairs. If the tag contains children, then strings and + JSONArrays will represent the child content and tags. + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        x - An XMLTokener.
        +
        Returns:
        A JSONArray containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObj toJSONObject(XMLTokener x)
        +                            throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        x - An XMLTokener of the XML source text.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObj toJSONObject(java.lang.String string)
        +                            throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject using the JsonML transform. Each XML tag is represented as + a JSONObject with a "tagName" property. If the tag has attributes, then + the attributes will be in the JSONObject as properties. If the tag + contains children, the object will have a "childNodes" property which + will be an array of strings and JsonML JSONObjects. + + Comments, prologs, DTDs, and <[ [ ]]> are ignored.
        +
        Parameters:
        string - The XML source text.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONArr ja)
        +                                 throws JSONException
        +
        Reverse the JSONML transformation, making an XML text from a JSONArray.
        +
        Parameters:
        ja - A JSONArray.
        +
        Returns:
        An XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(JSONObj jo)
        +                                 throws JSONException
        +
        Reverse the JSONML transformation, making an XML text from a JSONObject. + The JSONObject must contain a "tagName" property. If it has children, + then it must have a "childNodes" property containing an array of objects. + The other properties are attributes with string values.
        +
        Parameters:
        jo - A JSONObject.
        +
        Returns:
        An XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONObj.html b/distribution/json4processing-0.1.6/reference/org/json/JSONObj.html new file mode 100644 index 000000000..470fac65d --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONObj.html @@ -0,0 +1,1626 @@ + + + + + +JSONObj (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONObj

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONObj
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class JSONObj
    +extends java.lang.Object
    +
    A JSONObject is an unordered collection of name/value pairs. Its external + form is a string wrapped in curly braces with colons between the names and + values, and commas between the values and names. The internal form is an + object having get and opt methods for accessing the + values by name, and put methods for adding or replacing values + by name. The values can be any of these types: Boolean, + JSONArray, JSONObject, Number, + String, or the JSONObject.NULL object. A JSONObject + constructor can be used to convert an external form JSON text into an + internal form whose values can be retrieved with the get and + opt methods, or to convert values into a JSON text using the + put and toString methods. A get method + returns a value if one can be found, and throws an exception if one cannot be + found. An opt method returns a default value instead of throwing + an exception, and so is useful for obtaining optional values. +

    + The generic get() and opt() methods return an + object, which you can cast or query for type. There are also typed + get and opt methods that do type checking and type + coercion for you. The opt methods differ from the get methods in that they do + not throw. Instead, they return a specified value, such as null. +

    + The put methods add or replace values in an object. For example, + +

    + myString = new JSONObject().put("JSON", "Hello, World!").toString();
    + 
    + + produces the string {"JSON": "Hello, World"}. +

    + The texts produced by the toString methods strictly conform to + the JSON syntax rules. The constructors are more forgiving in the texts they + will accept: +

      +
    • An extra , (comma) may appear just + before the closing brace.
    • +
    • Strings may be quoted with ' (single + quote).
    • +
    • Strings do not need to be quoted at all if they do not begin with a quote + or single quote, and if they do not contain leading or trailing spaces, and + if they do not contain any of these characters: + { } [ ] / \ : , = ; # and if they do not look like numbers and + if they are not the reserved words true, false, or + null.
    • +
    • Keys can be followed by = or => as well as by + :.
    • +
    • Values can be followed by ; (semicolon) as + well as by , (comma).
    • +
    • Numbers may have the 0x- (hex) prefix.
    • +
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.ObjectNULL +
      It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONObj() +
      Construct an empty JSONObject.
      +
      JSONObj(JSONObj jo, + java.lang.String[] names) +
      Construct a JSONObject from a subset of another JSONObject.
      +
      JSONObj(JSONTokener x) +
      Construct a JSONObject from a JSONTokener.
      +
      JSONObj(java.util.Map map) +
      Construct a JSONObject from a Map.
      +
      JSONObj(java.lang.Object bean) +
      Construct a JSONObject from an Object using bean getters.
      +
      JSONObj(java.lang.Object object, + java.lang.String[] names) +
      Construct a JSONObject from an Object, using reflection to find the + public members.
      +
      JSONObj(java.lang.String source) +
      Construct a JSONObject from a source JSON text string.
      +
      JSONObj(java.lang.String baseName, + java.util.Locale locale) +
      Construct a JSONObject from a ResourceBundle.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      JSONObjaccumulate(java.lang.String key, + java.lang.Object value) +
      Accumulate values under a key.
      +
      JSONObjappend(java.lang.String key, + java.lang.Object value) +
      Append values to the array under a key.
      +
      static java.lang.StringdoubleToString(double d) +
      Produce a string from a double.
      +
      java.lang.Objectget(java.lang.String key) +
      Get the value object associated with a key.
      +
      booleangetBoolean(java.lang.String key) +
      Get the boolean value associated with a key.
      +
      doublegetDouble(java.lang.String key) +
      Get the double value associated with a key.
      +
      intgetInt(java.lang.String key) +
      Get the int value associated with a key.
      +
      JSONArrgetJSONArray(java.lang.String key) +
      Get the JSONArray value associated with a key.
      +
      JSONObjgetJSONObject(java.lang.String key) +
      Get the JSONObject value associated with a key.
      +
      longgetLong(java.lang.String key) +
      Get the long value associated with a key.
      +
      static java.lang.String[]getNames(JSONObj jo) +
      Get an array of field names from a JSONObject.
      +
      static java.lang.String[]getNames(java.lang.Object object) +
      Get an array of field names from an Object.
      +
      java.lang.StringgetString(java.lang.String key) +
      Get the string associated with a key.
      +
      booleanhas(java.lang.String key) +
      Determine if the JSONObject contains a specific key.
      +
      JSONObjincrement(java.lang.String key) +
      Increment a property of a JSONObject.
      +
      booleanisNull(java.lang.String key) +
      Determine if the value associated with the key is null or if there is no + value.
      +
      java.util.Iteratorkeys() +
      Get an enumeration of the keys of the JSONObject.
      +
      intlength() +
      Get the number of keys stored in the JSONObject.
      +
      JSONArrnames() +
      Produce a JSONArray containing the names of the elements of this + JSONObject.
      +
      static java.lang.StringnumberToString(java.lang.Number number) +
      Produce a string from a Number.
      +
      java.lang.Objectopt(java.lang.String key) +
      Get an optional value associated with a key.
      +
      booleanoptBoolean(java.lang.String key) +
      Get an optional boolean associated with a key.
      +
      booleanoptBoolean(java.lang.String key, + boolean defaultValue) +
      Get an optional boolean associated with a key.
      +
      doubleoptDouble(java.lang.String key) +
      Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number.
      +
      doubleoptDouble(java.lang.String key, + double defaultValue) +
      Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number.
      +
      intoptInt(java.lang.String key) +
      Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number.
      +
      intoptInt(java.lang.String key, + int defaultValue) +
      Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number.
      +
      JSONArroptJSONArray(java.lang.String key) +
      Get an optional JSONArray associated with a key.
      +
      JSONObjoptJSONObject(java.lang.String key) +
      Get an optional JSONObject associated with a key.
      +
      longoptLong(java.lang.String key) +
      Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number.
      +
      longoptLong(java.lang.String key, + long defaultValue) +
      Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number.
      +
      java.lang.StringoptString(java.lang.String key) +
      Get an optional string associated with a key.
      +
      java.lang.StringoptString(java.lang.String key, + java.lang.String defaultValue) +
      Get an optional string associated with a key.
      +
      JSONObjput(java.lang.String key, + boolean value) +
      Put a key/boolean pair in the JSONObject.
      +
      JSONObjput(java.lang.String key, + java.util.Collection value) +
      Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
      +
      JSONObjput(java.lang.String key, + double value) +
      Put a key/double pair in the JSONObject.
      +
      JSONObjput(java.lang.String key, + int value) +
      Put a key/int pair in the JSONObject.
      +
      JSONObjput(java.lang.String key, + long value) +
      Put a key/long pair in the JSONObject.
      +
      JSONObjput(java.lang.String key, + java.util.Map value) +
      Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
      +
      JSONObjput(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject.
      +
      JSONObjputOnce(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
      +
      JSONObjputOpt(java.lang.String key, + java.lang.Object value) +
      Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
      +
      static java.lang.Stringquote(java.lang.String string) +
      Produce a string in double quotes with backslash sequences in all the + right places.
      +
      java.lang.Objectremove(java.lang.String key) +
      Remove a name and its value, if present.
      +
      static java.lang.ObjectstringToValue(java.lang.String string) +
      Try to convert a string into a number, boolean, or null.
      +
      static voidtestValidity(java.lang.Object o) +
      Throw an exception if the object is a NaN or infinite number.
      +
      JSONArrtoJSONArray(JSONArr names) +
      Produce a JSONArray containing the values of the members of this + JSONObject.
      +
      java.lang.StringtoString() +
      Make a JSON text of this JSONObject.
      +
      java.lang.StringtoString(int indentFactor) +
      Make a prettyprinted JSON text of this JSONObject.
      +
      static java.lang.StringvalueToString(java.lang.Object value) +
      Make a JSON text of an Object value.
      +
      static java.lang.Objectwrap(java.lang.Object object) +
      Wrap an object, if necessary.
      +
      java.io.Writerwrite(java.io.Writer writer) +
      Write the contents of the JSONObject as JSON text to a writer.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NULL

        +
        public static final java.lang.Object NULL
        +
        It is sometimes more convenient and less ambiguous to have a + NULL object than to use Java's null value. + JSONObject.NULL.equals(null) returns true. + JSONObject.NULL.toString() returns "null".
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj()
        +
        Construct an empty JSONObject.
        +
      • +
      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj(JSONObj jo,
        +       java.lang.String[] names)
        +
        Construct a JSONObject from a subset of another JSONObject. An array of + strings is used to identify the keys that should be copied. Missing keys + are ignored.
        +
        Parameters:
        jo - A JSONObject.
        names - An array of strings.
        +
        Throws:
        +
        JSONException
        +
        JSONException - If a value is a non-finite number or if a name is + duplicated.
        +
      • +
      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj(JSONTokener x)
        +
        Construct a JSONObject from a JSONTokener.
        +
        Parameters:
        x - A JSONTokener object containing the source string.
        +
        Throws:
        +
        JSONException - If there is a syntax error in the source string or a + duplicated key.
        +
      • +
      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj(java.util.Map map)
        +
        Construct a JSONObject from a Map.
        +
        Parameters:
        map - A map object that can be used to initialize the contents of + the JSONObject.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj(java.lang.Object bean)
        +
        Construct a JSONObject from an Object using bean getters. It reflects on + all of the public methods of the object. For each of the methods with no + parameters and a name starting with "get" or + "is" followed by an uppercase letter, the method is invoked, + and a key and the value returned from the getter method are put into the + new JSONObject. + + The key is formed by removing the "get" or "is" + prefix. If the second remaining character is not upper case, then the + first character is converted to lower case. + + For example, if an object has a method named "getName", and + if the result of calling object.getName() is + "Larry Fine", then the JSONObject will contain + "name": "Larry Fine".
        +
        Parameters:
        bean - An object that has getter methods that should be used to make + a JSONObject.
        +
      • +
      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj(java.lang.Object object,
        +       java.lang.String[] names)
        +
        Construct a JSONObject from an Object, using reflection to find the + public members. The resulting JSONObject's keys will be the strings from + the names array, and the values will be the field values associated with + those keys in the object. If a key is not found or not visible, then it + will not be copied into the new JSONObject.
        +
        Parameters:
        object - An object that has fields that should be used to make a + JSONObject.
        names - An array of strings, the names of the fields to be obtained + from the object.
        +
      • +
      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj(java.lang.String source)
        +
        Construct a JSONObject from a source JSON text string. This is the most + commonly used JSONObject constructor.
        +
        Parameters:
        source - A string beginning with { (left + brace) and ending with } +  (right brace).
        +
        Throws:
        +
        JSONException - If there is a syntax error in the source string or a + duplicated key.
        +
      • +
      + + + +
        +
      • +

        JSONObj

        +
        public JSONObj(java.lang.String baseName,
        +       java.util.Locale locale)
        +
        Construct a JSONObject from a ResourceBundle.
        +
        Parameters:
        baseName - The ResourceBundle base name.
        locale - The Locale to load the ResourceBundle for.
        +
        Throws:
        +
        JSONException - If any JSONExceptions are detected.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accumulate

        +
        public JSONObj accumulate(java.lang.String key,
        +                 java.lang.Object value)
        +
        Accumulate values under a key. It is similar to the put method except + that if there is already an object stored under the key then a JSONArray + is stored under the key to hold all of the accumulated values. If there + is already a JSONArray, then the new value is appended to it. In + contrast, the put method replaces the previous value. + + If only one value is accumulated that is not a JSONArray, then the result + will be the same as using put. But if multiple values are accumulated, + then the result will be like append.
        +
        Parameters:
        key - A key string.
        value - An object to be accumulated under the key.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is an invalid number or if the key is null.
        +
      • +
      + + + +
        +
      • +

        append

        +
        public JSONObj append(java.lang.String key,
        +             java.lang.Object value)
        +
        Append values to the array under a key. If the key does not exist in the + JSONObject, then the key is put in the JSONObject with its value being a + JSONArray containing the value parameter. If the key was already + associated with a JSONArray, then the value parameter is appended to it.
        +
        Parameters:
        key - A key string.
        value - An object to be accumulated under the key.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null or if the current value associated with + the key is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        doubleToString

        +
        public static java.lang.String doubleToString(double d)
        +
        Produce a string from a double. The string "null" will be returned if the + number is not finite.
        +
        Parameters:
        d - A double.
        +
        Returns:
        A String.
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key)
        +
        Get the value object associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The object associated with the key.
        +
        Throws:
        +
        JSONException - if the key is not found.
        +
      • +
      + + + +
        +
      • +

        getBoolean

        +
        public boolean getBoolean(java.lang.String key)
        +
        Get the boolean value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The truth. (False if it failes to find the value)
        +
        Throws:
        +
        JSONException - if the value is not a Boolean or the String "true" or + "false".
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(java.lang.String key)
        +
        Get the double value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The numeric value. -1 if it failes to find the value
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a Number + object and cannot be converted to a number.
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(java.lang.String key)
        +
        Get the int value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The integer value. (-1 if it failes to get the integer)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value cannot be converted + to an integer.
        +
      • +
      + + + +
        +
      • +

        getJSONArray

        +
        public JSONArr getJSONArray(java.lang.String key)
        +
        Get the JSONArray value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONArray which is the value. (null if failes to find the array)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a JSONArray.
        +
      • +
      + + + +
        +
      • +

        getJSONObject

        +
        public JSONObj getJSONObject(java.lang.String key)
        +
        Get the JSONObject value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONObject which is the value.
        +
        Throws:
        +
        JSONException - if the key is not found or if the value is not a JSONObject.
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        public long getLong(java.lang.String key)
        +
        Get the long value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The long value. (-1 if it failes)
        +
        Throws:
        +
        JSONException - if the key is not found or if the value cannot be converted + to a long.
        +
      • +
      + + + +
        +
      • +

        getNames

        +
        public static java.lang.String[] getNames(JSONObj jo)
        +
        Get an array of field names from a JSONObject.
        +
        Returns:
        An array of field names, or null if there are no names.
        +
      • +
      + + + +
        +
      • +

        getNames

        +
        public static java.lang.String[] getNames(java.lang.Object object)
        +
        Get an array of field names from an Object.
        +
        Returns:
        An array of field names, or null if there are no names.
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String key)
        +
        Get the string associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A string which is the value. (empty string if it fails)
        +
        Throws:
        +
        JSONException - if there is no string value for the key.
        +
      • +
      + + + +
        +
      • +

        has

        +
        public boolean has(java.lang.String key)
        +
        Determine if the JSONObject contains a specific key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        true if the key exists in the JSONObject.
        +
      • +
      + + + +
        +
      • +

        increment

        +
        public JSONObj increment(java.lang.String key)
        +
        Increment a property of a JSONObject. If there is no such property, + create one with a value of 1. If there is such a property, and if it is + an Integer, Long, Double, or Float, then add one to it.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If there is already a property with this name that is not an + Integer, Long, Double, or Float.
        +
      • +
      + + + +
        +
      • +

        isNull

        +
        public boolean isNull(java.lang.String key)
        +
        Determine if the value associated with the key is null or if there is no + value.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        true if there is no value associated with the key or if the value + is the JSONObject.NULL object.
        +
      • +
      + + + +
        +
      • +

        keys

        +
        public java.util.Iterator keys()
        +
        Get an enumeration of the keys of the JSONObject.
        +
        Returns:
        An iterator of the keys.
        +
      • +
      + + + +
        +
      • +

        length

        +
        public int length()
        +
        Get the number of keys stored in the JSONObject.
        +
        Returns:
        The number of keys in the JSONObject.
        +
      • +
      + + + +
        +
      • +

        names

        +
        public JSONArr names()
        +
        Produce a JSONArray containing the names of the elements of this + JSONObject.
        +
        Returns:
        A JSONArray containing the key strings, or null if the JSONObject + is empty.
        +
      • +
      + + + +
        +
      • +

        numberToString

        +
        public static java.lang.String numberToString(java.lang.Number number)
        +
        Produce a string from a Number.
        +
        Parameters:
        number - A Number
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException - If n is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        opt

        +
        public java.lang.Object opt(java.lang.String key)
        +
        Get an optional value associated with a key.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value, or null if there is no value.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(java.lang.String key)
        +
        Get an optional boolean associated with a key. It returns false if there + is no such key, or if the value is not Boolean.TRUE or the String "true".
        +
        Parameters:
        key - A key string.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optBoolean

        +
        public boolean optBoolean(java.lang.String key,
        +                 boolean defaultValue)
        +
        Get an optional boolean associated with a key. It returns the + defaultValue if there is no such key, or if it is not a Boolean or the + String "true" or "false" (case insensitive).
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        The truth.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(java.lang.String key)
        +
        Get an optional double associated with a key, or NaN if there is no such + key or if its value is not a number. If the value is a string, an attempt + will be made to evaluate it as a number.
        +
        Parameters:
        key - A string which is the key.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optDouble

        +
        public double optDouble(java.lang.String key,
        +               double defaultValue)
        +
        Get an optional double associated with a key, or the defaultValue if + there is no such key or if its value is not a number. If the value is a + string, an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(java.lang.String key)
        +
        Get an optional int value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optInt

        +
        public int optInt(java.lang.String key,
        +         int defaultValue)
        +
        Get an optional int value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optJSONArray

        +
        public JSONArr optJSONArray(java.lang.String key)
        +
        Get an optional JSONArray associated with a key. It returns null if there + is no such key, or if its value is not a JSONArray.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONArray which is the value.
        +
      • +
      + + + +
        +
      • +

        optJSONObject

        +
        public JSONObj optJSONObject(java.lang.String key)
        +
        Get an optional JSONObject associated with a key. It returns null if + there is no such key, or if its value is not a JSONObject.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A JSONObject which is the value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(java.lang.String key)
        +
        Get an optional long value associated with a key, or zero if there is no + such key or if the value is not a number. If the value is a string, an + attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optLong

        +
        public long optLong(java.lang.String key,
        +           long defaultValue)
        +
        Get an optional long value associated with a key, or the default if there + is no such key or if the value is not a number. If the value is a string, + an attempt will be made to evaluate it as a number.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        An object which is the value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(java.lang.String key)
        +
        Get an optional string associated with a key. It returns an empty string + if there is no such key. If the value is not a string and is not null, + then it is converted to a string.
        +
        Parameters:
        key - A key string.
        +
        Returns:
        A string which is the value.
        +
      • +
      + + + +
        +
      • +

        optString

        +
        public java.lang.String optString(java.lang.String key,
        +                         java.lang.String defaultValue)
        +
        Get an optional string associated with a key. It returns the defaultValue + if there is no such key.
        +
        Parameters:
        key - A key string.
        defaultValue - The default.
        +
        Returns:
        A string which is the value.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObj put(java.lang.String key,
        +          boolean value)
        +
        Put a key/boolean pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A boolean which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObj put(java.lang.String key,
        +          java.util.Collection value)
        +
        Put a key/value pair in the JSONObject, where the value will be a + JSONArray which is produced from a Collection.
        +
        Parameters:
        key - A key string.
        value - A Collection value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObj put(java.lang.String key,
        +          double value)
        +
        Put a key/double pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A double which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null or if the number is invalid.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObj put(java.lang.String key,
        +          int value)
        +
        Put a key/int pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - An int which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObj put(java.lang.String key,
        +          long value)
        +
        Put a key/long pair in the JSONObject.
        +
        Parameters:
        key - A key string.
        value - A long which is the value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the key is null.
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObj put(java.lang.String key,
        +          java.util.Map value)
        +
        Put a key/value pair in the JSONObject, where the value will be a + JSONObject which is produced from a Map.
        +
        Parameters:
        key - A key string.
        value - A Map value.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        put

        +
        public JSONObj put(java.lang.String key,
        +          java.lang.Object value)
        +
        Put a key/value pair in the JSONObject. If the value is null, then the + key will be removed from the JSONObject if it is present.
        +
        Parameters:
        key - A key string.
        value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is non-finite number or if the key is null.
        +
      • +
      + + + +
        +
      • +

        putOnce

        +
        public JSONObj putOnce(java.lang.String key,
        +              java.lang.Object value)
        +
        Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null, and only if there is not already a member with that + name.
        +
        Parameters:
        key -
        value -
        +
        Returns:
        his.
        +
        Throws:
        +
        JSONException - if the key is a duplicate
        +
      • +
      + + + +
        +
      • +

        putOpt

        +
        public JSONObj putOpt(java.lang.String key,
        +             java.lang.Object value)
        +
        Put a key/value pair in the JSONObject, but only if the key and the value + are both non-null.
        +
        Parameters:
        key - A key string.
        value - An object which is the value. It should be of one of these + types: Boolean, Double, Integer, JSONArray, JSONObject, Long, + String, or the JSONObject.NULL object.
        +
        Returns:
        this.
        +
        Throws:
        +
        JSONException - If the value is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        quote

        +
        public static java.lang.String quote(java.lang.String string)
        +
        Produce a string in double quotes with backslash sequences in all the + right places. A backslash will be inserted within +
        Parameters:
        string - A String
        +
        Returns:
        A String correctly formatted for insertion in a JSON text.
        +
      • +
      + + + +
        +
      • +

        remove

        +
        public java.lang.Object remove(java.lang.String key)
        +
        Remove a name and its value, if present.
        +
        Parameters:
        key - The name to be removed.
        +
        Returns:
        The value that was associated with the name, or null if there was + no value.
        +
      • +
      + + + +
        +
      • +

        stringToValue

        +
        public static java.lang.Object stringToValue(java.lang.String string)
        +
        Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string.
        +
        Parameters:
        string - A String.
        +
        Returns:
        A simple JSON value.
        +
      • +
      + + + +
        +
      • +

        testValidity

        +
        public static void testValidity(java.lang.Object o)
        +                         throws JSONException
        +
        Throw an exception if the object is a NaN or infinite number.
        +
        Parameters:
        o - The object to test.
        +
        Throws:
        +
        JSONException - If o is a non-finite number.
        +
      • +
      + + + +
        +
      • +

        toJSONArray

        +
        public JSONArr toJSONArray(JSONArr names)
        +                    throws JSONException
        +
        Produce a JSONArray containing the values of the members of this + JSONObject.
        +
        Parameters:
        names - A JSONArray containing a list of key strings. This determines + the sequence of the values in the result.
        +
        Returns:
        A JSONArray of values.
        +
        Throws:
        +
        JSONException - If any of the values are non-finite numbers.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a JSON text of this JSONObject. For compactness, no whitespace is + added. If this would not result in a syntactically correct JSON text, + then null will be returned instead. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString(int indentFactor)
        +
        Make a prettyprinted JSON text of this JSONObject. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Parameters:
        indentFactor - The number of spaces to add to each level of indentation.
        +
        Returns:
        a printable, displayable, portable, transmittable representation + of the object, beginning with { (left + brace) and ending with } (right + brace).
        +
        Throws:
        +
        JSONException - If the object contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        valueToString

        +
        public static java.lang.String valueToString(java.lang.Object value)
        +
        Make a JSON text of an Object value. If the object has an + value.toJSONString() method, then that method will be used to produce the + JSON text. The method is required to produce a strictly conforming text. + If the object does not contain a toJSONString method (which is the most + common case), then a text will be produced by other means. If the value + is an array or Collection, then a JSONArray will be made from it and its + toJSONString method will be called. If the value is a MAP, then a + JSONObject will be made from it and its toJSONString method will be + called. Otherwise, the value's toString method will be called, and the + result will be quoted. + +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Parameters:
        value - The value to be serialized.
        +
        Returns:
        a printable, displayable, transmittable representation of the + object, beginning with { (left + brace) and ending with } (right + brace).
        +
        Throws:
        +
        JSONException - If the value is or contains an invalid number.
        +
      • +
      + + + +
        +
      • +

        wrap

        +
        public static java.lang.Object wrap(java.lang.Object object)
        +
        Wrap an object, if necessary. If the object is null, return the NULL + object. If it is an array or collection, wrap it in a JSONArray. If it is + a map, wrap it in a JSONObject. If it is a standard property (Double, + String, et al) then it is already wrapped. Otherwise, if it comes from + one of the java packages, turn it into a string. And if it doesn't, try + to wrap it in a JSONObject. If the wrapping fails, then null is returned.
        +
        Parameters:
        object - The object to wrap
        +
        Returns:
        The wrapped value
        +
      • +
      + + + +
        +
      • +

        write

        +
        public java.io.Writer write(java.io.Writer writer)
        +
        Write the contents of the JSONObject as JSON text to a writer. For + compactness, no whitespace is added. +

        + Warning: This method assumes that the data structure is acyclical.

        +
        Returns:
        The writer.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONString.html b/distribution/json4processing-0.1.6/reference/org/json/JSONString.html new file mode 100644 index 000000000..c3f6f487d --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONString.html @@ -0,0 +1,215 @@ + + + + + +JSONString (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Interface JSONString

+
+
+
+
    +
  • +
    +
    +
    public interface JSONString
    +
    The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object). The + toJSONString method will be used instead of the default behavior + of using the Object's toString() method and quoting the result.
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.StringtoJSONString() +
      The toJSONString method allows a class to produce its own JSON + serialization.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toJSONString

        +
        java.lang.String toJSONString()
        +
        The toJSONString method allows a class to produce its own JSON + serialization.
        +
        Returns:
        A strictly syntactically correct JSON text.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONStringer.html b/distribution/json4processing-0.1.6/reference/org/json/JSONStringer.html new file mode 100644 index 000000000..cae1c8a03 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONStringer.html @@ -0,0 +1,307 @@ + + + + + +JSONStringer (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONStringer

+
+
+ +
+
    +
  • +
    +
    +
    public class JSONStringer
    +extends JSONWriter
    +
    JSONStringer provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONStringer can produce one JSON text. +

    + A JSONStringer instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting cascade style. For example,

    + myString = new JSONStringer()
    +     .object()
    +         .key("JSON")
    +         .value("Hello, World!")
    +     .endObject()
    +     .toString();
    which produces the string
    + {"JSON":"Hello, World!"}
    +

    + The first method called must be array or object. + There are no methods for adding commas or colons. JSONStringer adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

    + This can sometimes be easier than using a JSONObject to build a string.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONStringer() +
      Make a fresh JSONStringer.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONStringer

        +
        public JSONStringer()
        +
        Make a fresh JSONStringer. It can be used to build one JSON text.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Return the JSON text. This method is used to obtain the product of the + JSONStringer instance. It will return null if there was a + problem in the construction of the JSON text (such as the calls to + array were not properly balanced with calls to + endArray).
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        The JSON text.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONTokener.html b/distribution/json4processing-0.1.6/reference/org/json/JSONTokener.html new file mode 100644 index 000000000..f2fe60eae --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONTokener.html @@ -0,0 +1,557 @@ + + + + + +JSONTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONTokener

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONTokener
    • +
    +
  • +
+
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    HTTPTokener, XMLTokener
    +
    +
    +
    +
    public class JSONTokener
    +extends java.lang.Object
    +
    A JSONTokener takes a source string and extracts characters and tokens from + it. It is used by the JSONObject and JSONArray constructors to parse + JSON source strings.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONTokener(java.io.InputStream inputStream) +
      Construct a JSONTokener from an InputStream.
      +
      JSONTokener(java.io.Reader reader) +
      Construct a JSONTokener from a Reader.
      +
      JSONTokener(java.lang.String s) +
      Construct a JSONTokener from a string.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidback() +
      Back up one character.
      +
      static intdehexchar(char c) +
      Get the hex value of a character (base16).
      +
      booleanend() 
      booleanmore() +
      Determine if the source string still contains characters that next() + can consume.
      +
      charnext() +
      Get the next character in the source string.
      +
      charnext(char c) +
      Consume the next character, and check that it matches a specified + character.
      +
      java.lang.Stringnext(int n) +
      Get the next n characters.
      +
      charnextClean() +
      Get the next char in the string, skipping whitespace.
      +
      java.lang.StringnextString(char quote) +
      Return the characters up to the next close quote character.
      +
      java.lang.StringnextTo(char delimiter) +
      Get the text up but not including the specified character or the + end of line, whichever comes first.
      +
      java.lang.StringnextTo(java.lang.String delimiters) +
      Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
      +
      java.lang.ObjectnextValue() +
      Get the next value.
      +
      charskipTo(char to) +
      Skip characters until the next character is the requested character.
      +
      java.lang.StringtoString() +
      Make a printable string of this JSONTokener.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.io.Reader reader)
        +
        Construct a JSONTokener from a Reader.
        +
        Parameters:
        reader - A reader.
        +
      • +
      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.io.InputStream inputStream)
        +
        Construct a JSONTokener from an InputStream.
        +
      • +
      + + + +
        +
      • +

        JSONTokener

        +
        public JSONTokener(java.lang.String s)
        +
        Construct a JSONTokener from a string.
        +
        Parameters:
        s - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        back

        +
        public void back()
        +
        Back up one character. This provides a sort of lookahead capability, + so that you can test for a digit or letter before attempting to parse + the next number or identifier.
        +
      • +
      + + + +
        +
      • +

        dehexchar

        +
        public static int dehexchar(char c)
        +
        Get the hex value of a character (base16).
        +
        Parameters:
        c - A character between '0' and '9' or between 'A' and 'F' or + between 'a' and 'f'.
        +
        Returns:
        An int between 0 and 15, or -1 if c was not a hex digit.
        +
      • +
      + + + +
        +
      • +

        end

        +
        public boolean end()
        +
      • +
      + + + +
        +
      • +

        more

        +
        public boolean more()
        +
        Determine if the source string still contains characters that next() + can consume.
        +
        Returns:
        true if not yet at the end of the source.
        +
      • +
      + + + +
        +
      • +

        next

        +
        public char next()
        +
        Get the next character in the source string.
        +
        Returns:
        The next character, or 0 if past the end of the source string.
        +
      • +
      + + + +
        +
      • +

        next

        +
        public char next(char c)
        +
        Consume the next character, and check that it matches a specified + character.
        +
        Parameters:
        c - The character to match.
        +
        Returns:
        The character.
        +
        Throws:
        +
        JSONException - if the character does not match.
        +
      • +
      + + + +
        +
      • +

        next

        +
        public java.lang.String next(int n)
        +
        Get the next n characters.
        +
        Parameters:
        n - The number of characters to take.
        +
        Returns:
        A string of n characters.
        +
        Throws:
        +
        JSONException - Substring bounds error if there are not + n characters remaining in the source string.
        +
      • +
      + + + +
        +
      • +

        nextClean

        +
        public char nextClean()
        +
        Get the next char in the string, skipping whitespace.
        +
        Returns:
        A character, or 0 if there are no more characters.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextString

        +
        public java.lang.String nextString(char quote)
        +
        Return the characters up to the next close quote character. + Backslash processing is done. The formal JSON format does not + allow strings in single quotes, but an implementation is allowed to + accept them.
        +
        Parameters:
        quote - The quoting character, either + " (double quote) or + ' (single quote).
        +
        Returns:
        A String.
        +
        Throws:
        +
        JSONException - Unterminated string.
        +
      • +
      + + + +
        +
      • +

        nextTo

        +
        public java.lang.String nextTo(char delimiter)
        +
        Get the text up but not including the specified character or the + end of line, whichever comes first.
        +
        Parameters:
        delimiter - A delimiter character.
        +
        Returns:
        A string.
        +
      • +
      + + + +
        +
      • +

        nextTo

        +
        public java.lang.String nextTo(java.lang.String delimiters)
        +
        Get the text up but not including one of the specified delimiter + characters or the end of line, whichever comes first.
        +
        Parameters:
        delimiters - A set of delimiter characters.
        +
        Returns:
        A string, trimmed.
        +
      • +
      + + + +
        +
      • +

        nextValue

        +
        public java.lang.Object nextValue()
        +
        Get the next value. The value can be a Boolean, Double, Integer, + JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object.
        +
        Returns:
        An object.
        +
        Throws:
        +
        JSONException - If syntax error.
        +
      • +
      + + + +
        +
      • +

        skipTo

        +
        public char skipTo(char to)
        +
        Skip characters until the next character is the requested character. + If the requested character is not found, no characters are skipped.
        +
        Parameters:
        to - A character to skip to.
        +
        Returns:
        The requested character, or zero if the requested character + is not found.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Make a printable string of this JSONTokener.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        " at {index} [character {character} line {line}]"
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSONWriter.html b/distribution/json4processing-0.1.6/reference/org/json/JSONWriter.html new file mode 100644 index 000000000..f4047e3ed --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/JSONWriter.html @@ -0,0 +1,474 @@ + + + + + +JSONWriter (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class JSONWriter

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.JSONWriter
    • +
    +
  • +
+
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    JSONStringer
    +
    +
    +
    +
    public class JSONWriter
    +extends java.lang.Object
    +
    JSONWriter provides a quick and convenient way of producing JSON text. + The texts produced strictly conform to JSON syntax rules. No whitespace is + added, so the results are ready for transmission or storage. Each instance of + JSONWriter can produce one JSON text. +

    + A JSONWriter instance provides a value method for appending + values to the + text, and a key + method for adding keys before values in objects. There are array + and endArray methods that make and bound array values, and + object and endObject methods which make and bound + object values. All of these methods return the JSONWriter instance, + permitting a cascade style. For example,

    + new JSONWriter(myWriter)
    +     .object()
    +         .key("JSON")
    +         .value("Hello, World!")
    +     .endObject();
    which writes
    + {"JSON":"Hello, World!"}
    +

    + The first method called must be array or object. + There are no methods for adding commas or colons. JSONWriter adds them for + you. Objects and arrays can be nested up to 20 levels deep. +

    + This can sometimes be easier than using a JSONObject to build a string.

    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      JSONWriter(java.io.Writer w) +
      Make a fresh JSONWriter.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      JSONWriterarray() +
      Begin appending a new array.
      +
      JSONWriterendArray() +
      End an array.
      +
      JSONWriterendObject() +
      End an object.
      +
      JSONWriterkey(java.lang.String string) +
      Append a key.
      +
      JSONWriterobject() +
      Begin appending a new object.
      +
      JSONWritervalue(boolean b) +
      Append either the value true or the value + false.
      +
      JSONWritervalue(double d) +
      Append a double value.
      +
      JSONWritervalue(long l) +
      Append a long value.
      +
      JSONWritervalue(java.lang.Object object) +
      Append an object value.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JSONWriter

        +
        public JSONWriter(java.io.Writer w)
        +
        Make a fresh JSONWriter. It can be used to build one JSON text.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        array

        +
        public JSONWriter array()
        +                 throws JSONException
        +
        Begin appending a new array. All values until the balancing + endArray will be appended to this array. The + endArray method must be called to mark the array's end.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
        +
      • +
      + + + +
        +
      • +

        endArray

        +
        public JSONWriter endArray()
        +                    throws JSONException
        +
        End an array. This method most be called to balance calls to + array.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If incorrectly nested.
        +
      • +
      + + + +
        +
      • +

        endObject

        +
        public JSONWriter endObject()
        +                     throws JSONException
        +
        End an object. This method most be called to balance calls to + object.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If incorrectly nested.
        +
      • +
      + + + +
        +
      • +

        key

        +
        public JSONWriter key(java.lang.String string)
        +               throws JSONException
        +
        Append a key. The key will be associated with the next value. In an + object, every value must be preceded by a key.
        +
        Parameters:
        string - A key string.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the key is out of place. For example, keys + do not belong in arrays or if the key is null.
        +
      • +
      + + + +
        +
      • +

        object

        +
        public JSONWriter object()
        +                  throws JSONException
        +
        Begin appending a new object. All keys and values until the balancing + endObject will be appended to this object. The + endObject method must be called to mark the object's end.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the nesting is too deep, or if the object is + started in the wrong place (for example as a key or after the end of the + outermost array or object).
        +
      • +
      + + + +
        +
      • +

        value

        +
        public JSONWriter value(boolean b)
        +                 throws JSONException
        +
        Append either the value true or the value + false.
        +
        Parameters:
        b - A boolean.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        value

        +
        public JSONWriter value(double d)
        +                 throws JSONException
        +
        Append a double value.
        +
        Parameters:
        d - A double.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the number is not finite.
        +
      • +
      + + + + + + + +
        +
      • +

        value

        +
        public JSONWriter value(java.lang.Object object)
        +                 throws JSONException
        +
        Append an object value.
        +
        Parameters:
        object - The object to append. It can be null, or a Boolean, Number, + String, JSONObject, or JSONArray, or an object that implements JSONString.
        +
        Returns:
        this
        +
        Throws:
        +
        JSONException - If the value is out of sequence.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/XML.html b/distribution/json4processing-0.1.6/reference/org/json/XML.html new file mode 100644 index 000000000..d088801ee --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/XML.html @@ -0,0 +1,552 @@ + + + + + +XML (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class XML

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.json.XML
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class XML
    +extends java.lang.Object
    +
    This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.CharacterAMP +
      The Character '&'.
      +
      static java.lang.CharacterAPOS +
      The Character '''.
      +
      static java.lang.CharacterBANG +
      The Character '!'.
      +
      static java.lang.CharacterEQ +
      The Character '='.
      +
      static java.lang.CharacterGT +
      The Character '>'.
      +
      static java.lang.CharacterLT +
      The Character '<'.
      +
      static java.lang.CharacterQUEST +
      The Character '?'.
      +
      static java.lang.CharacterQUOT +
      The Character '"'.
      +
      static java.lang.CharacterSLASH +
      The Character '/'.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      XML() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static java.lang.Stringescape(java.lang.String string) +
      Replace special characters with XML escapes:
      +
      static voidnoSpace(java.lang.String string) +
      Throw an exception if the string contains whitespace.
      +
      static java.lang.ObjectstringToValue(java.lang.String string) +
      Try to convert a string into a number, boolean, or null.
      +
      static JSONObjtoJSONObject(java.lang.String string) +
      Convert a well-formed (but not necessarily valid) XML string into a + JSONObject.
      +
      static java.lang.StringtoString(java.lang.Object object) +
      Convert a JSONObject into a well-formed, element-normal XML string.
      +
      static java.lang.StringtoString(java.lang.Object object, + java.lang.String tagName) +
      Convert a JSONObject into a well-formed, element-normal XML string.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        AMP

        +
        public static final java.lang.Character AMP
        +
        The Character '&'.
        +
      • +
      + + + +
        +
      • +

        APOS

        +
        public static final java.lang.Character APOS
        +
        The Character '''.
        +
      • +
      + + + +
        +
      • +

        BANG

        +
        public static final java.lang.Character BANG
        +
        The Character '!'.
        +
      • +
      + + + +
        +
      • +

        EQ

        +
        public static final java.lang.Character EQ
        +
        The Character '='.
        +
      • +
      + + + +
        +
      • +

        GT

        +
        public static final java.lang.Character GT
        +
        The Character '>'.
        +
      • +
      + + + +
        +
      • +

        LT

        +
        public static final java.lang.Character LT
        +
        The Character '<'.
        +
      • +
      + + + +
        +
      • +

        QUEST

        +
        public static final java.lang.Character QUEST
        +
        The Character '?'.
        +
      • +
      + + + +
        +
      • +

        QUOT

        +
        public static final java.lang.Character QUOT
        +
        The Character '"'.
        +
      • +
      + + + +
        +
      • +

        SLASH

        +
        public static final java.lang.Character SLASH
        +
        The Character '/'.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XML

        +
        public XML()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        escape

        +
        public static java.lang.String escape(java.lang.String string)
        +
        Replace special characters with XML escapes: +
        + & (ampersand) is replaced by &amp;
        + < (less than) is replaced by &lt;
        + > (greater than) is replaced by &gt;
        + " (double quote) is replaced by &quot;
        + 
        +
        Parameters:
        string - The string to be escaped.
        +
        Returns:
        The escaped string.
        +
      • +
      + + + +
        +
      • +

        noSpace

        +
        public static void noSpace(java.lang.String string)
        +                    throws JSONException
        +
        Throw an exception if the string contains whitespace. + Whitespace is not allowed in tagNames and attributes.
        +
        Parameters:
        string -
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        stringToValue

        +
        public static java.lang.Object stringToValue(java.lang.String string)
        +
        Try to convert a string into a number, boolean, or null. If the string + can't be converted, return the string. This is much less ambitious than + JSONObject.stringToValue, especially because it does not attempt to + convert plus forms, octal forms, hex forms, or E forms lacking decimal + points.
        +
        Parameters:
        string - A String.
        +
        Returns:
        A simple JSON value.
        +
      • +
      + + + +
        +
      • +

        toJSONObject

        +
        public static JSONObj toJSONObject(java.lang.String string)
        +                            throws JSONException
        +
        Convert a well-formed (but not necessarily valid) XML string into a + JSONObject. Some information may be lost in this transformation + because JSON is a data format and XML is a document format. XML uses + elements, attributes, and content text, while JSON uses unordered + collections of name/value pairs and arrays of values. JSON does not + does not like to distinguish between elements and attributes. + Sequences of similar elements are represented as JSONArrays. Content + text may be placed in a "content" member. Comments, prologs, DTDs, and + <[ [ ]]> are ignored.
        +
        Parameters:
        string - The source string.
        +
        Returns:
        A JSONObject containing the structured data from the XML string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(java.lang.Object object)
        +                                 throws JSONException
        +
        Convert a JSONObject into a well-formed, element-normal XML string.
        +
        Parameters:
        object - A JSONObject.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static java.lang.String toString(java.lang.Object object,
        +                        java.lang.String tagName)
        +                                 throws JSONException
        +
        Convert a JSONObject into a well-formed, element-normal XML string.
        +
        Parameters:
        object - A JSONObject.
        tagName - The optional name of the enclosing tag.
        +
        Returns:
        A string.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/XMLTokener.html b/distribution/json4processing-0.1.6/reference/org/json/XMLTokener.html new file mode 100644 index 000000000..2b15a0f74 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/XMLTokener.html @@ -0,0 +1,427 @@ + + + + + +XMLTokener (Javadocs: json4processing) + + + + + + + + + + + +
+
org.json
+

Class XMLTokener

+
+
+ +
+
    +
  • +
    +
    +
    public class XMLTokener
    +extends JSONTokener
    +
    The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
    +
    Author:
    +
    JSON.org
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.util.HashMapentity +
      The table of entity values.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      XMLTokener(java.lang.String s) +
      Construct an XMLTokener from a string.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.StringnextCDATA() +
      Get the text in the CDATA block.
      +
      java.lang.ObjectnextContent() +
      Get the next XML outer token, trimming whitespace.
      +
      java.lang.ObjectnextEntity(char ampersand) +
      Return the next entity.
      +
      java.lang.ObjectnextMeta() +
      Returns the next XML meta token.
      +
      java.lang.ObjectnextToken() +
      Get the next XML Token.
      +
      booleanskipPast(java.lang.String to) +
      Skip characters until past the requested string.
      +
      + +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        entity

        +
        public static final java.util.HashMap entity
        +
        The table of entity values. It initially contains Character values for + amp, apos, gt, lt, quot.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XMLTokener

        +
        public XMLTokener(java.lang.String s)
        +
        Construct an XMLTokener from a string.
        +
        Parameters:
        s - A source string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        nextCDATA

        +
        public java.lang.String nextCDATA()
        +
        Get the text in the CDATA block.
        +
        Returns:
        The string up to the ]]>.
        +
        Throws:
        +
        JSONException - If the ]]> is not found.
        +
      • +
      + + + +
        +
      • +

        nextContent

        +
        public java.lang.Object nextContent()
        +
        Get the next XML outer token, trimming whitespace. There are two kinds + of tokens: the '<' character which begins a markup tag, and the content + text between markup tags.
        +
        Returns:
        A string, or a '<' Character, or null if there is no more + source text.
        +
        Throws:
        +
        JSONException
        +
      • +
      + + + +
        +
      • +

        nextEntity

        +
        public java.lang.Object nextEntity(char ampersand)
        +
        Return the next entity. These entities are translated to Characters: + & ' > < ".
        +
        Parameters:
        ampersand - An ampersand character.
        +
        Returns:
        A Character or an entity String if the entity is not recognized.
        +
        Throws:
        +
        JSONException - If missing ';' in XML entity.
        +
      • +
      + + + +
        +
      • +

        nextMeta

        +
        public java.lang.Object nextMeta()
        +
        Returns the next XML meta token. This is used for skipping over + and structures.
        +
        Returns:
        Syntax characters (< > / = ! ?) are returned as + Character, and strings and names are returned as Boolean. We don't care + what the values actually are.
        +
        Throws:
        +
        JSONException - If a string is not properly closed or if the XML + is badly structured.
        +
      • +
      + + + +
        +
      • +

        nextToken

        +
        public java.lang.Object nextToken()
        +
        Get the next XML Token. These tokens are found inside of angle + brackets. It may be one of these characters: / > = ! ? or it + may be a string wrapped in single quotes or double quotes, or it may be a + name.
        +
        Returns:
        a String or a Character.
        +
        Throws:
        +
        JSONException - If the XML is not well formed.
        +
      • +
      + + + +
        +
      • +

        skipPast

        +
        public boolean skipPast(java.lang.String to)
        +
        Skip characters until past the requested string. + If it is not found, we are left at the end of the source with a result of false.
        +
        Parameters:
        to - A string to skip past.
        +
        Throws:
        +
        JSONException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/package-frame.html b/distribution/json4processing-0.1.6/reference/org/json/package-frame.html new file mode 100644 index 000000000..82b0dcfba --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/package-frame.html @@ -0,0 +1,44 @@ + + + + + +org.json (Javadocs: json4processing) + + + + +

org.json

+ + + diff --git a/distribution/json4processing-0.1.6/reference/org/json/package-summary.html b/distribution/json4processing-0.1.6/reference/org/json/package-summary.html new file mode 100644 index 000000000..e103fe48e --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/package-summary.html @@ -0,0 +1,270 @@ + + + + + +org.json (Javadocs: json4processing) + + + + + + + + + + +
+

Package org.json

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    JSONString +
    The JSONString interface allows a toJSONString() + method so that a class can change the behavior of + JSONObject.toString(), JSONArray.toString(), + and JSONWriter.value(Object).
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    CDL +
    This provides static methods to convert comma delimited text into a + JSONArray, and to covert a JSONArray into comma delimited text.
    +
    Cookie +
    Convert a web browser cookie specification to a JSONObject and back.
    +
    CookieList +
    Convert a web browser cookie list string to a JSONObject and back.
    +
    HTTP +
    Convert an HTTP header to a JSONObject and back.
    +
    HTTPTokener +
    The HTTPTokener extends the JSONTokener to provide additional methods + for the parsing of HTTP headers.
    +
    JSON +
    This is a "mashup" test for combining the two JSON types, the goal is to make + it work similarly to how the processing XML library works.
    +
    JSONArr +
    A JSONArray is an ordered sequence of values.
    +
    JSONML +
    This provides static methods to convert an XML text into a JSONArray or + JSONObject, and to covert a JSONArray or JSONObject into an XML text using + the JsonML transform.
    +
    JSONObj +
    A JSONObject is an unordered collection of name/value pairs.
    +
    JSONStringer +
    JSONStringer provides a quick and convenient way of producing JSON text.
    +
    JSONTokener +
    A JSONTokener takes a source string and extracts characters and tokens from + it.
    +
    JSONWriter +
    JSONWriter provides a quick and convenient way of producing JSON text.
    +
    XML +
    This provides static methods to convert an XML text into a JSONObject, + and to covert a JSONObject into an XML text.
    +
    XMLTokener +
    The XMLTokener extends the JSONTokener to provide additional methods + for the parsing of XML texts.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Enum Summary 
    EnumDescription
    JSON.JSONType 
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    JSONException +
    The JSONException is thrown by the JSON.org classes when things are amiss.
    +
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/org/json/package-tree.html b/distribution/json4processing-0.1.6/reference/org/json/package-tree.html new file mode 100644 index 000000000..dba9e182e --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/org/json/package-tree.html @@ -0,0 +1,165 @@ + + + + + +org.json Class Hierarchy (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.json

+
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) + +
    • +
    +
  • +
+
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/overview-tree.html b/distribution/json4processing-0.1.6/reference/overview-tree.html new file mode 100644 index 000000000..3891e8b77 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/overview-tree.html @@ -0,0 +1,169 @@ + + + + + +Class Hierarchy (Javadocs: json4processing) + + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) + +
    • +
    +
  • +
+
+ +
+ + + + + +
+ + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/package-list b/distribution/json4processing-0.1.6/reference/package-list new file mode 100644 index 000000000..6374a8ef9 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/package-list @@ -0,0 +1 @@ +org.json diff --git a/distribution/json4processing-0.1.6/reference/resources/background.gif b/distribution/json4processing-0.1.6/reference/resources/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..f471940fde2f39ef8943a6af9569bcf986b1579b GIT binary patch literal 2313 zcmV+k3HJ6!Nk%w1VKM-40OkMy00030|NlK(aXwsfKV5S}VtGJbbVOr%L0@%CZH88Q zl{{NzcR^uxNo<2iYk@pjY)*5FJz8x~bc{)B zfk z+1T6M-s9WdW8dcJ-wO*3@9+W*5AY543-j^$^!EPz_4eHZ2#>)41`h@dc!2OAgN6$a zCS2I?;lqgx6IR4nkpTe;1RN0f=zxMq2O=q`94V5d$&e>Unta)^<;;^G3>e7yp=ZvW z6DIW3xpSvaogXF?_4%`@(V;s}NR^5J!3hrtJV@1QRV&r5S*L!zYE|rss${iFkg&!? zTN5V#)~=bmMorwgZsEpdOE)iExo+FO-8;8Kga{=HbSQCnF=E6W3?o*|ID%uwi5**> zJXy127Y9m+=HQ|PhXWi+xNwoWv}n_%Pq%(e+H~mGqhq5kv4Mo|-n~g|7!F*xZ{xv< zCpXS~dGg^IGK?4@J-T%b(XnUHFul6n<@2&4)zzyO2) z3Q8`i0+UKY*`$}e9mmp;tg*))`|PsK1|hAo%u0K$vDwm4gaSkm0j{`26k#qAKmbuhxZ#cquDR>B zD{s8+&TH-uNg$C#68QG}1HMBHfrP&L@@w$F_!itRzXdCN@V|LDAu%3!IDtq1#1UV7 z#1RxvT=B(DWbCoU5l=ia$Pp`Hgb_?Mp@hmtxZDI2N-)v#$}PXVvdm1d>@v(v`0TUJ zF)Pu89(q`zv=w^nVTIF3@3BYIPA}c`(@ZCAwbNBEt@PDUKe5CTR8aB66IE1!w%Amt zy+jpcn~k>GZpVFg+H6x{_uOksvBlq0OyT$6TyQZ37k(cOxZr|JEx1sGm<(M9gH z-~PMqyn|tT=))UN`|-FFFUA#KToK0fUOaz=7}Z~KeHhVC&%O27cTfHQ^WBU8z4p&T zp#>D|V}XShTD;Hx745Iz{`>K-Z$A|7!*Boo{mY;G21vjH8t{M!OrQc6$iN0V@PQDF zpadsK!3tXNf*8!81~qnXWuHZ)kytd=_y+ADWvw31ouV;CdZ#ya*(l7-A-C-Y^+iit8O zBy3*`Ls$|5Hn4m_^I^|C7{m7EFn|5vTk;|oywIgCc9Bb*=L+Y$)M>9GC<|HGs@6NB zHLY%03!dDf=eDRt2O6lVSFRcsuWZEwU?=z$CZ0W?#VJfdN>HG(l%oKpyiftJc|Y)xkjSJYCrQal-0PC~()T9xwF!Jf zVi1UA#3BBbh(i8r5&v#Pz!cF41KjbCc?4u2@@Q~oKLirt2TM30;y6b+zyX2`Yl9u; z`0$3;v0-YUp&7NdPT#q`cZlbij$jvbRk6R>8g*>}*b9E+WDwmpHAAxYzyT aU_pX{M6b8i>#Dq3onfZy}_nli%!Q$ZV%e&!tN2 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 YpWXKgmku8Vj|K)Vje`mzEKCg608Q#dYybcN literal 0 HcmV?d00001 diff --git a/distribution/json4processing-0.1.6/reference/serialized-form.html b/distribution/json4processing-0.1.6/reference/serialized-form.html new file mode 100644 index 000000000..204b28b93 --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/serialized-form.html @@ -0,0 +1,142 @@ + + + + + +Serialized Form (Javadocs: json4processing) + + + + + + + + + + +
+

Serialized Form

+
+
+
    +
  • +

    Package org.json

    +
      +
    • + + +

      Class org.json.JSONException extends java.lang.Exception implements Serializable

      +
      +
      serialVersionUID:
      +
      0L
      +
      +
        +
      • + + +

        Serialized Fields

        +
          +
        • +

          cause

          +
          java.lang.Throwable cause
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+ + + + +

processing library json4processing by Andreas Goransson. (c) 2011

+ + diff --git a/distribution/json4processing-0.1.6/reference/stylesheet.css b/distribution/json4processing-0.1.6/reference/stylesheet.css new file mode 100644 index 000000000..54998c2bc --- /dev/null +++ b/distribution/json4processing-0.1.6/reference/stylesheet.css @@ -0,0 +1,310 @@ +/* Javadoc style sheet */ +/* Define colors, fonts and other style attributes here to override the defaults */ +/* processingLibs style by andreas schlegel, sojamo */ + + +body { + margin : 0; + padding : 0; + padding-left : 10px; + padding-right : 8px; + background-color : #FFFFFF; + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.7em; + font-weight : normal; + line-height : normal; + margin-bottom:30px; +} + + + + +/* Headings */ +h1, h2, h3, h4, h5, th { + font-family :Arial, Helvetica, sans-serif; + font-size:1.2em; +} + + +p { + font-size : 1em; + width:80%; +} + +pre, code { + font-family : "Courier New", Courier, monospace; + font-size : 12px; + line-height : normal; +} + + + +table { + border:0; + margin-bottom:10px; + margin-top:10px; +} + + +tr, td { + border-top: 0px solid; + border-left: 0px solid; + padding-top:8px; + padding-bottom:8px; +} + + + +hr { + border:0; + height:1px; + padding:0; + margin:0; + margin-bottom:4px; + +} + + + +dd, th, td, font { + font-size:1.0em; + line-height:1.0em; +} + + + +dt { + margin-bottom:0px; +} + + + +dd { + margin-top:2px; + margin-bottom:4px; +} + + + +a { + text-decoration: underline; + font-weight: normal; +} + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + +img { + border: 0px solid #000000; +} + + + +/* Navigation bar fonts */ +.NavBarCell1 { + border:0; +} + +.NavBarCell1Rev { + border:0; +} + +.NavBarFont1 { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + + +.NavBarFont1 b { + font-weight:normal; +} + + + +.NavBarFont1:after, .NavBarFont1Rev:after { + font-weight:normal; + content: " \\"; +} + + +.NavBarFont1Rev { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; +} + +.NavBarFont1Rev b { + font-family: Arial, Helvetica, sans-serif; + font-size:1.1em; + font-weight:normal; +} + +.NavBarCell2 { + font-family: Arial, Helvetica, sans-serif; +} + +.NavBarCell3 { + font-family: Arial, Helvetica, sans-serif; +} + + + +font.FrameItemFont { + font-family: Helvetica, Arial, sans-serif; + font-size:1.1em; + line-height:1.1em; +} + +font.FrameHeadingFont { + font-family: Helvetica, Arial, sans-serif; + line-height:32px; +} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { + font-family: Helvetica, Arial, sans-serif +} + + +.toggleList { + padding:0; + margin:0; + margin-top:12px; +} + +.toggleList dt { + font-weight:bold; + font-size:12px; + font-family:arial,sans-serif; + padding:0px; + margin:10px 0px 10px 0px; +} + +.toggleList dt span { + font-family: monospace; + padding:0; + margin:0; +} + + +.toggleList dd { + margin:0; + padding:0; +} + +html.isjs .toggleList dd { + display: none; +} + +.toggleList pre { + padding: 4px 4px 4px 4px; +} + + + + + +/* COLORS */ + +pre, code { + color: #000000; +} + + +body { + color : #333333; + background-color :#FFFFFF; +} + + +h1, h2, h3, h4, h5, h6 { + color:#555; +} + +a, +.toggleList dt { + color: #1a7eb0; +} + +a:hover, +a:active { + color: #1a7eb0; +} + +a:visited, +a:link:visited { + color: #1a7eb0; +} + +td,tr { + border-color: #999999; +} + +hr { + color:#999999; + background:#999999; +} + + +.TableHeadingColor { + background: #dcdcdc; + color: #555; +} + + +.TableSubHeadingColor { + background: #EEEEFF +} + +.TableRowColor { + background: #FFFFFF +} + + +.NavBarCell1 { + background-color:#dcdcdc; + color:#000; +} + +.NavBarCell1 a { + color:#333; +} + + +.NavBarCell1Rev { + background-color:transparent; +} + +.NavBarFont1 { + color:#333; +} + + +.NavBarFont1Rev { + color:#fff; +} + +.NavBarCell2 { + background-color:#999; +} + +.NavBarCell2 a { + color:#fff; +} + + + +.NavBarCell3 { + background-color:#dcdcdc; +} + diff --git a/distribution/json4processing-0.1.6/stylesheet.css b/distribution/json4processing-0.1.6/stylesheet.css new file mode 100644 index 000000000..4348b3814 --- /dev/null +++ b/distribution/json4processing-0.1.6/stylesheet.css @@ -0,0 +1,203 @@ +/* processingLibs style by andreas schlegel, sojamo. */ + + +* { + margin:0; + padding:0; + border:0; +} + + +body { + font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size : 100%; + font-size : 0.70em; + font-weight : normal; + line-height : normal; +} + + + +#container { + margin-left:64px; + background-color:#fff; +} + +#header { + float:left; + padding-top:24px; + padding-bottom:48px; +} + +#menu { + margin-top:16px; + float:left; + margin-bottom:64px; +} + + +#about, +#download, +#examples, +#demos, +#misc { + width:480px; + float:left; + margin-right:24px; +} + + +#resources, #info { + width:320px; + float:left; +} + + +.clear { + clear:both; +} + +#footer { + margin-top:300px; + height:20px; + margin-bottom:32px; +} + + +ul { + list-style:none; + padding:0; + margin:0; +} + + +#menu ul li, #subMenu ul li { + float:left; + padding-right:6px; +} + + + + + + +/* Headings */ + +h1 { + font-size:2em; + font-weight:normal; +} + + +h2, h3, h4, h5, th { + font-size:1.3em; + font-weight:normal; + margin-bottom:4px; +} + + + +p { + font-size:1em; + width:90%; + margin-bottom:32px; +} + + +pre, code { + font-family:"Courier New", Courier, monospace; + font-size:1em; + line-height:normal; +} + + + + +hr { + border:0; + height:1px; + margin-bottom:24px; +} + + +a { + text-decoration: underline; + font-weight: normal; +} + + +a:hover, +a:active { + text-decoration: underline; + font-weight: normal; +} + + +a:visited, +a:link:visited { + text-decoration: underline; + font-weight: normal; +} + + + +img { + border: 0px solid #000000; +} + + + + + +/* COLORS */ + + +body { + color : #333; + background-color :#fff; +} + + +#header { + background-color:#fff; + color:#333; +} + + + +h1, h2, h3, h4, h5, h6 { + color:#666; +} + + +pre, code { + color: #000000; +} + + +a,strong { + color: #333; +} + + +a:hover, +a:active { + color: #333; +} + + +a:visited, +a:link:visited { + color: #333; +} + + +#footer, #menu { + background-color:#fff; + color:#333; +} + + +#footer a, #menu a { + color:#333; +} diff --git a/resources/build.properties b/resources/build.properties index 4d570496d..e28e36acf 100644 --- a/resources/build.properties +++ b/resources/build.properties @@ -1,124 +1,124 @@ -# Create libraries for the open source programming language -# and environment processing (http://www.processing.org) -# -# Customize the build properties to make the ant-build-process -# work for your environment. How? Please read the comments below. -# -# The default properties are set for OSX, for Windows-settings -# please refer to comments made under (1) and (2). - - - -# (1) -# Where is your processing sketchbook located? -# If you are not sure, check the sketchbook location in your -# processing application preferences. -# ${user.home} points the compiler to your home directory -# For windows the default path to your sketchbook would be -# ${user.home}/My Documents/Processing (make adjustments below). - -#sketchbook.location=/media/Contents/sketchbook -sketchbook.location=${user.home}/Documents/Processing - - - -# (2) -# Where are the jar files located that are required for compiling -# your library such as e.g. core.jar? -# by default the local classpath location points to folder libs -# inside eclipse's workspace (by default found in your home directory). -# For Windows the default path would be ${user.home}/workspace/libs -# (make adjustments below) - -#classpath.local.location=/media/Contents/workspace_projects/libs -classpath.local.location=${user.home}/workspace/libs - - - -# For OSX users. -# The following path will direct you into processing's -# application source code folder in case you put processing inside your -# Applications folder. Uncommenting the line below will overwrite the -# classpath.local.location from above. - -# classpath.local.location=/Applications/Processing.app/Contents/Resources/Java/ - - -# Add all jar files that are required for compiling your project -# to the local and project classpath, use a comma as delimiter. -# These jar files must be inside your classpath.local.location folder. - -classpath.local.include=core.jar - - -# Add processing's libraries folder to the classpath. -# If you don't need to include the libraries folder to your classpath, -# comment out the following line. - -classpath.libraries.location=${sketchbook.location}/libraries - - - -# (3) set the java version that should be used to compile your library. - -java.target.version=1.6 - - -# set the description of the ant build.xml file - -ant.description=processingLibs. ant build file. - - - -# (4) -# project details. -# Give your library a name. - -project.name=json4processing - - -# use normal or fast as value for project.compile -# (fast will only compile the project into your sketchbook, -# using normal as property will compile the distribution including the -# javadoc-reference and all web-files - the compile process here -# takes longer) - -project.compile=normal - -# all files compiled with project.compile=normal are stored -# in folder distribution - - - -# (5) -# the following items are properties that will be used to -# make changes to the html document template. values of properties -# will be implemented ito the document automatically. - -# set the current version of your project. - -project.version=0.1.5 -project.copyright=(c) 2011 -project.dependencies=? -project.keywords=? - -author.name=Andreas Goransson -author.url= - -tested.platform=linux, windows -tested.processingversion=1.5.1 - -# recommendations for storing your source code online are: code.google or github. - -source.host=github -source.url=https://github.com/agoransson/JSON-processing -source.repository=https://github.com/agoransson/JSON-processing - - -# include javadoc references into your project's javadoc - -javadoc.java.href= -#http://java.sun.com/javase/6/docs/api/ -javadoc.processing.href= -#http://dev.processing.org/reference/everything/javadoc/ - +# Create libraries for the open source programming language +# and environment processing (http://www.processing.org) +# +# Customize the build properties to make the ant-build-process +# work for your environment. How? Please read the comments below. +# +# The default properties are set for OSX, for Windows-settings +# please refer to comments made under (1) and (2). + + + +# (1) +# Where is your processing sketchbook located? +# If you are not sure, check the sketchbook location in your +# processing application preferences. +# ${user.home} points the compiler to your home directory +# For windows the default path to your sketchbook would be +# ${user.home}/My Documents/Processing (make adjustments below). + +#sketchbook.location=/media/Contents/sketchbook +sketchbook.location=${user.home}/Documents/Processing + + + +# (2) +# Where are the jar files located that are required for compiling +# your library such as e.g. core.jar? +# by default the local classpath location points to folder libs +# inside eclipse's workspace (by default found in your home directory). +# For Windows the default path would be ${user.home}/workspace/libs +# (make adjustments below) + +#classpath.local.location=/media/Contents/workspace_projects/libs +classpath.local.location=${user.home}/workspace/libs + + + +# For OSX users. +# The following path will direct you into processing's +# application source code folder in case you put processing inside your +# Applications folder. Uncommenting the line below will overwrite the +# classpath.local.location from above. + +# classpath.local.location=/Applications/Processing.app/Contents/Resources/Java/ + + +# Add all jar files that are required for compiling your project +# to the local and project classpath, use a comma as delimiter. +# These jar files must be inside your classpath.local.location folder. + +classpath.local.include=core.jar + + +# Add processing's libraries folder to the classpath. +# If you don't need to include the libraries folder to your classpath, +# comment out the following line. + +classpath.libraries.location=${sketchbook.location}/libraries + + + +# (3) set the java version that should be used to compile your library. + +java.target.version=1.6 + + +# set the description of the ant build.xml file + +ant.description=processingLibs. ant build file. + + + +# (4) +# project details. +# Give your library a name. + +project.name=json4processing + + +# use normal or fast as value for project.compile +# (fast will only compile the project into your sketchbook, +# using normal as property will compile the distribution including the +# javadoc-reference and all web-files - the compile process here +# takes longer) + +project.compile=normal + +# all files compiled with project.compile=normal are stored +# in folder distribution + + + +# (5) +# the following items are properties that will be used to +# make changes to the html document template. values of properties +# will be implemented ito the document automatically. + +# set the current version of your project. + +project.version=0.1.6 +project.copyright=(c) 2011 +project.dependencies=? +project.keywords=? + +author.name=Andreas Goransson +author.url= + +tested.platform=linux, windows +tested.processingversion=1.5.1 + +# recommendations for storing your source code online are: code.google or github. + +source.host=github +source.url=https://github.com/agoransson/JSON-processing +source.repository=https://github.com/agoransson/JSON-processing + + +# include javadoc references into your project's javadoc + +javadoc.java.href= +#http://java.sun.com/javase/6/docs/api/ +javadoc.processing.href= +#http://dev.processing.org/reference/everything/javadoc/ + diff --git a/src/org/json/CDL.java b/src/org/json/CDL.java index ffe2ace8b..4d82f25c0 100644 --- a/src/org/json/CDL.java +++ b/src/org/json/CDL.java @@ -72,7 +72,7 @@ private static String getValue(JSONTokener x) throws JSONException { break; } if (c == 0 || c == '\n' || c == '\r') { - throw x.syntaxError("Missing close quote '" + q + "'."); +// throw x.syntaxError("Missing close quote '" + q + "'."); } sb.append(c); } @@ -92,8 +92,8 @@ private static String getValue(JSONTokener x) throws JSONException { * @return A JSONArray of strings. * @throws JSONException */ - public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException { - JSONArray ja = new JSONArray(); + public static JSONArr rowToJSONArray(JSONTokener x) throws JSONException { + JSONArr ja = new JSONArr(); for (;;) { String value = getValue(x); char c = x.next(); @@ -110,8 +110,8 @@ public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException { if (c == '\n' || c == '\r' || c == 0) { return ja; } - throw x.syntaxError("Bad character '" + c + "' (" + - (int)c + ")."); +// throw x.syntaxError("Bad character '" + c + "' (" + +// (int)c + ")."); } c = x.next(); } @@ -128,9 +128,9 @@ public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException { * @return A JSONObject combining the names and values. * @throws JSONException */ - public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x) + public static JSONObj rowToJSONObject(JSONArr names, JSONTokener x) throws JSONException { - JSONArray ja = rowToJSONArray(x); + JSONArr ja = rowToJSONArray(x); return ja != null ? ja.toJSONObject(names) : null; } @@ -141,7 +141,7 @@ public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x) * @param ja A JSONArray of strings. * @return A string ending in NEWLINE. */ - public static String rowToString(JSONArray ja) { + public static String rowToString(JSONArr ja) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < ja.length(); i += 1) { if (i > 0) { @@ -178,7 +178,7 @@ public static String rowToString(JSONArray ja) { * @return A JSONArray of JSONObjects. * @throws JSONException */ - public static JSONArray toJSONArray(String string) throws JSONException { + public static JSONArr toJSONArray(String string) throws JSONException { return toJSONArray(new JSONTokener(string)); } @@ -189,7 +189,7 @@ public static JSONArray toJSONArray(String string) throws JSONException { * @return A JSONArray of JSONObjects. * @throws JSONException */ - public static JSONArray toJSONArray(JSONTokener x) throws JSONException { + public static JSONArr toJSONArray(JSONTokener x) throws JSONException { return toJSONArray(rowToJSONArray(x), x); } @@ -201,7 +201,7 @@ public static JSONArray toJSONArray(JSONTokener x) throws JSONException { * @return A JSONArray of JSONObjects. * @throws JSONException */ - public static JSONArray toJSONArray(JSONArray names, String string) + public static JSONArr toJSONArray(JSONArr names, String string) throws JSONException { return toJSONArray(names, new JSONTokener(string)); } @@ -214,14 +214,14 @@ public static JSONArray toJSONArray(JSONArray names, String string) * @return A JSONArray of JSONObjects. * @throws JSONException */ - public static JSONArray toJSONArray(JSONArray names, JSONTokener x) + public static JSONArr toJSONArray(JSONArr names, JSONTokener x) throws JSONException { if (names == null || names.length() == 0) { return null; } - JSONArray ja = new JSONArray(); + JSONArr ja = new JSONArr(); for (;;) { - JSONObject jo = rowToJSONObject(names, x); + JSONObj jo = rowToJSONObject(names, x); if (jo == null) { break; } @@ -242,10 +242,10 @@ public static JSONArray toJSONArray(JSONArray names, JSONTokener x) * @return A comma delimited text. * @throws JSONException */ - public static String toString(JSONArray ja) throws JSONException { - JSONObject jo = ja.optJSONObject(0); + public static String toString(JSONArr ja) throws JSONException { + JSONObj jo = ja.optJSONObject(0); if (jo != null) { - JSONArray names = jo.names(); + JSONArr names = jo.names(); if (names != null) { return rowToString(names) + toString(names, ja); } @@ -262,14 +262,14 @@ public static String toString(JSONArray ja) throws JSONException { * @return A comma delimited text. * @throws JSONException */ - public static String toString(JSONArray names, JSONArray ja) + public static String toString(JSONArr names, JSONArr ja) throws JSONException { if (names == null || names.length() == 0) { return null; } StringBuffer sb = new StringBuffer(); for (int i = 0; i < ja.length(); i += 1) { - JSONObject jo = ja.optJSONObject(i); + JSONObj jo = ja.optJSONObject(i); if (jo != null) { sb.append(rowToString(jo.toJSONArray(names))); } diff --git a/src/org/json/Cookie.java b/src/org/json/Cookie.java index a2d9c4ed9..0222ef740 100644 --- a/src/org/json/Cookie.java +++ b/src/org/json/Cookie.java @@ -78,10 +78,10 @@ public static String escape(String string) { * members. * @throws JSONException */ - public static JSONObject toJSONObject(String string) throws JSONException { + public static JSONObj toJSONObject(String string) throws JSONException { String name; - JSONObject jo = new JSONObject(); - Object value; + JSONObj jo = new JSONObj(); + Object value = null; JSONTokener x = new JSONTokener(string); jo.put("name", x.nextTo('=')); x.next('='); @@ -93,7 +93,7 @@ public static JSONObject toJSONObject(String string) throws JSONException { if (name.equals("secure")) { value = Boolean.TRUE; } else { - throw x.syntaxError("Missing '=' in cookie parameter."); +// throw x.syntaxError("Missing '=' in cookie parameter."); } } else { value = unescape(x.nextTo(';')); @@ -115,7 +115,7 @@ public static JSONObject toJSONObject(String string) throws JSONException { * @return A cookie specification string * @throws JSONException */ - public static String toString(JSONObject jo) throws JSONException { + public static String toString(JSONObj jo) throws JSONException { StringBuffer sb = new StringBuffer(); sb.append(escape(jo.getString("name"))); diff --git a/src/org/json/CookieList.java b/src/org/json/CookieList.java index 1111135f3..70c14cd48 100644 --- a/src/org/json/CookieList.java +++ b/src/org/json/CookieList.java @@ -46,8 +46,8 @@ public class CookieList { * @return A JSONObject * @throws JSONException */ - public static JSONObject toJSONObject(String string) throws JSONException { - JSONObject jo = new JSONObject(); + public static JSONObj toJSONObject(String string) throws JSONException { + JSONObj jo = new JSONObj(); JSONTokener x = new JSONTokener(string); while (x.more()) { String name = Cookie.unescape(x.nextTo('=')); @@ -68,7 +68,7 @@ public static JSONObject toJSONObject(String string) throws JSONException { * @return A cookie list string * @throws JSONException */ - public static String toString(JSONObject jo) throws JSONException { + public static String toString(JSONObj jo) throws JSONException { boolean b = false; Iterator keys = jo.keys(); String string; diff --git a/src/org/json/HTTP.java b/src/org/json/HTTP.java index e01675bc5..5db4e896a 100644 --- a/src/org/json/HTTP.java +++ b/src/org/json/HTTP.java @@ -68,8 +68,8 @@ public class HTTP { * of the XML string. * @throws JSONException */ - public static JSONObject toJSONObject(String string) /*throws JSONException*/ { - JSONObject jo = new JSONObject(); + public static JSONObj toJSONObject(String string) /*throws JSONException*/ { + JSONObj jo = new JSONObj(); HTTPTokener x = new HTTPTokener(string); String token = null; @@ -131,7 +131,7 @@ public static JSONObject toJSONObject(String string) /*throws JSONException*/ { * @throws JSONException if the object does not contain enough * information. */ - public static String toString(JSONObject jo) /*throws JSONException*/ { + public static String toString(JSONObj jo) /*throws JSONException*/ { Iterator keys = jo.keys(); String string; StringBuffer sb = new StringBuffer(); diff --git a/src/org/json/HTTPTokener.java b/src/org/json/HTTPTokener.java index 86fed61d7..8f6703520 100644 --- a/src/org/json/HTTPTokener.java +++ b/src/org/json/HTTPTokener.java @@ -58,7 +58,7 @@ public String nextToken() throws JSONException { for (;;) { c = next(); if (c < ' ') { - throw syntaxError("Unterminated string."); +// throw syntaxError("Unterminated string."); } if (c == q) { return sb.toString(); diff --git a/src/org/json/JSON.java b/src/org/json/JSON.java new file mode 100644 index 000000000..a9e93f707 --- /dev/null +++ b/src/org/json/JSON.java @@ -0,0 +1,3298 @@ +package org.json; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.io.Writer; +import java.lang.reflect.Array; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * This is a "mashup" test for combining the two JSON types, the goal is to make + * it work similarly to how the processing XML library works. + * + * loadJSON(); should be able of returning both types of objects, and to do that + * without having the typecast you need to combine the two classes somehow. + * + * The way you use this is calling JSON.loadJSON("filename"); (or similar) and + * then the class will maintain the type of object it is (either array or + * object) and simply forward the requests the user does to the correct class... + * of course making sure that the type is of correct class! You shouldn't be + * able of calling ".get(index)" on an JSONObject for example... it should then + * notify the user by a simple text message to the console. + * + * @author ksango + * + */ +public class JSON { + /* + * Defines the type of object + */ + public enum JSONType { + OBJECT, ARRAY, NULL + }; + + protected JSONType type; + + private static JSONObject obj; + private static JSONArray arr; + + protected JSON(){ + // Empty, used for inner classes + } + + /** + * Constructor for JSONTokeners. + * + * @param tokener + */ + public JSON(JSONTokener tokener) { + + } + + /** + * Open a json file + * + * @param json + * + * @return + */ + public static JSON parse(String filename) { + InputStream input = null; + try { + input = new FileInputStream(filename); + } catch (FileNotFoundException e1) { + throw new RuntimeException("Failed to find file " + filename); + } + + JSONTokener tokener = new JSONTokener(input); + + if (tokener.nextClean() == '{') { + tokener.back(); + try { + obj = new JSONObject(tokener); + obj.type = JSONType.OBJECT; + return obj; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Failed to create JSONObject"); + } + } + tokener.back(); + + if (tokener.nextClean() == '[') { + tokener.back(); + try { + arr = new JSONArray(tokener); + arr.type = JSONType.ARRAY; + return arr; + } catch (Exception e) { + throw new RuntimeException("Failed to create JSONArray"); + } + }else{ + throw new RuntimeException("File is neither a JSONObject or a JSONArray"); + } + } + + // JSONObject and JSONArray classes below + + + // JSONObject methods + + //String, Int, Long, Float, Double, Boolean, JSONArray, JSONObject + + public String getString(String key) { + if( type != JSONType.OBJECT ){ + throw new RuntimeException("Not a JSONObject"); + }else{ + return obj.getInnerString(key); + } + } + + public int getInt(String key) { + if( type != JSONType.OBJECT ){ + throw new RuntimeException("Not a JSONObject"); + }else{ + return obj.getInnerInt(key); + } + } + + public float getFloat(String key) { + if( type != JSONType.OBJECT ){ + throw new RuntimeException("Not a JSONObject"); + }else{ + return obj.getInnerFloat(key); + } + } + + public double getDouble(String key) { + if( type != JSONType.OBJECT ){ + throw new RuntimeException("Not a JSONObject"); + }else{ + return obj.getInnerDouble(key); + } + } + + public boolean getBoolean(String key) { + if( type != JSONType.OBJECT ){ + throw new RuntimeException("Not a JSONObject"); + }else{ + return obj.getInnerBoolean(key); + } + } + + public JSONObject getJSONObject(String key) { + if( type != JSONType.OBJECT ){ + throw new RuntimeException("Not a JSONObject"); + }else{ + return obj.getInnerJSONObject(key); + } + } + + public JSONArray getJSONArray(String key) { + if( type != JSONType.OBJECT ){ + throw new RuntimeException("Not a JSONObject"); + }else{ + return obj.getInnerJSONArray(key); + } + } + + //JSONArray methods + public String getString(int index){ + if( type != JSONType.ARRAY ){ + throw new RuntimeException("Not a JSONArray"); + }else{ + return arr.getInnerString(index); + } + } + + public int getInt(int index){ + if( type != JSONType.ARRAY ){ + throw new RuntimeException("Not a JSONArray"); + }else{ + return arr.getInnerInt(index); + } + } + + public float getFloat(int index){ + if( type != JSONType.ARRAY ){ + throw new RuntimeException("Not a JSONArray"); + }else{ + return arr.getInnerFloat(index); + } + } + + public double getDouble(int index){ + if( type != JSONType.ARRAY ){ + throw new RuntimeException("Not a JSONArray"); + }else{ + return arr.getInnerDouble(index); + } + } + + public boolean getBoolean(int index){ + if( type != JSONType.ARRAY ){ + throw new RuntimeException("Not a JSONArray"); + }else{ + return arr.getInnerBoolean(index); + } + } + + public JSONArray getArray(int index){ + if( type != JSONType.ARRAY ){ + throw new RuntimeException("Not a JSONArray"); + }else{ + return arr.getInnerArray(index); + } + } + + public JSONObject getObject(int index){ + if( type != JSONType.ARRAY ){ + throw new RuntimeException("Not a JSONArray"); + }else{ + return arr.getInnerObject(index); + } + } + + /** + * JSONObject.NULL is equivalent to the value that JavaScript calls null, + * whilst Java's null is equivalent to the value that JavaScript calls + * undefined. + */ + private static final class Null extends JSON { + + /** + * There is only intended to be a single instance of the NULL object, so + * the clone method returns itself. + * + * @return NULL. + */ + @Override + protected final Object clone() { + return this; + } + + /** + * A Null object is equal to the null value and to itself. + * + * @param object + * An object to test for nullness. + * @return true if the object parameter is the JSONObject.NULL object or + * null. + */ + @Override + public boolean equals(Object object) { + return object == null || object == this; + } + + /** + * Get the "null" string value. + * + * @return The string "null". + */ + @Override + public String toString() { + return "null"; + } + + @Override + public int hashCode() { + // TODO Auto-generated method stub + return super.hashCode(); + } + } + + /** + * It is sometimes more convenient and less ambiguous to have a + * NULL object than to use Java's null value. + * JSONObject.NULL.equals(null) returns true. + * JSONObject.NULL.toString() returns "null". + */ + public static final Object NULL = new Null(); + + /** + * A JSONObject is an unordered collection of name/value pairs. Its external + * form is a string wrapped in curly braces with colons between the names and + * values, and commas between the values and names. The internal form is an + * object having get and opt methods for accessing the + * values by name, and put methods for adding or replacing values + * by name. The values can be any of these types: Boolean, + * JSONArray, JSONObject, Number, + * String, or the JSONObject.NULL object. A JSONObject + * constructor can be used to convert an external form JSON text into an + * internal form whose values can be retrieved with the get and + * opt methods, or to convert values into a JSON text using the + * put and toString methods. A get method + * returns a value if one can be found, and throws an exception if one cannot be + * found. An opt method returns a default value instead of throwing + * an exception, and so is useful for obtaining optional values. + *

+ * The generic get() and opt() methods return an + * object, which you can cast or query for type. There are also typed + * get and opt methods that do type checking and type + * coercion for you. The opt methods differ from the get methods in that they do + * not throw. Instead, they return a specified value, such as null. + *

+ * The put methods add or replace values in an object. For example, + * + *

+	 * myString = new JSONObject().put("JSON", "Hello, World!").toString();
+	 * 
+ * + * produces the string {"JSON": "Hello, World"}. + *

+ * The texts produced by the toString methods strictly conform to + * the JSON syntax rules. The constructors are more forgiving in the texts they + * will accept: + *

    + *
  • An extra , (comma) may appear just + * before the closing brace.
  • + *
  • Strings may be quoted with ' (single + * quote).
  • + *
  • Strings do not need to be quoted at all if they do not begin with a quote + * or single quote, and if they do not contain leading or trailing spaces, and + * if they do not contain any of these characters: + * { } [ ] / \ : , = ; # and if they do not look like numbers and + * if they are not the reserved words true, false, or + * null.
  • + *
  • Keys can be followed by = or => as well as by + * :.
  • + *
  • Values can be followed by ; (semicolon) as + * well as by , (comma).
  • + *
+ * + * @author JSON.org + * @version 2012-12-01 + */ + static class JSONObject extends JSON { + /** + * The maximum number of keys in the key pool. + */ + private static final int keyPoolSize = 100; + + /** + * Key pooling is like string interning, but without permanently tying up + * memory. To help conserve memory, storage of duplicated key strings in + * JSONObjects will be avoided by using a key pool to manage unique key + * string objects. This is used by JSONObject.put(string, object). + */ + static HashMap keyPool = new HashMap(keyPoolSize); + + + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + +// /** +// * JSONObject.NULL is equivalent to the value that JavaScript calls null, +// * whilst Java's null is equivalent to the value that JavaScript calls +// * undefined. +// */ +// private static final class Null { +// +// /** +// * There is only intended to be a single instance of the NULL object, +// * so the clone method returns itself. +// * @return NULL. +// */ +// @Override +// protected final Object clone() { +// return this; +// } +// +// /** +// * A Null object is equal to the null value and to itself. +// * @param object An object to test for nullness. +// * @return true if the object parameter is the JSONObject.NULL object +// * or null. +// */ +// @Override +// public boolean equals(Object object) { +// return object == null || object == this; +// } +// +// /** +// * Get the "null" string value. +// * @return The string "null". +// */ +// @Override +// public String toString() { +// return "null"; +// } +// +// @Override +// public int hashCode() { +// // TODO Auto-generated method stub +// return super.hashCode(); +// } +// } + + + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + /** + * The map where the JSONObject's properties are kept. + */ + // private final Map map; + private final HashMap map; + + +// /** +// * It is sometimes more convenient and less ambiguous to have a +// * NULL object than to use Java's null value. +// * JSONObject.NULL.equals(null) returns true. +// * JSONObject.NULL.toString() returns "null". +// */ +// public static final Object NULL = new Null(); + + + /** + * Construct an empty JSONObject. + */ + public JSONObject() { + this.map = new HashMap(); + } + + + // /** + // * Construct a JSONObject from a subset of another JSONObject. + // * An array of strings is used to identify the keys that should be copied. + // * Missing keys are ignored. + // * @param jo A JSONObject. + // * @param names An array of strings. + // * @throws JSONException + // * @exception JSONException If a value is a non-finite number or if a name is duplicated. + // */ + // public JSONObject(JSONObject jo, String[] names) { +// this(); +// for (int i = 0; i < names.length; i += 1) { +// try { +// this.putOnce(names[i], jo.opt(names[i])); +// } catch (Exception ignore) { +// } +// } + // } + + + /** + * Construct a JSONObject from a JSONTokener. + * @param x A JSONTokener object containing the source string. + * @throws JSONException If there is a syntax error in the source string + * or a duplicated key. + */ + protected JSONObject(JSONTokener x) { + this(); + char c; + String key; + + if (x.nextClean() != '{') { + throw new RuntimeException("A JSONObject text must begin with '{'"); + } + for (;;) { + c = x.nextClean(); + switch (c) { + case 0: + throw new RuntimeException("A JSONObject text must end with '}'"); + case '}': + return; + default: + x.back(); + key = x.nextValue().toString(); + } + + // The key is followed by ':'. We will also tolerate '=' or '=>'. + + c = x.nextClean(); + if (c == '=') { + if (x.next() != '>') { + x.back(); + } + } else if (c != ':') { + throw new RuntimeException("Expected a ':' after a key"); + } + this.putOnce(key, x.nextValue()); + + // Pairs are separated by ','. We will also tolerate ';'. + + switch (x.nextClean()) { + case ';': + case ',': + if (x.nextClean() == '}') { + return; + } + x.back(); + break; + case '}': + return; + default: + throw new RuntimeException("Expected a ',' or '}'"); + } + } + } + + + /** + * Construct a JSONObject from a Map. + * + * @param map A map object that can be used to initialize the contents of + * the JSONObject. + * @throws JSONException + */ + protected JSONObject(HashMap map) { + this.map = new HashMap(); + if (map != null) { + Iterator i = map.entrySet().iterator(); + while (i.hasNext()) { + Map.Entry e = (Map.Entry) i.next(); + Object value = e.getValue(); + if (value != null) { + map.put((String) e.getKey(), wrap(value)); + } + } + } + } + + + /** + * Construct a JSONObject from an Object using bean getters. + * It reflects on all of the public methods of the object. + * For each of the methods with no parameters and a name starting + * with "get" or "is" followed by an uppercase letter, + * the method is invoked, and a key and the value returned from the getter method + * are put into the new JSONObject. + * + * The key is formed by removing the "get" or "is" prefix. + * If the second remaining character is not upper case, then the first + * character is converted to lower case. + * + * For example, if an object has a method named "getName", and + * if the result of calling object.getName() is "Larry Fine", + * then the JSONObject will contain "name": "Larry Fine". + * + * @param bean An object that has getter methods that should be used + * to make a JSONObject. + */ + protected JSONObject(Object bean) { + this(); + this.populateMap(bean); + } + + + // holding off on this method until we decide on how to handle reflection + // /** + // * Construct a JSONObject from an Object, using reflection to find the + // * public members. The resulting JSONObject's keys will be the strings + // * from the names array, and the values will be the field values associated + // * with those keys in the object. If a key is not found or not visible, + // * then it will not be copied into the new JSONObject. + // * @param object An object that has fields that should be used to make a + // * JSONObject. + // * @param names An array of strings, the names of the fields to be obtained + // * from the object. + // */ + // public JSONObject(Object object, String names[]) { +// this(); +// Class c = object.getClass(); +// for (int i = 0; i < names.length; i += 1) { +// String name = names[i]; +// try { +// this.putOpt(name, c.getField(name).get(object)); +// } catch (Exception ignore) { +// } +// } + // } + + + /** + * Construct a JSONObject from a source JSON text string. + * This is the most commonly used JSONObject constructor. + * @param source A string beginning + * with { (left brace) and ending + * with } (right brace). + * @exception JSONException If there is a syntax error in the source + * string or a duplicated key. + */ + static public JSONObject parse(String source) { + return new JSONObject(new JSONTokener(source)); + } + + + // /** + // * Construct a JSONObject from a ResourceBundle. + // * @param baseName The ResourceBundle base name. + // * @param locale The Locale to load the ResourceBundle for. + // * @throws JSONException If any JSONExceptions are detected. + // */ + // public JSON(String baseName, Locale locale) { +// this(); +// ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, +// Thread.currentThread().getContextClassLoader()); + // +// // Iterate through the keys in the bundle. + // +// Enumeration keys = bundle.getKeys(); +// while (keys.hasMoreElements()) { +// Object key = keys.nextElement(); +// if (key instanceof String) { + // +// // Go through the path, ensuring that there is a nested JSONObject for each +// // segment except the last. Add the value using the last segment's name into +// // the deepest nested JSONObject. + // +// String[] path = ((String)key).split("\\."); +// int last = path.length - 1; +// JSON target = this; +// for (int i = 0; i < last; i += 1) { +// String segment = path[i]; +// JSON nextTarget = target.optJSONObject(segment); +// if (nextTarget == null) { +// nextTarget = new JSON(); +// target.put(segment, nextTarget); +// } +// target = nextTarget; +// } +// target.put(path[last], bundle.getString((String)key)); +// } +// } + // } + + + // /** + // * Accumulate values under a key. It is similar to the put method except + // * that if there is already an object stored under the key then a + // * JSONArray is stored under the key to hold all of the accumulated values. + // * If there is already a JSONArray, then the new value is appended to it. + // * In contrast, the put method replaces the previous value. + // * + // * If only one value is accumulated that is not a JSONArray, then the + // * result will be the same as using put. But if multiple values are + // * accumulated, then the result will be like append. + // * @param key A key string. + // * @param value An object to be accumulated under the key. + // * @return this. + // * @throws JSONException If the value is an invalid number + // * or if the key is null. + // */ + // public JSONObject accumulate( +// String key, +// Object value +// ) throws JSONException { +// testValidity(value); +// Object object = this.opt(key); +// if (object == null) { +// this.put(key, value instanceof JSONArray +// ? new JSONArray().put(value) +// : value); +// } else if (object instanceof JSONArray) { +// ((JSONArray)object).put(value); +// } else { +// this.put(key, new JSONArray().put(object).put(value)); +// } +// return this; + // } + + + // /** + // * Append values to the array under a key. If the key does not exist in the + // * JSONObject, then the key is put in the JSONObject with its value being a + // * JSONArray containing the value parameter. If the key was already + // * associated with a JSONArray, then the value parameter is appended to it. + // * @param key A key string. + // * @param value An object to be accumulated under the key. + // * @return this. + // * @throws JSONException If the key is null or if the current value + // * associated with the key is not a JSONArray. + // */ + // public JSONObject append(String key, Object value) throws JSONException { +// testValidity(value); +// Object object = this.opt(key); +// if (object == null) { +// this.put(key, new JSONArray().put(value)); +// } else if (object instanceof JSONArray) { +// this.put(key, ((JSONArray)object).put(value)); +// } else { +// throw new JSONException("JSONObject[" + key + +// "] is not a JSONArray."); +// } +// return this; + // } + + + /** + * Produce a string from a double. The string "null" will be returned if + * the number is not finite. + * @param d A double. + * @return A String. + */ + static protected String doubleToString(double d) { + if (Double.isInfinite(d) || Double.isNaN(d)) { + return "null"; + } + + // Shave off trailing zeros and decimal point, if possible. + + String string = Double.toString(d); + if (string.indexOf('.') > 0 && string.indexOf('e') < 0 && + string.indexOf('E') < 0) { + while (string.endsWith("0")) { + string = string.substring(0, string.length() - 1); + } + if (string.endsWith(".")) { + string = string.substring(0, string.length() - 1); + } + } + return string; + } + + + /** + * Get the value object associated with a key. + * + * @param key A key string. + * @return The object associated with the key. + * @throws JSONException if the key is not found. + */ + private Object get(String key) { + if (key == null) { + throw new RuntimeException("Null key."); + } + Object object = this.opt(key); + if (object == null) { + throw new RuntimeException("JSONObject[" + quote(key) + "] not found."); + } + return object; + } + + + /** + * Get the string associated with a key. + * + * @param key A key string. + * @return A string which is the value. + * @throws JSONException if there is no string value for the key. + */ + public String getInnerString(String key) { + Object object = this.get(key); + if (object instanceof String) { + return (String)object; + } + throw new RuntimeException("JSONObject[" + quote(key) + "] not a string."); + } + + + /** + * Get the int value associated with a key. + * + * @param key A key string. + * @return The integer value. + * @throws JSONException if the key is not found or if the value cannot + * be converted to an integer. + */ + public int getInnerInt(String key) { + Object object = this.get(key); + try { + return object instanceof Number + ? ((Number)object).intValue() + : Integer.parseInt((String)object); + } catch (Exception e) { + throw new RuntimeException("JSONObject[" + quote(key) + "] is not an int."); + } + } + + + /** + * Get the long value associated with a key. + * + * @param key A key string. + * @return The long value. + * @throws JSONException if the key is not found or if the value cannot + * be converted to a long. + */ + public long getInnerLong(String key) { + Object object = this.get(key); + try { + return object instanceof Number + ? ((Number)object).longValue() + : Long.parseLong((String)object); + } catch (Exception e) { + throw new RuntimeException("JSONObject[" + quote(key) + "] is not a long.", e); + } + } + + + public float getInnerFloat(String key) { + return (float) getInnerDouble(key); + } + + + /** + * Get the double value associated with a key. + * @param key A key string. + * @return The numeric value. + * @throws JSONException if the key is not found or + * if the value is not a Number object and cannot be converted to a number. + */ + public double getInnerDouble(String key) { + Object object = this.get(key); + try { + return object instanceof Number + ? ((Number)object).doubleValue() + : Double.parseDouble((String)object); + } catch (Exception e) { + throw new RuntimeException("JSONObject[" + quote(key) + "] is not a number."); + } + } + + + /** + * Get the boolean value associated with a key. + * + * @param key A key string. + * @return The truth. + * @throws JSONException + * if the value is not a Boolean or the String "true" or "false". + */ + public boolean getInnerBoolean(String key) { + Object object = this.get(key); + if (object.equals(Boolean.FALSE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("false"))) { + return false; + } else if (object.equals(Boolean.TRUE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("true"))) { + return true; + } + throw new RuntimeException("JSONObject[" + quote(key) + "] is not a Boolean."); + } + + + /** + * Get the JSONArray value associated with a key. + * + * @param key A key string. + * @return A JSONArray which is the value. + * @throws JSONException if the key is not found or + * if the value is not a JSONArray. + */ + public JSONArray getInnerJSONArray(String key) { + Object object = this.get(key); + if (object instanceof JSONArray) { + return (JSONArray)object; + } + throw new RuntimeException("JSONObject[" + quote(key) + "] is not a JSONArray."); + } + + + /** + * Get the JSONObject value associated with a key. + * + * @param key A key string. + * @return A JSONObject which is the value. + * @throws JSONException if the key is not found or + * if the value is not a JSONObject. + */ + public JSONObject getInnerJSONObject(String key) { + Object object = this.get(key); + if (object instanceof JSONObject) { + return (JSONObject)object; + } + throw new RuntimeException("JSONObject[" + quote(key) + "] is not a JSONObject."); + } + + + // /** + // * Get an array of field names from a JSONObject. + // * + // * @return An array of field names, or null if there are no names. + // */ + // public static String[] getNames(JSONObject jo) { +// int length = jo.length(); +// if (length == 0) { +// return null; +// } +// Iterator iterator = jo.keys(); +// String[] names = new String[length]; +// int i = 0; +// while (iterator.hasNext()) { +// names[i] = (String)iterator.next(); +// i += 1; +// } +// return names; + // } + // + // + // /** + // * Get an array of field names from an Object. + // * + // * @return An array of field names, or null if there are no names. + // */ + // public static String[] getNames(Object object) { +// if (object == null) { +// return null; +// } +// Class klass = object.getClass(); +// Field[] fields = klass.getFields(); +// int length = fields.length; +// if (length == 0) { +// return null; +// } +// String[] names = new String[length]; +// for (int i = 0; i < length; i += 1) { +// names[i] = fields[i].getName(); +// } +// return names; + // } + + + /** + * Determine if the JSONObject contains a specific key. + * @param key A key string. + * @return true if the key exists in the JSONObject. + */ + public boolean hasKey(String key) { + return this.map.containsKey(key); + } + + + // /** + // * Increment a property of a JSONObject. If there is no such property, + // * create one with a value of 1. If there is such a property, and if + // * it is an Integer, Long, Double, or Float, then add one to it. + // * @param key A key string. + // * @return this. + // * @throws JSONException If there is already a property with this name + // * that is not an Integer, Long, Double, or Float. + // */ + // public JSON increment(String key) { +// Object value = this.opt(key); +// if (value == null) { +// this.put(key, 1); +// } else if (value instanceof Integer) { +// this.put(key, ((Integer)value).intValue() + 1); +// } else if (value instanceof Long) { +// this.put(key, ((Long)value).longValue() + 1); +// } else if (value instanceof Double) { +// this.put(key, ((Double)value).doubleValue() + 1); +// } else if (value instanceof Float) { +// this.put(key, ((Float)value).floatValue() + 1); +// } else { +// throw new RuntimeException("Unable to increment [" + quote(key) + "]."); +// } +// return this; + // } + + + /** + * Determine if the value associated with the key is null or if there is + * no value. + * @param key A key string. + * @return true if there is no value associated with the key or if + * the value is the JSONObject.NULL object. + */ + protected boolean isNull(String key) { + return /*JSONObject.*/NULL.equals(this.opt(key)); + } + + + /** + * Get an enumeration of the keys of the JSONObject. + * + * @return An iterator of the keys. + */ + public Iterator keys() { +// return this.keySet().iterator(); + return map.keySet().iterator(); + } + + + // /** + // * Get a set of keys of the JSONObject. + // * + // * @return A keySet. + // */ + // public Set keySet() { +// return this.map.keySet(); + // } + + + /** + * Get the number of keys stored in the JSONObject. + * + * @return The number of keys in the JSONObject. + */ + public int size() { + return this.map.size(); + } + + + // /** + // * Produce a JSONArray containing the names of the elements of this + // * JSONObject. + // * @return A JSONArray containing the key strings, or null if the JSONObject + // * is empty. + // */ + // public JSONArray names() { +// JSONArray ja = new JSONArray(); +// Iterator keys = this.keys(); +// while (keys.hasNext()) { +// ja.append(keys.next()); +// } +// return ja.size() == 0 ? null : ja; + // } + + + /** + * Produce a string from a Number. + * @param number A Number + * @return A String. + * @throws JSONException If n is a non-finite number. + */ + private static String numberToString(Number number) { + if (number == null) { + throw new RuntimeException("Null pointer"); + } + testValidity(number); + + // Shave off trailing zeros and decimal point, if possible. + + String string = number.toString(); + if (string.indexOf('.') > 0 && string.indexOf('e') < 0 && + string.indexOf('E') < 0) { + while (string.endsWith("0")) { + string = string.substring(0, string.length() - 1); + } + if (string.endsWith(".")) { + string = string.substring(0, string.length() - 1); + } + } + return string; + } + + + /** + * Get an optional value associated with a key. + * @param key A key string. + * @return An object which is the value, or null if there is no value. + */ + private Object opt(String key) { + return key == null ? null : this.map.get(key); + } + + + // /** + // * Get an optional boolean associated with a key. + // * It returns false if there is no such key, or if the value is not + // * Boolean.TRUE or the String "true". + // * + // * @param key A key string. + // * @return The truth. + // */ + // private boolean optBoolean(String key) { +// return this.optBoolean(key, false); + // } + + + // /** + // * Get an optional boolean associated with a key. + // * It returns the defaultValue if there is no such key, or if it is not + // * a Boolean or the String "true" or "false" (case insensitive). + // * + // * @param key A key string. + // * @param defaultValue The default. + // * @return The truth. + // */ + // private boolean optBoolean(String key, boolean defaultValue) { +// try { +// return this.getBoolean(key); +// } catch (Exception e) { +// return defaultValue; +// } + // } + + + // /** + // * Get an optional double associated with a key, + // * or NaN if there is no such key or if its value is not a number. + // * If the value is a string, an attempt will be made to evaluate it as + // * a number. + // * + // * @param key A string which is the key. + // * @return An object which is the value. + // */ + // private double optDouble(String key) { +// return this.optDouble(key, Double.NaN); + // } + + + // /** + // * Get an optional double associated with a key, or the + // * defaultValue if there is no such key or if its value is not a number. + // * If the value is a string, an attempt will be made to evaluate it as + // * a number. + // * + // * @param key A key string. + // * @param defaultValue The default. + // * @return An object which is the value. + // */ + // private double optDouble(String key, double defaultValue) { +// try { +// return this.getDouble(key); +// } catch (Exception e) { +// return defaultValue; +// } + // } + + + // /** + // * Get an optional int value associated with a key, + // * or zero if there is no such key or if the value is not a number. + // * If the value is a string, an attempt will be made to evaluate it as + // * a number. + // * + // * @param key A key string. + // * @return An object which is the value. + // */ + // private int optInt(String key) { +// return this.optInt(key, 0); + // } + + + // /** + // * Get an optional int value associated with a key, + // * or the default if there is no such key or if the value is not a number. + // * If the value is a string, an attempt will be made to evaluate it as + // * a number. + // * + // * @param key A key string. + // * @param defaultValue The default. + // * @return An object which is the value. + // */ + // private int optInt(String key, int defaultValue) { +// try { +// return this.getInt(key); +// } catch (Exception e) { +// return defaultValue; +// } + // } + + + // /** + // * Get an optional JSONArray associated with a key. + // * It returns null if there is no such key, or if its value is not a + // * JSONArray. + // * + // * @param key A key string. + // * @return A JSONArray which is the value. + // */ + // private JSONArray optJSONArray(String key) { +// Object o = this.opt(key); +// return o instanceof JSONArray ? (JSONArray)o : null; + // } + + + // /** + // * Get an optional JSONObject associated with a key. + // * It returns null if there is no such key, or if its value is not a + // * JSONObject. + // * + // * @param key A key string. + // * @return A JSONObject which is the value. + // */ + // private JSONObject optJSONObject(String key) { +// Object object = this.opt(key); +// return object instanceof JSONObject ? (JSONObject)object : null; + // } + + + // /** + // * Get an optional long value associated with a key, + // * or zero if there is no such key or if the value is not a number. + // * If the value is a string, an attempt will be made to evaluate it as + // * a number. + // * + // * @param key A key string. + // * @return An object which is the value. + // */ + // public long optLong(String key) { +// return this.optLong(key, 0); + // } + + + // /** + // * Get an optional long value associated with a key, + // * or the default if there is no such key or if the value is not a number. + // * If the value is a string, an attempt will be made to evaluate it as + // * a number. + // * + // * @param key A key string. + // * @param defaultValue The default. + // * @return An object which is the value. + // */ + // public long optLong(String key, long defaultValue) { +// try { +// return this.getLong(key); +// } catch (Exception e) { +// return defaultValue; +// } + // } + + + // /** + // * Get an optional string associated with a key. + // * It returns an empty string if there is no such key. If the value is not + // * a string and is not null, then it is converted to a string. + // * + // * @param key A key string. + // * @return A string which is the value. + // */ + // public String optString(String key) { +// return this.optString(key, ""); + // } + + + // /** + // * Get an optional string associated with a key. + // * It returns the defaultValue if there is no such key. + // * + // * @param key A key string. + // * @param defaultValue The default. + // * @return A string which is the value. + // */ + // public String optString(String key, String defaultValue) { +// Object object = this.opt(key); +// return NULL.equals(object) ? defaultValue : object.toString(); + // } + + + private void populateMap(Object bean) { + Class klass = bean.getClass(); + + // If klass is a System class then set includeSuperClass to false. + + boolean includeSuperClass = klass.getClassLoader() != null; + + Method[] methods = includeSuperClass + ? klass.getMethods() + : klass.getDeclaredMethods(); + for (int i = 0; i < methods.length; i += 1) { + try { + Method method = methods[i]; + if (Modifier.isPublic(method.getModifiers())) { + String name = method.getName(); + String key = ""; + if (name.startsWith("get")) { + if ("getClass".equals(name) || + "getDeclaringClass".equals(name)) { + key = ""; + } else { + key = name.substring(3); + } + } else if (name.startsWith("is")) { + key = name.substring(2); + } + if (key.length() > 0 && + Character.isUpperCase(key.charAt(0)) && + method.getParameterTypes().length == 0) { + if (key.length() == 1) { + key = key.toLowerCase(); + } else if (!Character.isUpperCase(key.charAt(1))) { + key = key.substring(0, 1).toLowerCase() + + key.substring(1); + } + + Object result = method.invoke(bean, (Object[])null); + if (result != null) { + this.map.put(key, wrap(result)); + } + } + } + } catch (Exception ignore) { + } + } + } + + + public JSONObject setString(String key, String value) { + return put(key, value); + } + + + /** + * Put a key/int pair in the JSONObject. + * + * @param key A key string. + * @param value An int which is the value. + * @return this. + * @throws JSONException If the key is null. + */ + public JSONObject setInt(String key, int value) { + this.put(key, new Integer(value)); + return this; + } + + + /** + * Put a key/long pair in the JSONObject. + * + * @param key A key string. + * @param value A long which is the value. + * @return this. + * @throws JSONException If the key is null. + */ + public JSONObject setLong(String key, long value) { + this.put(key, new Long(value)); + return this; + } + + + public JSONObject setFloat(String key, float value) { + this.put(key, new Double(value)); + return this; + } + + + /** + * Put a key/double pair in the JSONObject. + * + * @param key A key string. + * @param value A double which is the value. + * @return this. + * @throws JSONException If the key is null or if the number is invalid. + */ + public JSONObject setDouble(String key, double value) { + this.put(key, new Double(value)); + return this; + } + + + /** + * Put a key/boolean pair in the JSONObject. + * + * @param key A key string. + * @param value A boolean which is the value. + * @return this. + * @throws JSONException If the key is null. + */ + public JSONObject setBoolean(String key, boolean value) { + this.put(key, value ? Boolean.TRUE : Boolean.FALSE); + return this; + } + + + public JSONObject setJSONObject(String key, JSONObject/*String*/ value) { + return put(key, value); + } + + + public JSONObject setJSONArray(String key, JSONArray/*String*/ value) { + return put(key, value); + } + + + // /** + // * Put a key/value pair in the JSONObject, where the value will be a + // * JSONArray which is produced from a Collection. + // * @param key A key string. + // * @param value A Collection value. + // * @return this. + // * @throws JSONException + // */ + // public JSONObject put(String key, Collection value) { +// this.put(key, new JSONArray(value)); +// return this; + // } + + + // /** + // * Put a key/value pair in the JSONObject, where the value will be a + // * JSONObject which is produced from a Map. + // * @param key A key string. + // * @param value A Map value. + // * @return this. + // * @throws JSONException + // */ + // //public JSONObject put(String key, HashMap value) { + // public JSONObject put(String key, Map value) { +// this.put(key, new JSONObject(value)); +// return this; + // } + + + /** + * Put a key/value pair in the JSONObject. If the value is null, + * then the key will be removed from the JSONObject if it is present. + * @param key A key string. + * @param value An object which is the value. It should be of one of these + * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, + * or the JSONObject.NULL object. + * @return this. + * @throws JSONException If the value is non-finite number + * or if the key is null. + */ + private JSONObject put(String key, Object value) { + String pooled; + if (key == null) { + throw new RuntimeException("Null key."); + } + if (value != null) { + testValidity(value); + pooled = (String)keyPool.get(key); + if (pooled == null) { + if (keyPool.size() >= keyPoolSize) { + keyPool = new HashMap(keyPoolSize); + } + keyPool.put(key, key); + } else { + key = pooled; + } + this.map.put(key, value); + } else { + this.remove(key); + } + return this; + } + + + /** + * Put a key/value pair in the JSONObject, but only if the key and the + * value are both non-null, and only if there is not already a member + * with that name. + * @param key + * @param value + * @return his. + * @throws JSONException if the key is a duplicate + */ + private JSONObject putOnce(String key, Object value) { + if (key != null && value != null) { + if (this.opt(key) != null) { + throw new RuntimeException("Duplicate key \"" + key + "\""); + } + this.put(key, value); + } + return this; + } + + + // /** + // * Put a key/value pair in the JSONObject, but only if the + // * key and the value are both non-null. + // * @param key A key string. + // * @param value An object which is the value. It should be of one of these + // * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, String, + // * or the JSONObject.NULL object. + // * @return this. + // * @throws JSONException If the value is a non-finite number. + // */ + // public JSONObject putOpt(String key, Object value) { +// if (key != null && value != null) { +// this.put(key, value); +// } +// return this; + // } + + + /** + * Produce a string in double quotes with backslash sequences in all the + * right places. A backslash will be inserted within = '\u0080' && c < '\u00a0') + || (c >= '\u2000' && c < '\u2100')) { + w.write("\\u"); + hhhh = Integer.toHexString(c); + w.write("0000", 0, 4 - hhhh.length()); + w.write(hhhh); + } else { + w.write(c); + } + } + } + w.write('"'); + return w; + } + + + /** + * Remove a name and its value, if present. + * @param key The name to be removed. + * @return The value that was associated with the name, + * or null if there was no value. + */ + public Object remove(String key) { + return this.map.remove(key); + } + + + /** + * Try to convert a string into a number, boolean, or null. If the string + * can't be converted, return the string. + * @param string A String. + * @return A simple JSON value. + */ + static protected Object stringToValue(String string) { + Double d; + if (string.equals("")) { + return string; + } + if (string.equalsIgnoreCase("true")) { + return Boolean.TRUE; + } + if (string.equalsIgnoreCase("false")) { + return Boolean.FALSE; + } + if (string.equalsIgnoreCase("null")) { + return /*JSONObject.*/NULL; + } + + /* + * If it might be a number, try converting it. + * If a number cannot be produced, then the value will just + * be a string. Note that the plus and implied string + * conventions are non-standard. A JSON parser may accept + * non-JSON forms as long as it accepts all correct JSON forms. + */ + + char b = string.charAt(0); + if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+') { + try { + if (string.indexOf('.') > -1 || + string.indexOf('e') > -1 || string.indexOf('E') > -1) { + d = Double.valueOf(string); + if (!d.isInfinite() && !d.isNaN()) { + return d; + } + } else { + Long myLong = new Long(string); + if (myLong.longValue() == myLong.intValue()) { + return new Integer(myLong.intValue()); + } else { + return myLong; + } + } + } catch (Exception ignore) { + } + } + return string; + } + + + /** + * Throw an exception if the object is a NaN or infinite number. + * @param o The object to test. + * @throws JSONException If o is a non-finite number. + */ + static protected void testValidity(Object o) { + if (o != null) { + if (o instanceof Double) { + if (((Double)o).isInfinite() || ((Double)o).isNaN()) { + throw new RuntimeException( + "JSON does not allow non-finite numbers."); + } + } else if (o instanceof Float) { + if (((Float)o).isInfinite() || ((Float)o).isNaN()) { + throw new RuntimeException( + "JSON does not allow non-finite numbers."); + } + } + } + } + + + // /** + // * Produce a JSONArray containing the values of the members of this + // * JSONObject. + // * @param names A JSONArray containing a list of key strings. This + // * determines the sequence of the values in the result. + // * @return A JSONArray of values. + // * @throws JSONException If any of the values are non-finite numbers. + // */ + // public JSONArray toJSONArray(JSONArray names) { +// if (names == null || names.size() == 0) { +// return null; +// } +// JSONArray ja = new JSONArray(); +// for (int i = 0; i < names.size(); i += 1) { +// ja.append(this.opt(names.getString(i))); +// } +// return ja; + // } + + + /** + * Return the JSON data formatted with two spaces for indents. + * Chosen to do this since it's the most common case (e.g. with println()). + * Same as format(2). Use the format() function for more options. + */ + @Override + public String toString() { + try { + return format(2); + } catch (Exception e) { + return null; + } + } + + + /** + * Make a prettyprinted JSON text of this JSONObject. + *

+ * Warning: This method assumes that the data structure is acyclical. + * @param indentFactor The number of spaces to add to each level of + * indentation. + * @return a printable, displayable, portable, transmittable + * representation of the object, beginning + * with { (left brace) and ending + * with } (right brace). + * @throws JSONException If the object contains an invalid number. + */ + public String format(int indentFactor) { + StringWriter w = new StringWriter(); + synchronized (w.getBuffer()) { + return this.write(w, indentFactor, 0).toString(); + } + } + + /** + * Make a JSON text of an Object value. If the object has an + * value.toJSONString() method, then that method will be used to produce + * the JSON text. The method is required to produce a strictly + * conforming text. If the object does not contain a toJSONString + * method (which is the most common case), then a text will be + * produced by other means. If the value is an array or Collection, + * then a JSONArray will be made from it and its toJSONString method + * will be called. If the value is a MAP, then a JSONObject will be made + * from it and its toJSONString method will be called. Otherwise, the + * value's toString method will be called, and the result will be quoted. + * + *

+ * Warning: This method assumes that the data structure is acyclical. + * @param value The value to be serialized. + * @return a printable, displayable, transmittable + * representation of the object, beginning + * with { (left brace) and ending + * with } (right brace). + * @throws JSONException If the value is or contains an invalid number. + */ + static protected String valueToString(Object value) { + if (value == null || value.equals(null)) { + return "null"; + } +// if (value instanceof JSONString) { +// Object object; +// try { +// object = ((JSONString)value).toJSONString(); +// } catch (Exception e) { +// throw new RuntimeException(e); +// } +// if (object instanceof String) { +// return (String)object; +// } +// throw new RuntimeException("Bad value from toJSONString: " + object); +// } + if (value instanceof Number) { + return numberToString((Number) value); + } + if (value instanceof Boolean || value instanceof JSONObject || + value instanceof JSONArray) { + return value.toString(); + } + if (value instanceof Map) { + return new JSONObject((Map)value).toString(); + } + if (value instanceof Collection) { + return new JSONArray((Collection)value).toString(); + } + if (value.getClass().isArray()) { + return new JSONArray(value).toString(); + } + return quote(value.toString()); + } + + /** + * Wrap an object, if necessary. If the object is null, return the NULL + * object. If it is an array or collection, wrap it in a JSONArray. If + * it is a map, wrap it in a JSONObject. If it is a standard property + * (Double, String, et al) then it is already wrapped. Otherwise, if it + * comes from one of the java packages, turn it into a string. And if + * it doesn't, try to wrap it in a JSONObject. If the wrapping fails, + * then null is returned. + * + * @param object The object to wrap + * @return The wrapped value + */ + static protected Object wrap(Object object) { + try { + if (object == null) { + return NULL; + } + if (object instanceof JSONObject || object instanceof JSONArray || + NULL.equals(object) || /*object instanceof JSONString ||*/ + object instanceof Byte || object instanceof Character || + object instanceof Short || object instanceof Integer || + object instanceof Long || object instanceof Boolean || + object instanceof Float || object instanceof Double || + object instanceof String) { + return object; + } + + if (object instanceof Collection) { + return new JSONArray((Collection)object); + } + if (object.getClass().isArray()) { + return new JSONArray(object); + } + if (object instanceof Map) { + return new JSONObject((Map)object); + } + Package objectPackage = object.getClass().getPackage(); + String objectPackageName = objectPackage != null + ? objectPackage.getName() + : ""; + if ( + objectPackageName.startsWith("java.") || + objectPackageName.startsWith("javax.") || + object.getClass().getClassLoader() == null + ) { + return object.toString(); + } + return new JSONObject(object); + } catch(Exception exception) { + return null; + } + } + + + /** + * Write the contents of the JSONObject as JSON text to a writer. + * For compactness, no whitespace is added. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return The writer. + * @throws JSONException + */ + protected Writer write(Writer writer) { + return this.write(writer, 0, 0); + } + + + static final Writer writeValue(Writer writer, Object value, + int indentFactor, int indent) throws IOException { + if (value == null || value.equals(null)) { + writer.write("null"); + } else if (value instanceof JSONObject) { + ((JSONObject) value).write(writer, indentFactor, indent); + } else if (value instanceof JSONArray) { + ((JSONArray) value).write(writer, indentFactor, indent); + } else if (value instanceof Map) { + new JSONObject((Map) value).write(writer, indentFactor, indent); + } else if (value instanceof Collection) { + new JSONArray((Collection) value).write(writer, indentFactor, + indent); + } else if (value.getClass().isArray()) { + new JSONArray(value).write(writer, indentFactor, indent); + } else if (value instanceof Number) { + writer.write(numberToString((Number) value)); + } else if (value instanceof Boolean) { + writer.write(value.toString()); + /* + } else if (value instanceof JSONString) { + Object o; + try { + o = ((JSONString) value).toJSONString(); + } catch (Exception e) { + throw new RuntimeException(e); + } + writer.write(o != null ? o.toString() : quote(value.toString())); + */ + } else { + quote(value.toString(), writer); + } + return writer; + } + + + static final void indent(Writer writer, int indent) throws IOException { + for (int i = 0; i < indent; i += 1) { + writer.write(' '); + } + } + + /** + * Write the contents of the JSONObject as JSON text to a writer. For + * compactness, no whitespace is added. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return The writer. + * @throws JSONException + */ + protected Writer write(Writer writer, int indentFactor, int indent) { + try { + boolean commanate = false; + final int length = this.size(); + Iterator keys = this.keys(); + writer.write('{'); + + int actualFactor = (indentFactor == -1) ? 0 : indentFactor; + + if (length == 1) { + Object key = keys.next(); + writer.write(quote(key.toString())); + writer.write(':'); + if (actualFactor > 0) { + writer.write(' '); + } + writeValue(writer, this.map.get(key), actualFactor, indent); + } else if (length != 0) { + final int newindent = indent + actualFactor; + while (keys.hasNext()) { + Object key = keys.next(); + if (commanate) { + writer.write(','); + } + if (indentFactor != -1) { + writer.write('\n'); + } + indent(writer, newindent); + writer.write(quote(key.toString())); + writer.write(':'); + if (actualFactor > 0) { + writer.write(' '); + } + writeValue(writer, this.map.get(key), actualFactor, + newindent); + commanate = true; + } + if (indentFactor != -1) { + writer.write('\n'); + } + indent(writer, indent); + } + writer.write('}'); + return writer; + } catch (IOException exception) { + throw new RuntimeException(exception); + } + } + + + // // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + // + // + // class JSONException extends RuntimeException { + // +// public JSONException(String message) { +// super(message); +// } + // +// public JSONException(Throwable throwable) { +// super(throwable); +// } + // } + + + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + // /** + // * Get the hex value of a character (base16). + // * @param c A character between '0' and '9' or between 'A' and 'F' or + // * between 'a' and 'f'. + // * @return An int between 0 and 15, or -1 if c was not a hex digit. + // */ + // static protected int dehexchar(char c) { +// if (c >= '0' && c <= '9') { +// return c - '0'; +// } +// if (c >= 'A' && c <= 'F') { +// return c - ('A' - 10); +// } +// if (c >= 'a' && c <= 'f') { +// return c - ('a' - 10); +// } +// return -1; + // } + + + // static class JSONTokener { +// private long character; +// private boolean eof; +// private long index; +// private long line; +// private char previous; +// private Reader reader; +// private boolean usePrevious; + // + // +// /** +// * Construct a JSONTokener from a Reader. +// * +// * @param reader A reader. +// */ +// public JSONTokener(Reader reader) { +// this.reader = reader.markSupported() +// ? reader +// : new BufferedReader(reader); +// this.eof = false; +// this.usePrevious = false; +// this.previous = 0; +// this.index = 0; +// this.character = 1; +// this.line = 1; +// } + // + // +// /** +// * Construct a JSONTokener from an InputStream. +// */ +// public JSONTokener(InputStream inputStream) { +// this(new InputStreamReader(inputStream)); +// } + // + // +// /** +// * Construct a JSONTokener from a string. +// * +// * @param s A source string. +// */ +// public JSONTokener(String s) { +// this(new StringReader(s)); +// } + // + // +// /** +// * Back up one character. This provides a sort of lookahead capability, +// * so that you can test for a digit or letter before attempting to parse +// * the next number or identifier. +// */ +// public void back() { +// if (this.usePrevious || this.index <= 0) { +// throw new RuntimeException("Stepping back two steps is not supported"); +// } +// this.index -= 1; +// this.character -= 1; +// this.usePrevious = true; +// this.eof = false; +// } + // + // +// public boolean end() { +// return this.eof && !this.usePrevious; +// } + // + // +// /** +// * Determine if the source string still contains characters that next() +// * can consume. +// * @return true if not yet at the end of the source. +// */ +// public boolean more() { +// this.next(); +// if (this.end()) { +// return false; +// } +// this.back(); +// return true; +// } + // + // +// /** +// * Get the next character in the source string. +// * +// * @return The next character, or 0 if past the end of the source string. +// */ +// public char next() { +// int c; +// if (this.usePrevious) { +// this.usePrevious = false; +// c = this.previous; +// } else { +// try { +// c = this.reader.read(); +// } catch (IOException exception) { +// throw new RuntimeException(exception); +// } + // +// if (c <= 0) { // End of stream +// this.eof = true; +// c = 0; +// } +// } +// this.index += 1; +// if (this.previous == '\r') { +// this.line += 1; +// this.character = c == '\n' ? 0 : 1; +// } else if (c == '\n') { +// this.line += 1; +// this.character = 0; +// } else { +// this.character += 1; +// } +// this.previous = (char) c; +// return this.previous; +// } + // + // +// /** +// * Consume the next character, and check that it matches a specified +// * character. +// * @param c The character to match. +// * @return The character. +// * @throws JSONException if the character does not match. +// */ +// public char next(char c) { +// char n = this.next(); +// if (n != c) { +// throw new RuntimeException("Expected '" + c + "' and instead saw '" + n + "'"); +// } +// return n; +// } + // + // +// /** +// * Get the next n characters. +// * +// * @param n The number of characters to take. +// * @return A string of n characters. +// * @throws JSONException +// * Substring bounds error if there are not +// * n characters remaining in the source string. +// */ +// public String next(int n) { +// if (n == 0) { +// return ""; +// } + // +// char[] chars = new char[n]; +// int pos = 0; + // +// while (pos < n) { +// chars[pos] = this.next(); +// if (this.end()) { +// throw new RuntimeException("Substring bounds error"); +// } +// pos += 1; +// } +// return new String(chars); +// } + // + // +// /** +// * Get the next char in the string, skipping whitespace. +// * @throws JSONException +// * @return A character, or 0 if there are no more characters. +// */ +// public char nextClean() { +// for (;;) { +// char c = this.next(); +// if (c == 0 || c > ' ') { +// return c; +// } +// } +// } + // + // +// /** +// * Return the characters up to the next close quote character. +// * Backslash processing is done. The formal JSON format does not +// * allow strings in single quotes, but an implementation is allowed to +// * accept them. +// * @param quote The quoting character, either +// * " (double quote) or +// * ' (single quote). +// * @return A String. +// * @throws JSONException Unterminated string. +// */ +// public String nextString(char quote) { +// char c; +// StringBuffer sb = new StringBuffer(); +// for (;;) { +// c = this.next(); +// switch (c) { +// case 0: +// case '\n': +// case '\r': +// throw new RuntimeException("Unterminated string"); +// case '\\': +// c = this.next(); +// switch (c) { +// case 'b': +// sb.append('\b'); +// break; +// case 't': +// sb.append('\t'); +// break; +// case 'n': +// sb.append('\n'); +// break; +// case 'f': +// sb.append('\f'); +// break; +// case 'r': +// sb.append('\r'); +// break; +// case 'u': +// sb.append((char)Integer.parseInt(this.next(4), 16)); +// break; +// case '"': +// case '\'': +// case '\\': +// case '/': +// sb.append(c); +// break; +// default: +// throw new RuntimeException("Illegal escape."); +// } +// break; +// default: +// if (c == quote) { +// return sb.toString(); +// } +// sb.append(c); +// } +// } +// } + // + // +// /** +// * Get the text up but not including the specified character or the +// * end of line, whichever comes first. +// * @param delimiter A delimiter character. +// * @return A string. +// */ +// public String nextTo(char delimiter) { +// StringBuffer sb = new StringBuffer(); +// for (;;) { +// char c = this.next(); +// if (c == delimiter || c == 0 || c == '\n' || c == '\r') { +// if (c != 0) { +// this.back(); +// } +// return sb.toString().trim(); +// } +// sb.append(c); +// } +// } + // + // +// /** +// * Get the text up but not including one of the specified delimiter +// * characters or the end of line, whichever comes first. +// * @param delimiters A set of delimiter characters. +// * @return A string, trimmed. +// */ +// public String nextTo(String delimiters) { +// char c; +// StringBuffer sb = new StringBuffer(); +// for (;;) { +// c = this.next(); +// if (delimiters.indexOf(c) >= 0 || c == 0 || +// c == '\n' || c == '\r') { +// if (c != 0) { +// this.back(); +// } +// return sb.toString().trim(); +// } +// sb.append(c); +// } +// } + // + // +// /** +// * Get the next value. The value can be a Boolean, Double, Integer, +// * JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. +// * @throws JSONException If syntax error. +// * +// * @return An object. +// */ +// public Object nextValue() { +// char c = this.nextClean(); +// String string; + // +// switch (c) { +// case '"': +// case '\'': +// return this.nextString(c); +// case '{': +// this.back(); +// return new JSONObject(this); +// case '[': +// this.back(); +// return new JSONArray(this); +// } + // +// /* +// * Handle unquoted text. This could be the values true, false, or +// * null, or it can be a number. An implementation (such as this one) +// * is allowed to also accept non-standard forms. +// * +// * Accumulate characters until we reach the end of the text or a +// * formatting character. +// */ + // +// StringBuffer sb = new StringBuffer(); +// while (c >= ' ' && ",:]}/\\\"[{;=#".indexOf(c) < 0) { +// sb.append(c); +// c = this.next(); +// } +// this.back(); + // +// string = sb.toString().trim(); +// if ("".equals(string)) { +// throw new RuntimeException("Missing value"); +// } +// return JSONObject.stringToValue(string); +// } + // + // +// /** +// * Skip characters until the next character is the requested character. +// * If the requested character is not found, no characters are skipped. +// * @param to A character to skip to. +// * @return The requested character, or zero if the requested character +// * is not found. +// */ +// public char skipTo(char to) { +// char c; +// try { +// long startIndex = this.index; +// long startCharacter = this.character; +// long startLine = this.line; +// this.reader.mark(1000000); +// do { +// c = this.next(); +// if (c == 0) { +// this.reader.reset(); +// this.index = startIndex; +// this.character = startCharacter; +// this.line = startLine; +// return c; +// } +// } while (c != to); +// } catch (IOException exc) { +// throw new RuntimeException(exc); +// } + // +// this.back(); +// return c; +// } + // + // +// /** +// * Make a printable string of this JSONTokener. +// * +// * @return " at {index} [character {character} line {line}]" +// */ +// @Override +// public String toString() { +// return " at " + this.index + " [character " + this.character + " line " + +// this.line + "]"; +// } + // } + } + + /* + Copyright (c) 2002 JSON.org + + 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 shall be used for Good, not Evil. + + 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. + */ + + /** + * A JSONArray is an ordered sequence of values. Its external text form is a + * string wrapped in square brackets with commas separating the values. The + * internal form is an object having get and opt + * methods for accessing the values by index, and put methods for + * adding or replacing values. The values can be any of these types: + * Boolean, JSONArray, JSONObject, + * Number, String, or the + * JSONObject.NULL object. + *

+ * The constructor can convert a JSON text into a Java object. The + * toString method converts to JSON text. + *

+ * A get method returns a value if one can be found, and throws an + * exception if one cannot be found. An opt method returns a + * default value instead of throwing an exception, and so is useful for + * obtaining optional values. + *

+ * The generic get() and opt() methods return an + * object which you can cast or query for type. There are also typed + * get and opt methods that do type checking and type + * coercion for you. + *

+ * The texts produced by the toString methods strictly conform to + * JSON syntax rules. The constructors are more forgiving in the texts they will + * accept: + *

    + *
  • An extra , (comma) may appear just + * before the closing bracket.
  • + *
  • The null value will be inserted when there is , + *  (comma) elision.
  • + *
  • Strings may be quoted with ' (single + * quote).
  • + *
  • Strings do not need to be quoted at all if they do not begin with a quote + * or single quote, and if they do not contain leading or trailing spaces, and + * if they do not contain any of these characters: + * { } [ ] / \ : , = ; # and if they do not look like numbers and + * if they are not the reserved words true, false, or + * null.
  • + *
  • Values can be separated by ; (semicolon) as + * well as by , (comma).
  • + *
+ * + * @author JSON.org + * @version 2012-11-13 + */ + static class JSONArray extends JSON { + + + /** + * The arrayList where the JSONArray's properties are kept. + */ + private final ArrayList myArrayList; + + + /** + * Construct an empty JSONArray. + */ + public JSONArray() { + super(); + this.myArrayList = new ArrayList(); + } + + /** + * Construct a JSONArray from a JSONTokener. + * @param x A JSONTokener + * @throws JSONException If there is a syntax error. + */ + /*private*/protected JSONArray(JSONTokener x) { + this(); + if (x.nextClean() != '[') { + throw new RuntimeException("A JSONArray text must start with '['"); + } + if (x.nextClean() != ']') { + x.back(); + for (;;) { + if (x.nextClean() == ',') { + x.back(); + myArrayList.add(JSON/*Object*/.NULL); + } else { + x.back(); + myArrayList.add(x.nextValue()); + } + switch (x.nextClean()) { + case ';': + case ',': + if (x.nextClean() == ']') { + return; + } + x.back(); + break; + case ']': + return; + default: + throw new RuntimeException("Expected a ',' or ']'"); + } + } + } + } + + + /** + * Construct a JSONArray from a source JSON text. + * @param source A string that begins with + * [ (left bracket) + * and ends with ] (right bracket). + * @throws JSONException If there is a syntax error. + */ + static public JSONArray parse(String source) { + try { + return new JSONArray(new JSONTokener(source)); + } catch (Exception e) { + return null; + } + } + + + // /** + // * Construct a JSONArray from a Collection. + // * @param collection A Collection. + // */ + // public JSONArray(Collection collection) { +// myArrayList = new ArrayList(); +// if (collection != null) { +// Iterator iter = collection.iterator(); +// while (iter.hasNext()) { +// myArrayList.add(JSONObject.wrap(iter.next())); +// } +// } + // } + + + // TODO not decided whether we keep this one, but used heavily by JSONObject + /** + * Construct a JSONArray from an array + * @throws JSONException If not an array. + */ + protected JSONArray(Object array) { + this(); + if (array.getClass().isArray()) { + int length = Array.getLength(array); + for (int i = 0; i < length; i += 1) { + this.append(JSONObject.wrap(Array.get(array, i))); + } + } else { + throw new RuntimeException("JSONArray initial value should be a string or collection or array."); + } + } + + + /** + * Get the optional object value associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return An object value, or null if there is no + * object at that index. + */ + private Object opt(int index) { + if (index < 0 || index >= this.size()) { + return null; + } + return myArrayList.get(index); + } + + + /** + * Get the object value associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return An object value. + * @throws JSONException If there is no value for the index. + */ + private Object get(int index) { + Object object = opt(index); + if (object == null) { + throw new RuntimeException("JSONArray[" + index + "] not found."); + } + return object; + } + + + /** + * Get the string associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return A string value. + * @throws JSONException If there is no string value for the index. + */ + public String getInnerString(int index) { + Object object = this.get(index); + if (object instanceof String) { + return (String)object; + } + throw new RuntimeException("JSONArray[" + index + "] not a string."); + } + + + /** + * Get the int value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value is not a number. + */ + public int getInnerInt(int index) { + Object object = this.get(index); + try { + return object instanceof Number + ? ((Number)object).intValue() + : Integer.parseInt((String)object); + } catch (Exception e) { + throw new RuntimeException("JSONArray[" + index + "] is not a number."); + } + } + + + /** + * Get the long value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value cannot + * be converted to a number. + */ + public long getInnerLong(int index) { + Object object = this.get(index); + try { + return object instanceof Number + ? ((Number)object).longValue() + : Long.parseLong((String)object); + } catch (Exception e) { + throw new RuntimeException("JSONArray[" + index + "] is not a number."); + } + } + + + /** + * Get a value from an index as a float. JSON uses 'double' values + * internally, so this is simply getDouble() cast to a float. + */ + public float getInnerFloat(int index) { + return (float) getInnerDouble(index); + } + + + /** + * Get the double value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value cannot + * be converted to a number. + */ + public double getInnerDouble(int index) { + Object object = this.get(index); + try { + return object instanceof Number + ? ((Number)object).doubleValue() + : Double.parseDouble((String)object); + } catch (Exception e) { + throw new RuntimeException("JSONArray[" + index + "] is not a number."); + } + } + + + /** + * Get the boolean value associated with an index. + * The string values "true" and "false" are converted to boolean. + * + * @param index The index must be between 0 and length() - 1. + * @return The truth. + * @throws JSONException If there is no value for the index or if the + * value is not convertible to boolean. + */ + public boolean getInnerBoolean(int index) { + Object object = this.get(index); + if (object.equals(Boolean.FALSE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("false"))) { + return false; + } else if (object.equals(Boolean.TRUE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("true"))) { + return true; + } + throw new RuntimeException("JSONArray[" + index + "] is not a boolean."); + } + + + /** + * Get the JSONArray associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return A JSONArray value. + * @throws JSONException If there is no value for the index. or if the + * value is not a JSONArray + */ + public JSONArray getInnerArray(int index) { + Object object = this.get(index); + if (object instanceof JSONArray) { + return (JSONArray)object; + } + throw new RuntimeException("JSONArray[" + index + "] is not a JSONArray."); + } + + + /** + * Get the JSONObject associated with an index. + * @param index subscript + * @return A JSONObject value. + * @throws JSONException If there is no value for the index or if the + * value is not a JSONObject + */ + public JSONObject getInnerObject(int index) { + Object object = this.get(index); + if (object instanceof JSONObject) { + return (JSONObject)object; + } + throw new RuntimeException("JSONArray[" + index + "] is not a JSONObject."); + } + + + // /** + // * Get the optional boolean value associated with an index. + // * It returns false if there is no value at that index, + // * or if the value is not Boolean.TRUE or the String "true". + // * + // * @param index The index must be between 0 and length() - 1. + // * @return The truth. + // */ + // public boolean optBoolean(int index) { +// return this.optBoolean(index, false); + // } + // + // + // /** + // * Get the optional boolean value associated with an index. + // * It returns the defaultValue if there is no value at that index or if + // * it is not a Boolean or the String "true" or "false" (case insensitive). + // * + // * @param index The index must be between 0 and length() - 1. + // * @param defaultValue A boolean default. + // * @return The truth. + // */ + // public boolean optBoolean(int index, boolean defaultValue) { +// try { +// return this.getBoolean(index); +// } catch (Exception e) { +// return defaultValue; +// } + // } + // + // + // /** + // * Get the optional double value associated with an index. + // * NaN is returned if there is no value for the index, + // * or if the value is not a number and cannot be converted to a number. + // * + // * @param index The index must be between 0 and length() - 1. + // * @return The value. + // */ + // public double optDouble(int index) { +// return this.optDouble(index, Double.NaN); + // } + // + // + // /** + // * Get the optional double value associated with an index. + // * The defaultValue is returned if there is no value for the index, + // * or if the value is not a number and cannot be converted to a number. + // * + // * @param index subscript + // * @param defaultValue The default value. + // * @return The value. + // */ + // public double optDouble(int index, double defaultValue) { +// try { +// return this.getDouble(index); +// } catch (Exception e) { +// return defaultValue; +// } + // } + // + // + // /** + // * Get the optional int value associated with an index. + // * Zero is returned if there is no value for the index, + // * or if the value is not a number and cannot be converted to a number. + // * + // * @param index The index must be between 0 and length() - 1. + // * @return The value. + // */ + // public int optInt(int index) { +// return this.optInt(index, 0); + // } + // + // + // /** + // * Get the optional int value associated with an index. + // * The defaultValue is returned if there is no value for the index, + // * or if the value is not a number and cannot be converted to a number. + // * @param index The index must be between 0 and length() - 1. + // * @param defaultValue The default value. + // * @return The value. + // */ + // public int optInt(int index, int defaultValue) { +// try { +// return this.getInt(index); +// } catch (Exception e) { +// return defaultValue; +// } + // } + // + // + // /** + // * Get the optional JSONArray associated with an index. + // * @param index subscript + // * @return A JSONArray value, or null if the index has no value, + // * or if the value is not a JSONArray. + // */ + // public JSONArray optJSONArray(int index) { +// Object o = this.opt(index); +// return o instanceof JSONArray ? (JSONArray)o : null; + // } + // + // + // /** + // * Get the optional JSONObject associated with an index. + // * Null is returned if the key is not found, or null if the index has + // * no value, or if the value is not a JSONObject. + // * + // * @param index The index must be between 0 and length() - 1. + // * @return A JSONObject value. + // */ + // public JSON optJSONObject(int index) { +// Object o = this.opt(index); +// return o instanceof JSON ? (JSON)o : null; + // } + // + // + // /** + // * Get the optional long value associated with an index. + // * Zero is returned if there is no value for the index, + // * or if the value is not a number and cannot be converted to a number. + // * + // * @param index The index must be between 0 and length() - 1. + // * @return The value. + // */ + // public long optLong(int index) { +// return this.optLong(index, 0); + // } + // + // + // /** + // * Get the optional long value associated with an index. + // * The defaultValue is returned if there is no value for the index, + // * or if the value is not a number and cannot be converted to a number. + // * @param index The index must be between 0 and length() - 1. + // * @param defaultValue The default value. + // * @return The value. + // */ + // public long optLong(int index, long defaultValue) { +// try { +// return this.getLong(index); +// } catch (Exception e) { +// return defaultValue; +// } + // } + // + // + // /** + // * Get the optional string value associated with an index. It returns an + // * empty string if there is no value at that index. If the value + // * is not a string and is not null, then it is coverted to a string. + // * + // * @param index The index must be between 0 and length() - 1. + // * @return A String value. + // */ + // public String optString(int index) { +// return this.optString(index, ""); + // } + // + // + // /** + // * Get the optional string associated with an index. + // * The defaultValue is returned if the key is not found. + // * + // * @param index The index must be between 0 and length() - 1. + // * @param defaultValue The default value. + // * @return A String value. + // */ + // public String optString(int index, String defaultValue) { +// Object object = this.opt(index); +// return JSON.NULL.equals(object) +// ? defaultValue +// : object.toString(); + // } + + + /** + * Append an int value. This increases the array's length by one. + * + * @param value An int value. + * @return this. + */ + public JSONArray append(int value) { + this.append(new Integer(value)); + return this; + } + + + /** + * Append an long value. This increases the array's length by one. + * + * @param value A long value. + * @return this. + */ + public JSONArray append(long value) { + this.append(new Long(value)); + return this; + } + + + /** + * Append a float value. This increases the array's length by one. + * This will store the value as a double, since there are no floats in JSON. + * + * @param value A float value. + * @throws JSONException if the value is not finite. + * @return this. + */ + public JSONArray append(float value) { + return append((double) value); + } + + + /** + * Append a double value. This increases the array's length by one. + * + * @param value A double value. + * @throws JSONException if the value is not finite. + * @return this. + */ + public JSONArray append(double value) { + Double d = new Double(value); + JSONObject.testValidity(d); + this.append(d); + return this; + } + + + /** + * Append a boolean value. This increases the array's length by one. + * + * @param value A boolean value. + * @return this. + */ + public JSONArray append(boolean value) { + this.append(value ? Boolean.TRUE : Boolean.FALSE); + return this; + } + + /** + * Append a boolean value. This increases the array's length by one. + * + * @param value A boolean value. + * @return this. + */ + public JSONArray append(String value) { + this.append(new String(value)); + return this; + } + + // /** + // * Put a value in the JSONArray, where the value will be a + // * JSONArray which is produced from a Collection. + // * @param value A Collection value. + // * @return this. + // */ + // public JSONArray append(Collection value) { +// this.append(new JSONArray(value)); +// return this; + // } + + + // /** + // * Put a value in the JSONArray, where the value will be a + // * JSONObject which is produced from a Map. + // * @param value A Map value. + // * @return this. + // */ + // public JSONArray append(Map value) { +// this.append(new JSONObject(value)); +// return this; + // } + + + public JSONArray append(JSONArray value) { + myArrayList.add(value); + return this; + } + + + public JSONArray append(JSONObject value) { + myArrayList.add(value); + return this; + } + + + /** + * Append an object value. This increases the array's length by one. + * @param value An object value. The value should be a + * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + * JSONObject.NULL object. + * @return this. + */ + protected JSONArray append(Object value) { + myArrayList.add(value); + return this; + } + + + // /** + // * Put a value in the JSONArray, where the value will be a + // * JSONArray which is produced from a Collection. + // * @param index The subscript. + // * @param value A Collection value. + // * @return this. + // * @throws JSONException If the index is negative or if the value is + // * not finite. + // */ + // public JSONArray set(int index, Collection value) { +// this.set(index, new JSONArray(value)); +// return this; + // } + + + /** + * Put or replace an int value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value An int value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArray setInt(int index, int value) { + this.set(index, new Integer(value)); + return this; + } + + + /** + * Put or replace a long value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value A long value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArray setLong(int index, long value) { + return set(index, new Long(value)); + } + + + /** + * Put or replace a float value. If the index is greater than the length + * of the JSONArray, then null elements will be added as necessary to pad + * it out. There are no 'double' values in JSON, so this is passed to + * setDouble(value). + * @param index The subscript. + * @param value A float value. + * @return this. + * @throws RuntimeException If the index is negative or if the value is + * not finite. + */ + public JSONArray setFloat(int index, float value) { + return setDouble(index, value); + } + + + /** + * Put or replace a double value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value A double value. + * @return this. + * @throws JSONException If the index is negative or if the value is + * not finite. + */ + public JSONArray setDouble(int index, double value) { + return set(index, new Double(value)); + } + + + /** + * Put or replace a boolean value in the JSONArray. If the index is greater + * than the length of the JSONArray, then null elements will be added as + * necessary to pad it out. + * @param index The subscript. + * @param value A boolean value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArray setBoolean(int index, boolean value) { + return set(index, value ? Boolean.TRUE : Boolean.FALSE); + } + + /** + * Put or replace a String value in the JSONArray. If the index is greater + * than the length of the JSONArray, then null elements will be added as + * necessary to pad it out. + * @param index The subscript. + * @param value A String value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArray setBoolean(int index, String value) { + return set(index, new String(value)); + } + + // /** + // * Put a value in the JSONArray, where the value will be a + // * JSONObject that is produced from a Map. + // * @param index The subscript. + // * @param value The Map value. + // * @return this. + // * @throws JSONException If the index is negative or if the the value is + // * an invalid number. + // */ + // public JSONArray set(int index, Map value) { +// this.set(index, new JSONObject(value)); +// return this; + // } + + + public JSONArray setArray(int index, JSONArray value) { + set(index, value); + return this; + } + + + public JSONArray setObject(int index, JSONObject value) { + set(index, value); + return this; + } + + + /** + * Put or replace an object value in the JSONArray. If the index is greater + * than the length of the JSONArray, then null elements will be added as + * necessary to pad it out. + * @param index The subscript. + * @param value The value to put into the array. The value should be a + * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + * JSONObject.NULL object. + * @return this. + * @throws JSONException If the index is negative or if the the value is + * an invalid number. + */ + private JSONArray set(int index, Object value) { + JSONObject.testValidity(value); + if (index < 0) { + throw new RuntimeException("JSONArray[" + index + "] not found."); + } + if (index < this.size()) { + this.myArrayList.set(index, value); + } else { + while (index != this.size()) { + this.append(JSON/*Object*/.NULL); + } + this.append(value); + } + return this; + } + + + /** + * Get the number of elements in the JSONArray, included nulls. + * + * @return The length (or size). + */ + public int size() { + return myArrayList.size(); + } + + + /** + * Determine if the value is null. + * @param index The index must be between 0 and length() - 1. + * @return true if the value at the index is null, or if there is no value. + */ + // TODO not sure on this one + protected boolean isNull(int index) { + return JSON/*Object*/.NULL.equals(this.opt(index)); + } + + + /** + * Remove an index and close the hole. + * @param index The index of the element to be removed. + * @return The value that was associated with the index, + * or null if there was no value. + */ + public Object removeIndex(int index) { + Object o = this.opt(index); + this.myArrayList.remove(index); + return o; + } + + + // /** + // * Produce a JSONObject by combining a JSONArray of names with the values + // * of this JSONArray. + // * @param names A JSONArray containing a list of key strings. These will be + // * paired with the values. + // * @return A JSONObject, or null if there are no names or if this JSONArray + // * has no values. + // * @throws JSONException If any of the names are null. + // */ + // public JSON toJSONObject(JSONArray names) { +// if (names == null || names.length() == 0 || this.length() == 0) { +// return null; +// } +// JSON jo = new JSON(); +// for (int i = 0; i < names.length(); i += 1) { +// jo.put(names.getString(i), this.opt(i)); +// } +// return jo; + // } + + + + /** + * Return the JSON data formatted with two spaces for indents. + * Chosen to do this since it's the most common case (e.g. with println()). + * Same as format(2). Use the format() function for more options. + */ + @Override + public String toString() { + try { + return format(2); + } catch (Exception e) { + return null; + } + } + + + /** + * Make a pretty-printed JSON text of this JSONArray. + * Warning: This method assumes that the data structure is acyclical. + * @param indentFactor The number of spaces to add to each level of + * indentation. Use -1 to specify no indentation and no newlines. + * @return a printable, displayable, transmittable + * representation of the object, beginning + * with [ (left bracket) and ending + * with ] (right bracket). + */ + public String format(int indentFactor) { + StringWriter sw = new StringWriter(); + synchronized (sw.getBuffer()) { + return this.write(sw, indentFactor, 0).toString(); + } + } + + /** + * Write the contents of the JSONArray as JSON text to a writer. For + * compactness, no whitespace is added. + *

+ * Warning: This method assumes that the data structure is acyclic. + * + * @return The writer. + */ + protected Writer write(Writer writer) { + return this.write(writer, -1, 0); + } + + /** + * Write the contents of the JSONArray as JSON text to a writer. For + * compactness, no whitespace is added. + *

+ * Warning: This method assumes that the data structure is acyclic. + * + * @param indentFactor + * The number of spaces to add to each level of indentation. + * Use -1 to specify no indentation and no newlines. + * @param indent + * The indention of the top level. + * @return The writer. + * @throws JSONException + */ + protected Writer write(Writer writer, int indentFactor, int indent) { + try { + boolean commanate = false; + int length = this.size(); + writer.write('['); + + // Use -1 to signify 'no indent' + int thisFactor = (indentFactor == -1) ? 0 : indentFactor; + + if (length == 1) { + JSONObject.writeValue(writer, this.myArrayList.get(0), + thisFactor, indent); + } else if (length != 0) { + final int newindent = indent + thisFactor; + + for (int i = 0; i < length; i += 1) { + if (commanate) { + writer.write(','); + } + if (indentFactor != -1) { + writer.write('\n'); + } + JSONObject.indent(writer, newindent); + JSONObject.writeValue(writer, this.myArrayList.get(i), + thisFactor, newindent); + commanate = true; + } + if (indentFactor != -1) { + writer.write('\n'); + } + JSONObject.indent(writer, indent); + } + writer.write(']'); + return writer; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + + /** + * Make a string from the contents of this JSONArray. The + * separator string is inserted between each element. + * Warning: This method assumes that the data structure is acyclic. + * @param separator A string that will be inserted between the elements. + * @return a string. + * @throws JSONException If the array contains an invalid number. + */ + public String join(String separator) { + int len = this.size(); + StringBuffer sb = new StringBuffer(); + + for (int i = 0; i < len; i += 1) { + if (i > 0) { + sb.append(separator); + } + sb.append(JSONObject.valueToString(this.myArrayList.get(i))); + } + return sb.toString(); + } + } + +} diff --git a/src/org/json/JSONArray.java b/src/org/json/JSONArr.java similarity index 87% rename from src/org/json/JSONArray.java rename to src/org/json/JSONArr.java index a65c3d7d0..bafdfe75a 100644 --- a/src/org/json/JSONArray.java +++ b/src/org/json/JSONArr.java @@ -1,944 +1,944 @@ -package org.json; - -/* -Copyright (c) 2002 JSON.org - -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 shall be used for Good, not Evil. - -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. -*/ - -import java.io.IOException; -import java.io.Writer; -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; - -/** - * A JSONArray is an ordered sequence of values. Its external text form is a - * string wrapped in square brackets with commas separating the values. The - * internal form is an object having get and opt - * methods for accessing the values by index, and put methods for - * adding or replacing values. The values can be any of these types: - * Boolean, JSONArray, JSONObject, - * Number, String, or the - * JSONObject.NULL object. - *

- * The constructor can convert a JSON text into a Java object. The - * toString method converts to JSON text. - *

- * A get method returns a value if one can be found, and throws an - * exception if one cannot be found. An opt method returns a - * default value instead of throwing an exception, and so is useful for - * obtaining optional values. - *

- * The generic get() and opt() methods return an - * object which you can cast or query for type. There are also typed - * get and opt methods that do type checking and type - * coercion for you. - *

- * The texts produced by the toString methods strictly conform to - * JSON syntax rules. The constructors are more forgiving in the texts they will - * accept: - *

    - *
  • An extra , (comma) may appear just - * before the closing bracket.
  • - *
  • The null value will be inserted when there - * is , (comma) elision.
  • - *
  • Strings may be quoted with ' (single - * quote).
  • - *
  • Strings do not need to be quoted at all if they do not begin with a quote - * or single quote, and if they do not contain leading or trailing spaces, - * and if they do not contain any of these characters: - * { } [ ] / \ : , = ; # and if they do not look like numbers - * and if they are not the reserved words true, - * false, or null.
  • - *
  • Values can be separated by ; (semicolon) as - * well as by , (comma).
  • - *
  • Numbers may have the - * 0x- (hex) prefix.
  • - *
- - * @author JSON.org - * @version 2011-08-25 - */ -public class JSONArray { - - - /** - * The arrayList where the JSONArray's properties are kept. - */ - private ArrayList myArrayList; - - - /** - * Construct an empty JSONArray. - */ - public JSONArray() { - this.myArrayList = new ArrayList(); - } - - /** - * Construct a JSONArray from a JSONTokener. - * @param x A JSONTokener - * @throws JSONException If there is a syntax error. - */ - public JSONArray(JSONTokener x) throws JSONException { - this(); - if (x.nextClean() != '[') { - throw x.syntaxError("A JSONArray text must start with '['"); - } - if (x.nextClean() != ']') { - x.back(); - for (;;) { - if (x.nextClean() == ',') { - x.back(); - this.myArrayList.add(JSONObject.NULL); - } else { - x.back(); - this.myArrayList.add(x.nextValue()); - } - switch (x.nextClean()) { - case ';': - case ',': - if (x.nextClean() == ']') { - return; - } - x.back(); - break; - case ']': - return; - default: - throw x.syntaxError("Expected a ',' or ']'"); - } - } - } - } - - - /** - * Construct a JSONArray from a source JSON text. - * @param source A string that begins with - * [ (left bracket) - * and ends with ] (right bracket). - * @throws JSONException If there is a syntax error. - */ - public JSONArray(String source) throws JSONException { - this(new JSONTokener(source)); - } - - - /** - * Construct a JSONArray from a Collection. - * @param collection A Collection. - */ - public JSONArray(Collection collection) { - this.myArrayList = new ArrayList(); - if (collection != null) { - Iterator iter = collection.iterator(); - while (iter.hasNext()) { - this.myArrayList.add(JSONObject.wrap(iter.next())); - } - } - } - - - /** - * Construct a JSONArray from an array - * @throws JSONException If not an array. - */ - public JSONArray(Object array) /*throws JSONException*/ { - this(); - if (array.getClass().isArray()) { - int length = Array.getLength(array); - for (int i = 0; i < length; i += 1) { - this.put(JSONObject.wrap(Array.get(array, i))); - } - } else { -// throw new JSONException( -//"JSONArray initial value should be a string or collection or array."); - System.out.println("JSONArray initial value should be a string or collection or array."); - } - } - - - /** - * Get the object value associated with an index. - * @param index - * The index must be between 0 and length() - 1. - * @return An object value. - * @throws JSONException If there is no value for the index. - */ - public Object get(int index) /*throws JSONException*/ { - Object object = opt(index); - if (object == null) { - //throw new JSONException("JSONArray[" + index + "] not found."); - System.out.println("JSONArray[" + index + "] not found."); - } - return object; - } - - - /** - * Get the boolean value associated with an index. - * The string values "true" and "false" are converted to boolean. - * - * @param index The index must be between 0 and length() - 1. - * @return The truth. - * @throws JSONException If there is no value for the index or if the - * value is not convertible to boolean. - */ - public boolean getBoolean(int index) throws JSONException { - Object object = get(index); - if (object.equals(Boolean.FALSE) || - (object instanceof String && - ((String)object).equalsIgnoreCase("false"))) { - return false; - } else if (object.equals(Boolean.TRUE) || - (object instanceof String && - ((String)object).equalsIgnoreCase("true"))) { - return true; - } - throw new JSONException("JSONArray[" + index + "] is not a boolean."); - } - - - /** - * Get the double value associated with an index. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - * @throws JSONException If the key is not found or if the value cannot - * be converted to a number. - */ - public double getDouble(int index) throws JSONException { - Object object = get(index); - try { - return object instanceof Number ? - ((Number)object).doubleValue() : - Double.parseDouble((String)object); - } catch (Exception e) { - throw new JSONException("JSONArray[" + index + - "] is not a number."); - } - } - - - /** - * Get the int value associated with an index. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - * @throws JSONException If the key is not found or if the value is not a number. - */ - public int getInt(int index) throws JSONException { - Object object = get(index); - try { - return object instanceof Number ? - ((Number)object).intValue() : - Integer.parseInt((String)object); - } catch (Exception e) { - throw new JSONException("JSONArray[" + index + - "] is not a number."); - } - } - - - /** - * Get the JSONArray associated with an index. - * @param index The index must be between 0 and length() - 1. - * @return A JSONArray value. - * @throws JSONException If there is no value for the index. or if the - * value is not a JSONArray - */ - public JSONArray getJSONArray(int index) throws JSONException { - Object object = get(index); - if (object instanceof JSONArray) { - return (JSONArray)object; - } - throw new JSONException("JSONArray[" + index + - "] is not a JSONArray."); - } - - - /** - * Get the JSONObject associated with an index. - * @param index subscript - * @return A JSONObject value. - * @throws JSONException If there is no value for the index or if the - * value is not a JSONObject - */ - public JSONObject getJSONObject(int index) /*throws JSONException*/ { - Object object = null; -// try { - object = get(index); -// } catch (JSONException e) { -// e.printStackTrace(); -// System.out.println( "JSONArray[" + index + "] is not a JSONObject." ); -// } - - if( object == null ) - return null; - - if (object instanceof JSONObject) { - return (JSONObject)object; - } -// throw new JSONException("JSONArray[" + index + -// "] is not a JSONObject."); - return null; - } - - - /** - * Get the long value associated with an index. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - * @throws JSONException If the key is not found or if the value cannot - * be converted to a number. - */ - public long getLong(int index) throws JSONException { - Object object = get(index); - try { - return object instanceof Number ? - ((Number)object).longValue() : - Long.parseLong((String)object); - } catch (Exception e) { - throw new JSONException("JSONArray[" + index + - "] is not a number."); - } - } - - - /** - * Get the string associated with an index. - * @param index The index must be between 0 and length() - 1. - * @return A string value. - * @throws JSONException If there is no string value for the index. - */ - public String getString(int index) throws JSONException { - Object object = get(index); - if (object instanceof String) { - return (String)object; - } - throw new JSONException("JSONArray[" + index + "] not a string."); - } - - - /** - * Determine if the value is null. - * @param index The index must be between 0 and length() - 1. - * @return true if the value at the index is null, or if there is no value. - */ - public boolean isNull(int index) { - return JSONObject.NULL.equals(opt(index)); - } - - - /** - * Make a string from the contents of this JSONArray. The - * separator string is inserted between each element. - * Warning: This method assumes that the data structure is acyclical. - * @param separator A string that will be inserted between the elements. - * @return a string. - * @throws JSONException If the array contains an invalid number. - */ - public String join(String separator) throws JSONException { - int len = length(); - StringBuffer sb = new StringBuffer(); - - for (int i = 0; i < len; i += 1) { - if (i > 0) { - sb.append(separator); - } - sb.append(JSONObject.valueToString(this.myArrayList.get(i))); - } - return sb.toString(); - } - - - /** - * Get the number of elements in the JSONArray, included nulls. - * - * @return The length (or size). - */ - public int length() { - return this.myArrayList.size(); - } - - - /** - * Get the optional object value associated with an index. - * @param index The index must be between 0 and length() - 1. - * @return An object value, or null if there is no - * object at that index. - */ - public Object opt(int index) { - return (index < 0 || index >= length()) ? - null : this.myArrayList.get(index); - } - - - /** - * Get the optional boolean value associated with an index. - * It returns false if there is no value at that index, - * or if the value is not Boolean.TRUE or the String "true". - * - * @param index The index must be between 0 and length() - 1. - * @return The truth. - */ - public boolean optBoolean(int index) { - return optBoolean(index, false); - } - - - /** - * Get the optional boolean value associated with an index. - * It returns the defaultValue if there is no value at that index or if - * it is not a Boolean or the String "true" or "false" (case insensitive). - * - * @param index The index must be between 0 and length() - 1. - * @param defaultValue A boolean default. - * @return The truth. - */ - public boolean optBoolean(int index, boolean defaultValue) { - try { - return getBoolean(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional double value associated with an index. - * NaN is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - */ - public double optDouble(int index) { - return optDouble(index, Double.NaN); - } - - - /** - * Get the optional double value associated with an index. - * The defaultValue is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index subscript - * @param defaultValue The default value. - * @return The value. - */ - public double optDouble(int index, double defaultValue) { - try { - return getDouble(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional int value associated with an index. - * Zero is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - */ - public int optInt(int index) { - return optInt(index, 0); - } - - - /** - * Get the optional int value associated with an index. - * The defaultValue is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * @param index The index must be between 0 and length() - 1. - * @param defaultValue The default value. - * @return The value. - */ - public int optInt(int index, int defaultValue) { - try { - return getInt(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional JSONArray associated with an index. - * @param index subscript - * @return A JSONArray value, or null if the index has no value, - * or if the value is not a JSONArray. - */ - public JSONArray optJSONArray(int index) { - Object o = opt(index); - return o instanceof JSONArray ? (JSONArray)o : null; - } - - - /** - * Get the optional JSONObject associated with an index. - * Null is returned if the key is not found, or null if the index has - * no value, or if the value is not a JSONObject. - * - * @param index The index must be between 0 and length() - 1. - * @return A JSONObject value. - */ - public JSONObject optJSONObject(int index) { - Object o = opt(index); - return o instanceof JSONObject ? (JSONObject)o : null; - } - - - /** - * Get the optional long value associated with an index. - * Zero is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * - * @param index The index must be between 0 and length() - 1. - * @return The value. - */ - public long optLong(int index) { - return optLong(index, 0); - } - - - /** - * Get the optional long value associated with an index. - * The defaultValue is returned if there is no value for the index, - * or if the value is not a number and cannot be converted to a number. - * @param index The index must be between 0 and length() - 1. - * @param defaultValue The default value. - * @return The value. - */ - public long optLong(int index, long defaultValue) { - try { - return getLong(index); - } catch (Exception e) { - return defaultValue; - } - } - - - /** - * Get the optional string value associated with an index. It returns an - * empty string if there is no value at that index. If the value - * is not a string and is not null, then it is coverted to a string. - * - * @param index The index must be between 0 and length() - 1. - * @return A String value. - */ - public String optString(int index) { - return optString(index, ""); - } - - - /** - * Get the optional string associated with an index. - * The defaultValue is returned if the key is not found. - * - * @param index The index must be between 0 and length() - 1. - * @param defaultValue The default value. - * @return A String value. - */ - public String optString(int index, String defaultValue) { - Object object = opt(index); - return JSONObject.NULL.equals(object) ? object.toString() : defaultValue; - } - - - /** - * Append a boolean value. This increases the array's length by one. - * - * @param value A boolean value. - * @return this. - */ - public JSONArray put(boolean value) { - put(value ? Boolean.TRUE : Boolean.FALSE); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONArray which is produced from a Collection. - * @param value A Collection value. - * @return this. - */ - public JSONArray put(Collection value) { - put(new JSONArray(value)); - return this; - } - - - /** - * Append a double value. This increases the array's length by one. - * - * @param value A double value. - * @throws JSONException if the value is not finite. - * @return this. - */ - public JSONArray put(double value) /*throws JSONException*/ { - Double d = new Double(value); - try { - JSONObject.testValidity(d); - } catch (JSONException e) { - e.printStackTrace(); - } - put(d); - return this; - } - - - /** - * Append an int value. This increases the array's length by one. - * - * @param value An int value. - * @return this. - */ - public JSONArray put(int value) { - put(new Integer(value)); - return this; - } - - - /** - * Append an long value. This increases the array's length by one. - * - * @param value A long value. - * @return this. - */ - public JSONArray put(long value) { - put(new Long(value)); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONObject which is produced from a Map. - * @param value A Map value. - * @return this. - */ - public JSONArray put(Map value) { - put(new JSONObject(value)); - return this; - } - - - /** - * Append an object value. This increases the array's length by one. - * @param value An object value. The value should be a - * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the - * JSONObject.NULL object. - * @return this. - */ - public JSONArray put(Object value) { - this.myArrayList.add(value); - return this; - } - - - /** - * Put or replace a boolean value in the JSONArray. If the index is greater - * than the length of the JSONArray, then null elements will be added as - * necessary to pad it out. - * @param index The subscript. - * @param value A boolean value. - * @return this. - * @throws JSONException If the index is negative. - */ - public JSONArray put(int index, boolean value) /*throws JSONException*/ { - put(index, value ? Boolean.TRUE : Boolean.FALSE); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONArray which is produced from a Collection. - * @param index The subscript. - * @param value A Collection value. - * @return this. - * @throws JSONException If the index is negative or if the value is - * not finite. - */ - public JSONArray put(int index, Collection value) /*throws JSONException*/ { - put(index, new JSONArray(value)); - return this; - } - - - /** - * Put or replace a double value. If the index is greater than the length of - * the JSONArray, then null elements will be added as necessary to pad - * it out. - * @param index The subscript. - * @param value A double value. - * @return this. - * @throws JSONException If the index is negative or if the value is - * not finite. - */ - public JSONArray put(int index, double value) /*throws JSONException*/ { - put(index, new Double(value)); - return this; - } - - - /** - * Put or replace an int value. If the index is greater than the length of - * the JSONArray, then null elements will be added as necessary to pad - * it out. - * @param index The subscript. - * @param value An int value. - * @return this. - * @throws JSONException If the index is negative. - */ - public JSONArray put(int index, int value) /*throws JSONException*/ { - put(index, new Integer(value)); - return this; - } - - - /** - * Put or replace a long value. If the index is greater than the length of - * the JSONArray, then null elements will be added as necessary to pad - * it out. - * @param index The subscript. - * @param value A long value. - * @return this. - * @throws JSONException If the index is negative. - */ - public JSONArray put(int index, long value) /*throws JSONException*/ { - put(index, new Long(value)); - return this; - } - - - /** - * Put a value in the JSONArray, where the value will be a - * JSONObject that is produced from a Map. - * @param index The subscript. - * @param value The Map value. - * @return this. - * @throws JSONException If the index is negative or if the the value is - * an invalid number. - */ - public JSONArray put(int index, Map value) /*throws JSONException*/ { - put(index, new JSONObject(value)); - return this; - } - - - /** - * Put or replace an object value in the JSONArray. If the index is greater - * than the length of the JSONArray, then null elements will be added as - * necessary to pad it out. - * @param index The subscript. - * @param value The value to put into the array. The value should be a - * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the - * JSONObject.NULL object. - * @return this. - * @throws JSONException If the index is negative or if the the value is - * an invalid number. - */ - public JSONArray put(int index, Object value) /*throws JSONException*/ { - try { - JSONObject.testValidity(value); - } catch (JSONException e) { - e.printStackTrace(); - } - - // No exceptionhandling in the sketch! - // if (index < 0) { - // throw new JSONException("JSONArray[" + index + "] not found."); - // } - if (index < length()) { - this.myArrayList.set(index, value); - } else { - while (index != length()) { - put(JSONObject.NULL); - } - put(value); - } - return this; - } - - - /** - * Remove an index and close the hole. - * @param index The index of the element to be removed. - * @return The value that was associated with the index, - * or null if there was no value. - */ - public Object remove(int index) { - Object o = opt(index); - this.myArrayList.remove(index); - return o; - } - - - /** - * Produce a JSONObject by combining a JSONArray of names with the values - * of this JSONArray. - * @param names A JSONArray containing a list of key strings. These will be - * paired with the values. - * @return A JSONObject, or null if there are no names or if this JSONArray - * has no values. - * @throws JSONException If any of the names are null. - */ - public JSONObject toJSONObject(JSONArray names) throws JSONException { - if (names == null || names.length() == 0 || length() == 0) { - return null; - } - JSONObject jo = new JSONObject(); - for (int i = 0; i < names.length(); i += 1) { - jo.put(names.getString(i), this.opt(i)); - } - return jo; - } - - - /** - * Make a JSON text of this JSONArray. For compactness, no - * unnecessary whitespace is added. If it is not possible to produce a - * syntactically correct JSON text then null will be returned instead. This - * could occur if the array contains an invalid number. - *

- * Warning: This method assumes that the data structure is acyclical. - * - * @return a printable, displayable, transmittable - * representation of the array. - */ - public String toString() { - try { - return '[' + join(",") + ']'; - } catch (Exception e) { - return null; - } - } - - - /** - * Make a prettyprinted JSON text of this JSONArray. - * Warning: This method assumes that the data structure is acyclical. - * @param indentFactor The number of spaces to add to each level of - * indentation. - * @return a printable, displayable, transmittable - * representation of the object, beginning - * with [ (left bracket) and ending - * with ] (right bracket). - * @throws JSONException - */ - public String toString(int indentFactor) throws JSONException { - return toString(indentFactor, 0); - } - - - /** - * Make a prettyprinted JSON text of this JSONArray. - * Warning: This method assumes that the data structure is acyclical. - * @param indentFactor The number of spaces to add to each level of - * indentation. - * @param indent The indention of the top level. - * @return a printable, displayable, transmittable - * representation of the array. - * @throws JSONException - */ - String toString(int indentFactor, int indent) /*throws JSONException*/ { - int len = length(); - if (len == 0) { - return "[]"; - } - int i; - StringBuffer sb = new StringBuffer("["); - if (len == 1) { - sb.append(JSONObject.valueToString(this.myArrayList.get(0), - indentFactor, indent)); - } else { - int newindent = indent + indentFactor; - sb.append('\n'); - for (i = 0; i < len; i += 1) { - if (i > 0) { - sb.append(",\n"); - } - for (int j = 0; j < newindent; j += 1) { - sb.append(' '); - } - sb.append(JSONObject.valueToString(this.myArrayList.get(i), - indentFactor, newindent)); - } - sb.append('\n'); - for (i = 0; i < indent; i += 1) { - sb.append(' '); - } - } - sb.append(']'); - return sb.toString(); - } - - - /** - * Write the contents of the JSONArray as JSON text to a writer. - * For compactness, no whitespace is added. - *

- * Warning: This method assumes that the data structure is acyclical. - * - * @return The writer. - * @throws JSONException - */ - public Writer write(Writer writer) /*throws JSONException*/ { - try { - boolean b = false; - int len = length(); - - writer.write('['); - - for (int i = 0; i < len; i += 1) { - if (b) { - writer.write(','); - } - Object v = this.myArrayList.get(i); - if (v instanceof JSONObject) { - ((JSONObject)v).write(writer); - } else if (v instanceof JSONArray) { - ((JSONArray)v).write(writer); - } else { - writer.write(JSONObject.valueToString(v)); - } - b = true; - } - writer.write(']'); - return writer; - } catch (IOException e) { -// throw new JSONException(e); - e.printStackTrace(); - } - return writer; - } +package org.json; + +/* +Copyright (c) 2002 JSON.org + +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 shall be used for Good, not Evil. + +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. +*/ + +import java.io.IOException; +import java.io.Writer; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; + +/** + * A JSONArray is an ordered sequence of values. Its external text form is a + * string wrapped in square brackets with commas separating the values. The + * internal form is an object having get and opt + * methods for accessing the values by index, and put methods for + * adding or replacing values. The values can be any of these types: + * Boolean, JSONArray, JSONObject, + * Number, String, or the + * JSONObject.NULL object. + *

+ * The constructor can convert a JSON text into a Java object. The + * toString method converts to JSON text. + *

+ * A get method returns a value if one can be found, and throws an + * exception if one cannot be found. An opt method returns a + * default value instead of throwing an exception, and so is useful for + * obtaining optional values. + *

+ * The generic get() and opt() methods return an + * object which you can cast or query for type. There are also typed + * get and opt methods that do type checking and type + * coercion for you. + *

+ * The texts produced by the toString methods strictly conform to + * JSON syntax rules. The constructors are more forgiving in the texts they will + * accept: + *

    + *
  • An extra , (comma) may appear just + * before the closing bracket.
  • + *
  • The null value will be inserted when there + * is , (comma) elision.
  • + *
  • Strings may be quoted with ' (single + * quote).
  • + *
  • Strings do not need to be quoted at all if they do not begin with a quote + * or single quote, and if they do not contain leading or trailing spaces, + * and if they do not contain any of these characters: + * { } [ ] / \ : , = ; # and if they do not look like numbers + * and if they are not the reserved words true, + * false, or null.
  • + *
  • Values can be separated by ; (semicolon) as + * well as by , (comma).
  • + *
  • Numbers may have the + * 0x- (hex) prefix.
  • + *
+ + * @author JSON.org + * @version 2011-08-25 + */ +public class JSONArr { + + + /** + * The arrayList where the JSONArray's properties are kept. + */ + private ArrayList myArrayList; + + + /** + * Construct an empty JSONArray. + */ + public JSONArr() { + this.myArrayList = new ArrayList(); + } + + /** + * Construct a JSONArray from a JSONTokener. + * @param x A JSONTokener + * @throws JSONException If there is a syntax error. + */ + public JSONArr(JSONTokener x) throws JSONException { + this(); + if (x.nextClean() != '[') { +// throw x.syntaxError("A JSONArray text must start with '['"); + } + if (x.nextClean() != ']') { + x.back(); + for (;;) { + if (x.nextClean() == ',') { + x.back(); + this.myArrayList.add(JSONObj.NULL); + } else { + x.back(); + this.myArrayList.add(x.nextValue()); + } + switch (x.nextClean()) { + case ';': + case ',': + if (x.nextClean() == ']') { + return; + } + x.back(); + break; + case ']': + return; + default: +// throw x.syntaxError("Expected a ',' or ']'"); + } + } + } + } + + + /** + * Construct a JSONArray from a source JSON text. + * @param source A string that begins with + * [ (left bracket) + * and ends with ] (right bracket). + * @throws JSONException If there is a syntax error. + */ + public JSONArr(String source) throws JSONException { + this(new JSONTokener(source)); + } + + + /** + * Construct a JSONArray from a Collection. + * @param collection A Collection. + */ + public JSONArr(Collection collection) { + this.myArrayList = new ArrayList(); + if (collection != null) { + Iterator iter = collection.iterator(); + while (iter.hasNext()) { + this.myArrayList.add(JSONObj.wrap(iter.next())); + } + } + } + + + /** + * Construct a JSONArray from an array + * @throws JSONException If not an array. + */ + public JSONArr(Object array) /*throws JSONException*/ { + this(); + if (array.getClass().isArray()) { + int length = Array.getLength(array); + for (int i = 0; i < length; i += 1) { + this.put(JSONObj.wrap(Array.get(array, i))); + } + } else { +// throw new JSONException( +//"JSONArray initial value should be a string or collection or array."); + System.out.println("JSONArray initial value should be a string or collection or array."); + } + } + + + /** + * Get the object value associated with an index. + * @param index + * The index must be between 0 and length() - 1. + * @return An object value. + * @throws JSONException If there is no value for the index. + */ + public Object get(int index) /*throws JSONException*/ { + Object object = opt(index); + if (object == null) { + //throw new JSONException("JSONArray[" + index + "] not found."); + System.out.println("JSONArray[" + index + "] not found."); + } + return object; + } + + + /** + * Get the boolean value associated with an index. + * The string values "true" and "false" are converted to boolean. + * + * @param index The index must be between 0 and length() - 1. + * @return The truth. + * @throws JSONException If there is no value for the index or if the + * value is not convertible to boolean. + */ + public boolean getBoolean(int index) throws JSONException { + Object object = get(index); + if (object.equals(Boolean.FALSE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("false"))) { + return false; + } else if (object.equals(Boolean.TRUE) || + (object instanceof String && + ((String)object).equalsIgnoreCase("true"))) { + return true; + } + throw new JSONException("JSONArray[" + index + "] is not a boolean."); + } + + + /** + * Get the double value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value cannot + * be converted to a number. + */ + public double getDouble(int index) throws JSONException { + Object object = get(index); + try { + return object instanceof Number ? + ((Number)object).doubleValue() : + Double.parseDouble((String)object); + } catch (Exception e) { + throw new JSONException("JSONArray[" + index + + "] is not a number."); + } + } + + + /** + * Get the int value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value is not a number. + */ + public int getInt(int index) throws JSONException { + Object object = get(index); + try { + return object instanceof Number ? + ((Number)object).intValue() : + Integer.parseInt((String)object); + } catch (Exception e) { + throw new JSONException("JSONArray[" + index + + "] is not a number."); + } + } + + + /** + * Get the JSONArray associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return A JSONArray value. + * @throws JSONException If there is no value for the index. or if the + * value is not a JSONArray + */ + public JSONArr getJSONArray(int index) throws JSONException { + Object object = get(index); + if (object instanceof JSONArr) { + return (JSONArr)object; + } + throw new JSONException("JSONArray[" + index + + "] is not a JSONArray."); + } + + + /** + * Get the JSONObject associated with an index. + * @param index subscript + * @return A JSONObject value. + * @throws JSONException If there is no value for the index or if the + * value is not a JSONObject + */ + public JSONObj getJSONObject(int index) /*throws JSONException*/ { + Object object = null; +// try { + object = get(index); +// } catch (JSONException e) { +// e.printStackTrace(); +// System.out.println( "JSONArray[" + index + "] is not a JSONObject." ); +// } + + if( object == null ) + return null; + + if (object instanceof JSONObj) { + return (JSONObj)object; + } +// throw new JSONException("JSONArray[" + index + +// "] is not a JSONObject."); + return null; + } + + + /** + * Get the long value associated with an index. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + * @throws JSONException If the key is not found or if the value cannot + * be converted to a number. + */ + public long getLong(int index) throws JSONException { + Object object = get(index); + try { + return object instanceof Number ? + ((Number)object).longValue() : + Long.parseLong((String)object); + } catch (Exception e) { + throw new JSONException("JSONArray[" + index + + "] is not a number."); + } + } + + + /** + * Get the string associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return A string value. + * @throws JSONException If there is no string value for the index. + */ + public String getString(int index) throws JSONException { + Object object = get(index); + if (object instanceof String) { + return (String)object; + } + throw new JSONException("JSONArray[" + index + "] not a string."); + } + + + /** + * Determine if the value is null. + * @param index The index must be between 0 and length() - 1. + * @return true if the value at the index is null, or if there is no value. + */ + public boolean isNull(int index) { + return JSONObj.NULL.equals(opt(index)); + } + + + /** + * Make a string from the contents of this JSONArray. The + * separator string is inserted between each element. + * Warning: This method assumes that the data structure is acyclical. + * @param separator A string that will be inserted between the elements. + * @return a string. + * @throws JSONException If the array contains an invalid number. + */ + public String join(String separator) throws JSONException { + int len = length(); + StringBuffer sb = new StringBuffer(); + + for (int i = 0; i < len; i += 1) { + if (i > 0) { + sb.append(separator); + } + sb.append(JSONObj.valueToString(this.myArrayList.get(i))); + } + return sb.toString(); + } + + + /** + * Get the number of elements in the JSONArray, included nulls. + * + * @return The length (or size). + */ + public int length() { + return this.myArrayList.size(); + } + + + /** + * Get the optional object value associated with an index. + * @param index The index must be between 0 and length() - 1. + * @return An object value, or null if there is no + * object at that index. + */ + public Object opt(int index) { + return (index < 0 || index >= length()) ? + null : this.myArrayList.get(index); + } + + + /** + * Get the optional boolean value associated with an index. + * It returns false if there is no value at that index, + * or if the value is not Boolean.TRUE or the String "true". + * + * @param index The index must be between 0 and length() - 1. + * @return The truth. + */ + public boolean optBoolean(int index) { + return optBoolean(index, false); + } + + + /** + * Get the optional boolean value associated with an index. + * It returns the defaultValue if there is no value at that index or if + * it is not a Boolean or the String "true" or "false" (case insensitive). + * + * @param index The index must be between 0 and length() - 1. + * @param defaultValue A boolean default. + * @return The truth. + */ + public boolean optBoolean(int index, boolean defaultValue) { + try { + return getBoolean(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional double value associated with an index. + * NaN is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + */ + public double optDouble(int index) { + return optDouble(index, Double.NaN); + } + + + /** + * Get the optional double value associated with an index. + * The defaultValue is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index subscript + * @param defaultValue The default value. + * @return The value. + */ + public double optDouble(int index, double defaultValue) { + try { + return getDouble(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional int value associated with an index. + * Zero is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + */ + public int optInt(int index) { + return optInt(index, 0); + } + + + /** + * Get the optional int value associated with an index. + * The defaultValue is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * @param index The index must be between 0 and length() - 1. + * @param defaultValue The default value. + * @return The value. + */ + public int optInt(int index, int defaultValue) { + try { + return getInt(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional JSONArray associated with an index. + * @param index subscript + * @return A JSONArray value, or null if the index has no value, + * or if the value is not a JSONArray. + */ + public JSONArr optJSONArray(int index) { + Object o = opt(index); + return o instanceof JSONArr ? (JSONArr)o : null; + } + + + /** + * Get the optional JSONObject associated with an index. + * Null is returned if the key is not found, or null if the index has + * no value, or if the value is not a JSONObject. + * + * @param index The index must be between 0 and length() - 1. + * @return A JSONObject value. + */ + public JSONObj optJSONObject(int index) { + Object o = opt(index); + return o instanceof JSONObj ? (JSONObj)o : null; + } + + + /** + * Get the optional long value associated with an index. + * Zero is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * + * @param index The index must be between 0 and length() - 1. + * @return The value. + */ + public long optLong(int index) { + return optLong(index, 0); + } + + + /** + * Get the optional long value associated with an index. + * The defaultValue is returned if there is no value for the index, + * or if the value is not a number and cannot be converted to a number. + * @param index The index must be between 0 and length() - 1. + * @param defaultValue The default value. + * @return The value. + */ + public long optLong(int index, long defaultValue) { + try { + return getLong(index); + } catch (Exception e) { + return defaultValue; + } + } + + + /** + * Get the optional string value associated with an index. It returns an + * empty string if there is no value at that index. If the value + * is not a string and is not null, then it is coverted to a string. + * + * @param index The index must be between 0 and length() - 1. + * @return A String value. + */ + public String optString(int index) { + return optString(index, ""); + } + + + /** + * Get the optional string associated with an index. + * The defaultValue is returned if the key is not found. + * + * @param index The index must be between 0 and length() - 1. + * @param defaultValue The default value. + * @return A String value. + */ + public String optString(int index, String defaultValue) { + Object object = opt(index); + return JSONObj.NULL.equals(object) ? object.toString() : defaultValue; + } + + + /** + * Append a boolean value. This increases the array's length by one. + * + * @param value A boolean value. + * @return this. + */ + public JSONArr put(boolean value) { + put(value ? Boolean.TRUE : Boolean.FALSE); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONArray which is produced from a Collection. + * @param value A Collection value. + * @return this. + */ + public JSONArr put(Collection value) { + put(new JSONArr(value)); + return this; + } + + + /** + * Append a double value. This increases the array's length by one. + * + * @param value A double value. + * @throws JSONException if the value is not finite. + * @return this. + */ + public JSONArr put(double value) /*throws JSONException*/ { + Double d = new Double(value); + try { + JSONObj.testValidity(d); + } catch (JSONException e) { + e.printStackTrace(); + } + put(d); + return this; + } + + + /** + * Append an int value. This increases the array's length by one. + * + * @param value An int value. + * @return this. + */ + public JSONArr put(int value) { + put(new Integer(value)); + return this; + } + + + /** + * Append an long value. This increases the array's length by one. + * + * @param value A long value. + * @return this. + */ + public JSONArr put(long value) { + put(new Long(value)); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONObject which is produced from a Map. + * @param value A Map value. + * @return this. + */ + public JSONArr put(Map value) { + put(new JSONObj(value)); + return this; + } + + + /** + * Append an object value. This increases the array's length by one. + * @param value An object value. The value should be a + * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + * JSONObject.NULL object. + * @return this. + */ + public JSONArr put(Object value) { + this.myArrayList.add(value); + return this; + } + + + /** + * Put or replace a boolean value in the JSONArray. If the index is greater + * than the length of the JSONArray, then null elements will be added as + * necessary to pad it out. + * @param index The subscript. + * @param value A boolean value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArr put(int index, boolean value) /*throws JSONException*/ { + put(index, value ? Boolean.TRUE : Boolean.FALSE); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONArray which is produced from a Collection. + * @param index The subscript. + * @param value A Collection value. + * @return this. + * @throws JSONException If the index is negative or if the value is + * not finite. + */ + public JSONArr put(int index, Collection value) /*throws JSONException*/ { + put(index, new JSONArr(value)); + return this; + } + + + /** + * Put or replace a double value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value A double value. + * @return this. + * @throws JSONException If the index is negative or if the value is + * not finite. + */ + public JSONArr put(int index, double value) /*throws JSONException*/ { + put(index, new Double(value)); + return this; + } + + + /** + * Put or replace an int value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value An int value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArr put(int index, int value) /*throws JSONException*/ { + put(index, new Integer(value)); + return this; + } + + + /** + * Put or replace a long value. If the index is greater than the length of + * the JSONArray, then null elements will be added as necessary to pad + * it out. + * @param index The subscript. + * @param value A long value. + * @return this. + * @throws JSONException If the index is negative. + */ + public JSONArr put(int index, long value) /*throws JSONException*/ { + put(index, new Long(value)); + return this; + } + + + /** + * Put a value in the JSONArray, where the value will be a + * JSONObject that is produced from a Map. + * @param index The subscript. + * @param value The Map value. + * @return this. + * @throws JSONException If the index is negative or if the the value is + * an invalid number. + */ + public JSONArr put(int index, Map value) /*throws JSONException*/ { + put(index, new JSONObj(value)); + return this; + } + + + /** + * Put or replace an object value in the JSONArray. If the index is greater + * than the length of the JSONArray, then null elements will be added as + * necessary to pad it out. + * @param index The subscript. + * @param value The value to put into the array. The value should be a + * Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the + * JSONObject.NULL object. + * @return this. + * @throws JSONException If the index is negative or if the the value is + * an invalid number. + */ + public JSONArr put(int index, Object value) /*throws JSONException*/ { + try { + JSONObj.testValidity(value); + } catch (JSONException e) { + e.printStackTrace(); + } + + // No exceptionhandling in the sketch! + // if (index < 0) { + // throw new JSONException("JSONArray[" + index + "] not found."); + // } + if (index < length()) { + this.myArrayList.set(index, value); + } else { + while (index != length()) { + put(JSONObj.NULL); + } + put(value); + } + return this; + } + + + /** + * Remove an index and close the hole. + * @param index The index of the element to be removed. + * @return The value that was associated with the index, + * or null if there was no value. + */ + public Object remove(int index) { + Object o = opt(index); + this.myArrayList.remove(index); + return o; + } + + + /** + * Produce a JSONObject by combining a JSONArray of names with the values + * of this JSONArray. + * @param names A JSONArray containing a list of key strings. These will be + * paired with the values. + * @return A JSONObject, or null if there are no names or if this JSONArray + * has no values. + * @throws JSONException If any of the names are null. + */ + public JSONObj toJSONObject(JSONArr names) throws JSONException { + if (names == null || names.length() == 0 || length() == 0) { + return null; + } + JSONObj jo = new JSONObj(); + for (int i = 0; i < names.length(); i += 1) { + jo.put(names.getString(i), this.opt(i)); + } + return jo; + } + + + /** + * Make a JSON text of this JSONArray. For compactness, no + * unnecessary whitespace is added. If it is not possible to produce a + * syntactically correct JSON text then null will be returned instead. This + * could occur if the array contains an invalid number. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return a printable, displayable, transmittable + * representation of the array. + */ + public String toString() { + try { + return '[' + join(",") + ']'; + } catch (Exception e) { + return null; + } + } + + + /** + * Make a prettyprinted JSON text of this JSONArray. + * Warning: This method assumes that the data structure is acyclical. + * @param indentFactor The number of spaces to add to each level of + * indentation. + * @return a printable, displayable, transmittable + * representation of the object, beginning + * with [ (left bracket) and ending + * with ] (right bracket). + * @throws JSONException + */ + public String toString(int indentFactor) throws JSONException { + return toString(indentFactor, 0); + } + + + /** + * Make a prettyprinted JSON text of this JSONArray. + * Warning: This method assumes that the data structure is acyclical. + * @param indentFactor The number of spaces to add to each level of + * indentation. + * @param indent The indention of the top level. + * @return a printable, displayable, transmittable + * representation of the array. + * @throws JSONException + */ + String toString(int indentFactor, int indent) /*throws JSONException*/ { + int len = length(); + if (len == 0) { + return "[]"; + } + int i; + StringBuffer sb = new StringBuffer("["); + if (len == 1) { + sb.append(JSONObj.valueToString(this.myArrayList.get(0), + indentFactor, indent)); + } else { + int newindent = indent + indentFactor; + sb.append('\n'); + for (i = 0; i < len; i += 1) { + if (i > 0) { + sb.append(",\n"); + } + for (int j = 0; j < newindent; j += 1) { + sb.append(' '); + } + sb.append(JSONObj.valueToString(this.myArrayList.get(i), + indentFactor, newindent)); + } + sb.append('\n'); + for (i = 0; i < indent; i += 1) { + sb.append(' '); + } + } + sb.append(']'); + return sb.toString(); + } + + + /** + * Write the contents of the JSONArray as JSON text to a writer. + * For compactness, no whitespace is added. + *

+ * Warning: This method assumes that the data structure is acyclical. + * + * @return The writer. + * @throws JSONException + */ + public Writer write(Writer writer) /*throws JSONException*/ { + try { + boolean b = false; + int len = length(); + + writer.write('['); + + for (int i = 0; i < len; i += 1) { + if (b) { + writer.write(','); + } + Object v = this.myArrayList.get(i); + if (v instanceof JSONObj) { + ((JSONObj)v).write(writer); + } else if (v instanceof JSONArr) { + ((JSONArr)v).write(writer); + } else { + writer.write(JSONObj.valueToString(v)); + } + b = true; + } + writer.write(']'); + return writer; + } catch (IOException e) { +// throw new JSONException(e); + e.printStackTrace(); + } + return writer; + } } \ No newline at end of file diff --git a/src/org/json/JSONML.java b/src/org/json/JSONML.java index 936d16e15..e25f265a3 100644 --- a/src/org/json/JSONML.java +++ b/src/org/json/JSONML.java @@ -48,14 +48,14 @@ public class JSONML { private static Object parse( XMLTokener x, boolean arrayForm, - JSONArray ja + JSONArr ja ) throws JSONException { String attribute; char c; String closeTag = null; int i; - JSONArray newja = null; - JSONObject newjo = null; + JSONArr newja = null; + JSONObj newjo = null; Object token; String tagName = null; @@ -67,7 +67,7 @@ private static Object parse( while (true) { if (!x.more()) { - throw x.syntaxError("Bad XML"); +// throw x.syntaxError("Bad XML"); } token = x.nextContent(); if (token == XML.LT) { @@ -84,7 +84,7 @@ private static Object parse( token + "'."); } if (x.nextToken() != XML.GT) { - throw x.syntaxError("Misshaped close tag"); +// throw x.syntaxError("Misshaped close tag"); } return token; } else if (token == XML.BANG) { @@ -104,14 +104,14 @@ private static Object parse( ja.put(x.nextCDATA()); } } else { - throw x.syntaxError("Expected 'CDATA['"); +// throw x.syntaxError("Expected 'CDATA['"); } } else { i = 1; do { token = x.nextMeta(); if (token == null) { - throw x.syntaxError("Missing '>' after '' after '"); } else { - throw x.syntaxError("Misshaped tag"); +// throw x.syntaxError("Misshaped tag"); } // Open tag < } else { if (!(token instanceof String)) { - throw x.syntaxError("Bad tagName '" + token + "'."); +// throw x.syntaxError("Bad tagName '" + token + "'."); } tagName = (String)token; - newja = new JSONArray(); - newjo = new JSONObject(); + newja = new JSONArr(); + newjo = new JSONObj(); if (arrayForm) { newja.put(tagName); if (ja != null) { @@ -154,7 +154,7 @@ private static Object parse( token = x.nextToken(); } if (token == null) { - throw x.syntaxError("Misshaped tag"); +// throw x.syntaxError("Misshaped tag"); } if (!(token instanceof String)) { break; @@ -164,13 +164,13 @@ private static Object parse( attribute = (String)token; if (!arrayForm && (attribute == "tagName" || attribute == "childNode")) { - throw x.syntaxError("Reserved attribute."); +// throw x.syntaxError("Reserved attribute."); } token = x.nextToken(); if (token == XML.EQ) { token = x.nextToken(); if (!(token instanceof String)) { - throw x.syntaxError("Missing value"); +// throw x.syntaxError("Missing value"); } newjo.accumulate(attribute, XML.stringToValue((String)token)); token = null; @@ -186,7 +186,7 @@ private static Object parse( if (token == XML.SLASH) { if (x.nextToken() != XML.GT) { - throw x.syntaxError("Misshaped tag"); +// throw x.syntaxError("Misshaped tag"); } if (ja == null) { if (arrayForm) { @@ -200,13 +200,13 @@ private static Object parse( } else { if (token != XML.GT) { - throw x.syntaxError("Misshaped tag"); +// throw x.syntaxError("Misshaped tag"); } closeTag = (String)parse(x, arrayForm, newja); if (closeTag != null) { if (!closeTag.equals(tagName)) { - throw x.syntaxError("Mismatched '" + tagName + - "' and '" + closeTag + "'"); +// throw x.syntaxError("Mismatched '" + tagName + +// "' and '" + closeTag + "'"); } tagName = null; if (!arrayForm && newja.length() > 0) { @@ -244,7 +244,7 @@ private static Object parse( * @return A JSONArray containing the structured data from the XML string. * @throws JSONException */ - public static JSONArray toJSONArray(String string) throws JSONException { + public static JSONArr toJSONArray(String string) throws JSONException { return toJSONArray(new XMLTokener(string)); } @@ -261,8 +261,8 @@ public static JSONArray toJSONArray(String string) throws JSONException { * @return A JSONArray containing the structured data from the XML string. * @throws JSONException */ - public static JSONArray toJSONArray(XMLTokener x) throws JSONException { - return (JSONArray)parse(x, true, null); + public static JSONArr toJSONArray(XMLTokener x) throws JSONException { + return (JSONArr)parse(x, true, null); } @@ -279,8 +279,8 @@ public static JSONArray toJSONArray(XMLTokener x) throws JSONException { * @return A JSONObject containing the structured data from the XML string. * @throws JSONException */ - public static JSONObject toJSONObject(XMLTokener x) throws JSONException { - return (JSONObject)parse(x, false, null); + public static JSONObj toJSONObject(XMLTokener x) throws JSONException { + return (JSONObj)parse(x, false, null); } @@ -297,7 +297,7 @@ public static JSONObject toJSONObject(XMLTokener x) throws JSONException { * @return A JSONObject containing the structured data from the XML string. * @throws JSONException */ - public static JSONObject toJSONObject(String string) throws JSONException { + public static JSONObj toJSONObject(String string) throws JSONException { return toJSONObject(new XMLTokener(string)); } @@ -308,9 +308,9 @@ public static JSONObject toJSONObject(String string) throws JSONException { * @return An XML string. * @throws JSONException */ - public static String toString(JSONArray ja) throws JSONException { + public static String toString(JSONArr ja) throws JSONException { int i; - JSONObject jo; + JSONObj jo; String key; Iterator keys; int length; @@ -328,9 +328,9 @@ public static String toString(JSONArray ja) throws JSONException { sb.append(tagName); object = ja.opt(1); - if (object instanceof JSONObject) { + if (object instanceof JSONObj) { i = 2; - jo = (JSONObject)object; + jo = (JSONObj)object; // Emit the attributes @@ -366,10 +366,10 @@ public static String toString(JSONArray ja) throws JSONException { if (object != null) { if (object instanceof String) { sb.append(XML.escape(object.toString())); - } else if (object instanceof JSONObject) { - sb.append(toString((JSONObject)object)); - } else if (object instanceof JSONArray) { - sb.append(toString((JSONArray)object)); + } else if (object instanceof JSONObj) { + sb.append(toString((JSONObj)object)); + } else if (object instanceof JSONArr) { + sb.append(toString((JSONArr)object)); } } } while (i < length); @@ -390,10 +390,10 @@ public static String toString(JSONArray ja) throws JSONException { * @return An XML string. * @throws JSONException */ - public static String toString(JSONObject jo) throws JSONException { + public static String toString(JSONObj jo) throws JSONException { StringBuffer sb = new StringBuffer(); int i; - JSONArray ja; + JSONArr ja; String key; Iterator keys; int length; @@ -445,10 +445,10 @@ public static String toString(JSONObject jo) throws JSONException { if (object != null) { if (object instanceof String) { sb.append(XML.escape(object.toString())); - } else if (object instanceof JSONObject) { - sb.append(toString((JSONObject)object)); - } else if (object instanceof JSONArray) { - sb.append(toString((JSONArray)object)); + } else if (object instanceof JSONObj) { + sb.append(toString((JSONObj)object)); + } else if (object instanceof JSONArr) { + sb.append(toString((JSONArr)object)); } else { sb.append(object.toString()); } diff --git a/src/org/json/JSONObject.java b/src/org/json/JSONObj.java similarity index 91% rename from src/org/json/JSONObject.java rename to src/org/json/JSONObj.java index 677b0e793..d3e00fb87 100644 --- a/src/org/json/JSONObject.java +++ b/src/org/json/JSONObj.java @@ -92,7 +92,7 @@ of this software and associated documentation files (the "Software"), to deal * @author JSON.org * @version 2011-10-16 */ -public class JSONObject { +public class JSONObj { /** * JSONObject.NULL is equivalent to the value that JavaScript calls null, @@ -149,7 +149,7 @@ public String toString() { /** * Construct an empty JSONObject. */ - public JSONObject() { + public JSONObj() { this.map = new HashMap(); } @@ -167,7 +167,7 @@ public JSONObject() { * If a value is a non-finite number or if a name is * duplicated. */ - public JSONObject(JSONObject jo, String[] names) { + public JSONObj(JSONObj jo, String[] names) { this(); for (int i = 0; i < names.length; i += 1) { try { @@ -186,25 +186,25 @@ public JSONObject(JSONObject jo, String[] names) { * If there is a syntax error in the source string or a * duplicated key. */ - public JSONObject(JSONTokener x) /* throws JSONException */{ + public JSONObj(JSONTokener x) /* throws JSONException */{ this(); char c = 0; String key = null; - try { +// try { if (x.nextClean() != '{') { System.out.println("A JSONObject text must begin with '{'"); // throw x.syntaxError("A JSONObject text must begin with '{'"); } - } catch (JSONException e2) { - e2.printStackTrace(); - } +// } catch (JSONException e2) { +// e2.printStackTrace(); +// } for (;;) { - try { +// try { c = x.nextClean(); - } catch (JSONException e1) { - e1.printStackTrace(); - } +// } catch (JSONException e1) { +// e1.printStackTrace(); +// } switch (c) { case 0: System.out.println("A JSONObject text must end with '}'"); @@ -212,43 +212,43 @@ public JSONObject(JSONTokener x) /* throws JSONException */{ case '}': return; default: - try { +// try { x.back(); key = x.nextValue().toString(); - } catch (JSONException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } +// } catch (JSONException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } } // The key is followed by ':'. We will also tolerate '=' or '=>'. - try { +// try { c = x.nextClean(); - } catch (JSONException e) { - e.printStackTrace(); - } +// } catch (JSONException e) { +// e.printStackTrace(); +// } if (c == '=') { - try { +// try { if (x.next() != '>') { x.back(); } - } catch (JSONException e) { - e.printStackTrace(); - } +// } catch (JSONException e) { +// e.printStackTrace(); +// } } else if (c != ':') { System.out.println("JSON Error: Expected a ':' after a key"); // throw x.syntaxError("Expected a ':' after a key"); } - try { +// try { putOnce(key, x.nextValue()); - } catch (JSONException e) { - e.printStackTrace(); - } +// } catch (JSONException e) { +// e.printStackTrace(); +// } // Pairs are separated by ','. We will also tolerate ';'. - try { +// try { switch (x.nextClean()) { case ';': case ',': @@ -259,12 +259,12 @@ public JSONObject(JSONTokener x) /* throws JSONException */{ break; case '}': return; - default: - throw x.syntaxError("Expected a ',' or '}'"); +// default: +// throw x.syntaxError("Expected a ',' or '}'"); } - } catch (JSONException e) { - e.printStackTrace(); - } +// } catch (JSONException e) { +// e.printStackTrace(); +// } } } @@ -276,7 +276,7 @@ public JSONObject(JSONTokener x) /* throws JSONException */{ * the JSONObject. * @throws JSONException */ - public JSONObject(Map map) { + public JSONObj(Map map) { this.map = new HashMap(); if (map != null) { Iterator i = map.entrySet().iterator(); @@ -311,7 +311,7 @@ public JSONObject(Map map) { * An object that has getter methods that should be used to make * a JSONObject. */ - public JSONObject(Object bean) { + public JSONObj(Object bean) { this(); populateMap(bean); } @@ -330,7 +330,7 @@ public JSONObject(Object bean) { * An array of strings, the names of the fields to be obtained * from the object. */ - public JSONObject(Object object, String names[]) { + public JSONObj(Object object, String names[]) { this(); Class c = object.getClass(); for (int i = 0; i < names.length; i += 1) { @@ -354,7 +354,7 @@ public JSONObject(Object object, String names[]) { * If there is a syntax error in the source string or a * duplicated key. */ - public JSONObject(String source) /* throws JSONException */{ + public JSONObj(String source) /* throws JSONException */{ this(new JSONTokener(source)); } @@ -368,7 +368,7 @@ public JSONObject(String source) /* throws JSONException */{ * @throws JSONException * If any JSONExceptions are detected. */ - public JSONObject(String baseName, Locale locale) /*throws JSONException*/ { + public JSONObj(String baseName, Locale locale) /*throws JSONException*/ { this(); ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, Thread.currentThread().getContextClassLoader()); @@ -388,12 +388,12 @@ public JSONObject(String baseName, Locale locale) /*throws JSONException*/ { String[] path = ((String) key).split("\\."); int last = path.length - 1; - JSONObject target = this; + JSONObj target = this; for (int i = 0; i < last; i += 1) { String segment = path[i]; - JSONObject nextTarget = target.optJSONObject(segment); + JSONObj nextTarget = target.optJSONObject(segment); if (nextTarget == null) { - nextTarget = new JSONObject(); + nextTarget = new JSONObj(); target.put(segment, nextTarget); } target = nextTarget; @@ -422,7 +422,7 @@ public JSONObject(String baseName, Locale locale) /*throws JSONException*/ { * @throws JSONException * If the value is an invalid number or if the key is null. */ - public JSONObject accumulate(String key, Object value) /*throws JSONException*/ { + public JSONObj accumulate(String key, Object value) /*throws JSONException*/ { try { testValidity(value); } catch (JSONException e) { @@ -430,12 +430,12 @@ public JSONObject accumulate(String key, Object value) /*throws JSONException*/ } Object object = opt(key); if (object == null) { - put(key, value instanceof JSONArray ? new JSONArray().put(value) + put(key, value instanceof JSONArr ? new JSONArr().put(value) : value); - } else if (object instanceof JSONArray) { - ((JSONArray) object).put(value); + } else if (object instanceof JSONArr) { + ((JSONArr) object).put(value); } else { - put(key, new JSONArray().put(object).put(value)); + put(key, new JSONArr().put(object).put(value)); } return this; } @@ -455,7 +455,7 @@ public JSONObject accumulate(String key, Object value) /*throws JSONException*/ * If the key is null or if the current value associated with * the key is not a JSONArray. */ - public JSONObject append(String key, Object value) /*throws JSONException*/ { + public JSONObj append(String key, Object value) /*throws JSONException*/ { try { testValidity(value); } catch (JSONException e) { @@ -465,9 +465,9 @@ public JSONObject append(String key, Object value) /*throws JSONException*/ { } Object object = opt(key); if (object == null) { - put(key, new JSONArray().put(value)); - } else if (object instanceof JSONArray) { - put(key, ((JSONArray) object).put(value)); + put(key, new JSONArr().put(value)); + } else if (object instanceof JSONArr) { + put(key, ((JSONArr) object).put(value)); } else { // throw new JSONException("JSONObject[" + key // + "] is not a JSONArray."); @@ -613,10 +613,10 @@ public int getInt(String key) /*throws JSONException*/ { * @throws JSONException * if the key is not found or if the value is not a JSONArray. */ - public JSONArray getJSONArray(String key) /*throws JSONException*/ { + public JSONArr getJSONArray(String key) /*throws JSONException*/ { Object object = get(key); - if (object instanceof JSONArray) { - return (JSONArray) object; + if (object instanceof JSONArr) { + return (JSONArr) object; } // throw new JSONException("JSONObject[" + quote(key) // + "] is not a JSONArray."); @@ -634,10 +634,10 @@ public JSONArray getJSONArray(String key) /*throws JSONException*/ { * @throws JSONException * if the key is not found or if the value is not a JSONObject. */ - public JSONObject getJSONObject(String key) { + public JSONObj getJSONObject(String key) { Object object = get(key); - if (object instanceof JSONObject) { - return (JSONObject) object; + if (object instanceof JSONObj) { + return (JSONObj) object; } // throw new JSONException("JSONObject[" + quote(key) // + "] is not a JSONObject."); @@ -673,7 +673,7 @@ public long getLong(String key) /*throws JSONException*/ { * * @return An array of field names, or null if there are no names. */ - public static String[] getNames(JSONObject jo) { + public static String[] getNames(JSONObj jo) { int length = jo.length(); if (length == 0) { return null; @@ -752,7 +752,7 @@ public boolean has(String key) { * If there is already a property with this name that is not an * Integer, Long, Double, or Float. */ - public JSONObject increment(String key) /*throws JSONException*/ { + public JSONObj increment(String key) /*throws JSONException*/ { Object value = opt(key); if (value == null) { put(key, 1); @@ -781,7 +781,7 @@ public JSONObject increment(String key) /*throws JSONException*/ { * is the JSONObject.NULL object. */ public boolean isNull(String key) { - return JSONObject.NULL.equals(opt(key)); + return JSONObj.NULL.equals(opt(key)); } /** @@ -809,8 +809,8 @@ public int length() { * @return A JSONArray containing the key strings, or null if the JSONObject * is empty. */ - public JSONArray names() { - JSONArray ja = new JSONArray(); + public JSONArr names() { + JSONArr ja = new JSONArr(); Iterator keys = this.keys(); while (keys.hasNext()) { ja.put(keys.next()); @@ -968,9 +968,9 @@ public int optInt(String key, int defaultValue) { * A key string. * @return A JSONArray which is the value. */ - public JSONArray optJSONArray(String key) { + public JSONArr optJSONArray(String key) { Object o = opt(key); - return o instanceof JSONArray ? (JSONArray) o : null; + return o instanceof JSONArr ? (JSONArr) o : null; } /** @@ -981,9 +981,9 @@ public JSONArray optJSONArray(String key) { * A key string. * @return A JSONObject which is the value. */ - public JSONObject optJSONObject(String key) { + public JSONObj optJSONObject(String key) { Object object = opt(key); - return object instanceof JSONObject ? (JSONObject) object : null; + return object instanceof JSONObj ? (JSONObj) object : null; } /** @@ -1103,7 +1103,7 @@ private void populateMap(Object bean) { * @throws JSONException * If the key is null. */ - public JSONObject put(String key, boolean value) /* throws JSONException */{ + public JSONObj put(String key, boolean value) /* throws JSONException */{ put(key, value ? Boolean.TRUE : Boolean.FALSE); return this; } @@ -1119,8 +1119,8 @@ public JSONObject put(String key, boolean value) /* throws JSONException */{ * @return this. * @throws JSONException */ - public JSONObject put(String key, Collection value) /* throws JSONException */{ - put(key, new JSONArray(value)); + public JSONObj put(String key, Collection value) /* throws JSONException */{ + put(key, new JSONArr(value)); return this; } @@ -1135,7 +1135,7 @@ public JSONObject put(String key, Collection value) /* throws JSONException */{ * @throws JSONException * If the key is null or if the number is invalid. */ - public JSONObject put(String key, double value) /* throws JSONException */{ + public JSONObj put(String key, double value) /* throws JSONException */{ put(key, new Double(value)); return this; } @@ -1151,7 +1151,7 @@ public JSONObject put(String key, double value) /* throws JSONException */{ * @throws JSONException * If the key is null. */ - public JSONObject put(String key, int value) /* throws JSONException */{ + public JSONObj put(String key, int value) /* throws JSONException */{ put(key, new Integer(value)); return this; } @@ -1167,7 +1167,7 @@ public JSONObject put(String key, int value) /* throws JSONException */{ * @throws JSONException * If the key is null. */ - public JSONObject put(String key, long value) /* throws JSONException */{ + public JSONObj put(String key, long value) /* throws JSONException */{ put(key, new Long(value)); return this; } @@ -1183,8 +1183,8 @@ public JSONObject put(String key, long value) /* throws JSONException */{ * @return this. * @throws JSONException */ - public JSONObject put(String key, Map value) /* throws JSONException */{ - put(key, new JSONObject(value)); + public JSONObj put(String key, Map value) /* throws JSONException */{ + put(key, new JSONObj(value)); return this; } @@ -1202,7 +1202,7 @@ public JSONObject put(String key, Map value) /* throws JSONException */{ * @throws JSONException * If the value is non-finite number or if the key is null. */ - public JSONObject put(String key, Object value) { + public JSONObj put(String key, Object value) { // In processing, we want to avoid forcing the user to Exception // handling! // if (key == null) { @@ -1238,7 +1238,7 @@ public JSONObject put(String key, Object value) { * @throws JSONException * if the key is a duplicate */ - public JSONObject putOnce(String key, Object value) /*throws JSONException*/ { + public JSONObj putOnce(String key, Object value) /*throws JSONException*/ { if (key != null && value != null) { if (opt(key) != null) { // throw new JSONException("Duplicate key \"" + key + "\""); @@ -1263,7 +1263,7 @@ public JSONObject putOnce(String key, Object value) /*throws JSONException*/ { * @throws JSONException * If the value is a non-finite number. */ - public JSONObject putOpt(String key, Object value) /*throws JSONException*/ { + public JSONObj putOpt(String key, Object value) /*throws JSONException*/ { if (key != null && value != null) { put(key, value); } @@ -1369,7 +1369,7 @@ public static Object stringToValue(String string) { return Boolean.FALSE; } if (string.equalsIgnoreCase("null")) { - return JSONObject.NULL; + return JSONObj.NULL; } /* @@ -1446,11 +1446,11 @@ public static void testValidity(Object o) throws JSONException { * @throws JSONException * If any of the values are non-finite numbers. */ - public JSONArray toJSONArray(JSONArray names) throws JSONException { + public JSONArr toJSONArray(JSONArr names) throws JSONException { if (names == null || names.length() == 0) { return null; } - JSONArray ja = new JSONArray(); + JSONArr ja = new JSONArr(); for (int i = 0; i < names.length(); i += 1) { ja.put(this.opt(names.getString(i))); } @@ -1611,18 +1611,18 @@ public static String valueToString(Object value) /*throws JSONException*/ { if (value instanceof Number) { return numberToString((Number) value); } - if (value instanceof Boolean || value instanceof JSONObject - || value instanceof JSONArray) { + if (value instanceof Boolean || value instanceof JSONObj + || value instanceof JSONArr) { return value.toString(); } if (value instanceof Map) { - return new JSONObject((Map) value).toString(); + return new JSONObj((Map) value).toString(); } if (value instanceof Collection) { - return new JSONArray((Collection) value).toString(); + return new JSONArr((Collection) value).toString(); } if (value.getClass().isArray()) { - return new JSONArray(value).toString(); + return new JSONArr(value).toString(); } return quote(value.toString()); } @@ -1665,21 +1665,21 @@ static String valueToString(Object value, int indentFactor, int indent) if (value instanceof Boolean) { return value.toString(); } - if (value instanceof JSONObject) { - return ((JSONObject) value).toString(indentFactor, indent); + if (value instanceof JSONObj) { + return ((JSONObj) value).toString(indentFactor, indent); } - if (value instanceof JSONArray) { - return ((JSONArray) value).toString(indentFactor, indent); + if (value instanceof JSONArr) { + return ((JSONArr) value).toString(indentFactor, indent); } if (value instanceof Map) { - return new JSONObject((Map) value).toString(indentFactor, indent); + return new JSONObj((Map) value).toString(indentFactor, indent); } if (value instanceof Collection) { - return new JSONArray((Collection) value).toString(indentFactor, + return new JSONArr((Collection) value).toString(indentFactor, indent); } if (value.getClass().isArray()) { - return new JSONArray(value).toString(indentFactor, indent); + return new JSONArr(value).toString(indentFactor, indent); } return quote(value.toString()); } @@ -1701,7 +1701,7 @@ public static Object wrap(Object object) { if (object == null) { return NULL; } - if (object instanceof JSONObject || object instanceof JSONArray + if (object instanceof JSONObj || object instanceof JSONArr || NULL.equals(object) || object instanceof JSONString || object instanceof Byte || object instanceof Character || object instanceof Short || object instanceof Integer @@ -1712,13 +1712,13 @@ public static Object wrap(Object object) { } if (object instanceof Collection) { - return new JSONArray((Collection) object); + return new JSONArr((Collection) object); } if (object.getClass().isArray()) { - return new JSONArray(object); + return new JSONArr(object); } if (object instanceof Map) { - return new JSONObject((Map) object); + return new JSONObj((Map) object); } Package objectPackage = object.getClass().getPackage(); String objectPackageName = objectPackage != null ? objectPackage @@ -1728,7 +1728,7 @@ public static Object wrap(Object object) { || object.getClass().getClassLoader() == null) { return object.toString(); } - return new JSONObject(object); + return new JSONObj(object); } catch (Exception exception) { return null; } @@ -1757,10 +1757,10 @@ public Writer write(Writer writer) /*throws JSONException*/ { writer.write(quote(key.toString())); writer.write(':'); Object value = this.map.get(key); - if (value instanceof JSONObject) { - ((JSONObject) value).write(writer); - } else if (value instanceof JSONArray) { - ((JSONArray) value).write(writer); + if (value instanceof JSONObj) { + ((JSONObj) value).write(writer); + } else if (value instanceof JSONArr) { + ((JSONArr) value).write(writer); } else { writer.write(valueToString(value)); } diff --git a/src/org/json/JSONTokener.java b/src/org/json/JSONTokener.java index f7d8bdff9..5a959ad84 100644 --- a/src/org/json/JSONTokener.java +++ b/src/org/json/JSONTokener.java @@ -7,6 +7,9 @@ import java.io.Reader; import java.io.StringReader; +import org.json.JSON.JSONArray; +import org.json.JSON.JSONObject; + /* Copyright (c) 2002 JSON.org @@ -29,417 +32,407 @@ of this software and associated documentation files (the "Software"), to deal 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. -*/ + */ /** * A JSONTokener takes a source string and extracts characters and tokens from * it. It is used by the JSONObject and JSONArray constructors to parse * JSON source strings. * @author JSON.org - * @version 2010-12-24 + * @version 2012-02-16 */ public class JSONTokener { - private int character; - private boolean eof; - private int index; - private int line; - private char previous; - private Reader reader; - private boolean usePrevious; - - - /** - * Construct a JSONTokener from a Reader. - * - * @param reader A reader. - */ - public JSONTokener(Reader reader) { - this.reader = reader.markSupported() ? - reader : new BufferedReader(reader); - this.eof = false; - this.usePrevious = false; - this.previous = 0; - this.index = 0; - this.character = 1; - this.line = 1; + private long character; + private boolean eof; + private long index; + private long line; + private char previous; + private Reader reader; + private boolean usePrevious; + + + /** + * Construct a JSONTokener from a Reader. + * + * @param reader A reader. + */ + public JSONTokener(Reader reader) { + this.reader = reader.markSupported() + ? reader + : new BufferedReader(reader); + this.eof = false; + this.usePrevious = false; + this.previous = 0; + this.index = 0; + this.character = 1; + this.line = 1; + } + + + /** + * Construct a JSONTokener from an InputStream. + */ + public JSONTokener(InputStream inputStream) { + this(new InputStreamReader(inputStream)); + } + + + /** + * Construct a JSONTokener from a string. + * + * @param s A source string. + */ + public JSONTokener(String s) { + this(new StringReader(s)); + } + + + /** + * Back up one character. This provides a sort of lookahead capability, + * so that you can test for a digit or letter before attempting to parse + * the next number or identifier. + */ + public void back() { + if (this.usePrevious || this.index <= 0) { + throw new RuntimeException("Stepping back two steps is not supported"); } - - - /** - * Construct a JSONTokener from an InputStream. - */ - public JSONTokener(InputStream inputStream) throws JSONException { - this(new InputStreamReader(inputStream)); + this.index -= 1; + this.character -= 1; + this.usePrevious = true; + this.eof = false; + } + + + /** + * Get the hex value of a character (base16). + * @param c A character between '0' and '9' or between 'A' and 'F' or + * between 'a' and 'f'. + * @return An int between 0 and 15, or -1 if c was not a hex digit. + */ + public static int dehexchar(char c) { + if (c >= '0' && c <= '9') { + return c - '0'; } - - - /** - * Construct a JSONTokener from a string. - * - * @param s A source string. - */ - public JSONTokener(String s) { - this(new StringReader(s)); + if (c >= 'A' && c <= 'F') { + return c - ('A' - 10); } - - - /** - * Back up one character. This provides a sort of lookahead capability, - * so that you can test for a digit or letter before attempting to parse - * the next number or identifier. - */ - public void back() throws JSONException { - if (usePrevious || index <= 0) { - throw new JSONException("Stepping back two steps is not supported"); - } - this.index -= 1; - this.character -= 1; - this.usePrevious = true; - this.eof = false; + if (c >= 'a' && c <= 'f') { + return c - ('a' - 10); } - - - /** - * Get the hex value of a character (base16). - * @param c A character between '0' and '9' or between 'A' and 'F' or - * between 'a' and 'f'. - * @return An int between 0 and 15, or -1 if c was not a hex digit. - */ - public static int dehexchar(char c) { - if (c >= '0' && c <= '9') { - return c - '0'; - } - if (c >= 'A' && c <= 'F') { - return c - ('A' - 10); - } - if (c >= 'a' && c <= 'f') { - return c - ('a' - 10); - } - return -1; + return -1; + } + + public boolean end() { + return this.eof && !this.usePrevious; + } + + + /** + * Determine if the source string still contains characters that next() + * can consume. + * @return true if not yet at the end of the source. + */ + public boolean more() { + this.next(); + if (this.end()) { + return false; } - - public boolean end() { - return eof && !usePrevious; + this.back(); + return true; + } + + + /** + * Get the next character in the source string. + * + * @return The next character, or 0 if past the end of the source string. + */ + public char next() { + int c; + if (this.usePrevious) { + this.usePrevious = false; + c = this.previous; + } else { + try { + c = this.reader.read(); + } catch (IOException exception) { + throw new RuntimeException(exception); + } + + if (c <= 0) { // End of stream + this.eof = true; + c = 0; + } } - - - /** - * Determine if the source string still contains characters that next() - * can consume. - * @return true if not yet at the end of the source. - */ - public boolean more() throws JSONException { - next(); - if (end()) { - return false; - } - back(); - return true; + this.index += 1; + if (this.previous == '\r') { + this.line += 1; + this.character = c == '\n' ? 0 : 1; + } else if (c == '\n') { + this.line += 1; + this.character = 0; + } else { + this.character += 1; } - - - /** - * Get the next character in the source string. - * - * @return The next character, or 0 if past the end of the source string. - */ - public char next() throws JSONException { - int c; - if (this.usePrevious) { - this.usePrevious = false; - c = this.previous; - } else { - try { - c = this.reader.read(); - } catch (IOException exception) { - throw new JSONException(exception); - } - - if (c <= 0) { // End of stream - this.eof = true; - c = 0; - } - } - this.index += 1; - if (this.previous == '\r') { - this.line += 1; - this.character = c == '\n' ? 0 : 1; - } else if (c == '\n') { - this.line += 1; - this.character = 0; - } else { - this.character += 1; - } - this.previous = (char) c; - return this.previous; + this.previous = (char) c; + return this.previous; + } + + + /** + * Consume the next character, and check that it matches a specified + * character. + * @param c The character to match. + * @return The character. + * @throws JSONException if the character does not match. + */ + public char next(char c) { + char n = this.next(); + if (n != c) { + throw new RuntimeException("Expected '" + c + "' and instead saw '" + n + "'"); } - - - /** - * Consume the next character, and check that it matches a specified - * character. - * @param c The character to match. - * @return The character. - * @throws JSONException if the character does not match. - */ - public char next(char c) throws JSONException { - char n = next(); - if (n != c) { - throw syntaxError("Expected '" + c + "' and instead saw '" + - n + "'"); - } - return n; + return n; + } + + + /** + * Get the next n characters. + * + * @param n The number of characters to take. + * @return A string of n characters. + * @throws JSONException + * Substring bounds error if there are not + * n characters remaining in the source string. + */ + public String next(int n) { + if (n == 0) { + return ""; } + char[] chars = new char[n]; + int pos = 0; - /** - * Get the next n characters. - * - * @param n The number of characters to take. - * @return A string of n characters. - * @throws JSONException - * Substring bounds error if there are not - * n characters remaining in the source string. - */ - public String next(int n) throws JSONException { - if (n == 0) { - return ""; - } - - char[] chars = new char[n]; - int pos = 0; - - while (pos < n) { - chars[pos] = next(); - if (end()) { - throw syntaxError("Substring bounds error"); - } - pos += 1; - } - return new String(chars); - } - - - /** - * Get the next char in the string, skipping whitespace. - * @throws JSONException - * @return A character, or 0 if there are no more characters. - */ - public char nextClean() throws JSONException { - for (;;) { - char c = next(); - if (c == 0 || c > ' ') { - return c; - } - } + while (pos < n) { + chars[pos] = this.next(); + if (this.end()) { + throw new RuntimeException("Substring bounds error"); + } + pos += 1; } - - - /** - * Return the characters up to the next close quote character. - * Backslash processing is done. The formal JSON format does not - * allow strings in single quotes, but an implementation is allowed to - * accept them. - * @param quote The quoting character, either - * " (double quote) or - * ' (single quote). - * @return A String. - * @throws JSONException Unterminated string. - */ - public String nextString(char quote) throws JSONException { - char c; - StringBuffer sb = new StringBuffer(); - for (;;) { - c = next(); - switch (c) { - case 0: - case '\n': - case '\r': - throw syntaxError("Unterminated string"); - case '\\': - c = next(); - switch (c) { - case 'b': - sb.append('\b'); - break; - case 't': - sb.append('\t'); - break; - case 'n': - sb.append('\n'); - break; - case 'f': - sb.append('\f'); - break; - case 'r': - sb.append('\r'); - break; - case 'u': - sb.append((char)Integer.parseInt(next(4), 16)); - break; - case '"': - case '\'': - case '\\': - case '/': - sb.append(c); - break; - default: - throw syntaxError("Illegal escape."); - } - break; - default: - if (c == quote) { - return sb.toString(); - } - sb.append(c); - } + return new String(chars); + } + + + /** + * Get the next char in the string, skipping whitespace. + * @throws JSONException + * @return A character, or 0 if there are no more characters. + */ + public char nextClean() { + for (;;) { + char c = this.next(); + if (c == 0 || c > ' ') { + return c; + } + } + } + + + /** + * Return the characters up to the next close quote character. + * Backslash processing is done. The formal JSON format does not + * allow strings in single quotes, but an implementation is allowed to + * accept them. + * @param quote The quoting character, either + * " (double quote) or + * ' (single quote). + * @return A String. + * @throws JSONException Unterminated string. + */ + public String nextString(char quote) { + char c; + StringBuffer sb = new StringBuffer(); + for (;;) { + c = this.next(); + switch (c) { + case 0: + case '\n': + case '\r': + throw new RuntimeException("Unterminated string"); + case '\\': + c = this.next(); + switch (c) { + case 'b': + sb.append('\b'); + break; + case 't': + sb.append('\t'); + break; + case 'n': + sb.append('\n'); + break; + case 'f': + sb.append('\f'); + break; + case 'r': + sb.append('\r'); + break; + case 'u': + sb.append((char)Integer.parseInt(this.next(4), 16)); + break; + case '"': + case '\'': + case '\\': + case '/': + sb.append(c); + break; + default: + throw new RuntimeException("Illegal escape."); } + break; + default: + if (c == quote) { + return sb.toString(); + } + sb.append(c); + } } - - - /** - * Get the text up but not including the specified character or the - * end of line, whichever comes first. - * @param delimiter A delimiter character. - * @return A string. - */ - public String nextTo(char delimiter) throws JSONException { - StringBuffer sb = new StringBuffer(); - for (;;) { - char c = next(); - if (c == delimiter || c == 0 || c == '\n' || c == '\r') { - if (c != 0) { - back(); - } - return sb.toString().trim(); - } - sb.append(c); + } + + + /** + * Get the text up but not including the specified character or the + * end of line, whichever comes first. + * @param delimiter A delimiter character. + * @return A string. + */ + public String nextTo(char delimiter) { + StringBuffer sb = new StringBuffer(); + for (;;) { + char c = this.next(); + if (c == delimiter || c == 0 || c == '\n' || c == '\r') { + if (c != 0) { + this.back(); } + return sb.toString().trim(); + } + sb.append(c); } - - - /** - * Get the text up but not including one of the specified delimiter - * characters or the end of line, whichever comes first. - * @param delimiters A set of delimiter characters. - * @return A string, trimmed. - */ - public String nextTo(String delimiters) throws JSONException { - char c; - StringBuffer sb = new StringBuffer(); - for (;;) { - c = next(); - if (delimiters.indexOf(c) >= 0 || c == 0 || - c == '\n' || c == '\r') { - if (c != 0) { - back(); - } - return sb.toString().trim(); - } - sb.append(c); + } + + + /** + * Get the text up but not including one of the specified delimiter + * characters or the end of line, whichever comes first. + * @param delimiters A set of delimiter characters. + * @return A string, trimmed. + */ + public String nextTo(String delimiters) { + char c; + StringBuffer sb = new StringBuffer(); + for (;;) { + c = this.next(); + if (delimiters.indexOf(c) >= 0 || c == 0 || + c == '\n' || c == '\r') { + if (c != 0) { + this.back(); } + return sb.toString().trim(); + } + sb.append(c); + } + } + + + /** + * Get the next value. The value can be a Boolean, Double, Integer, + * JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. + * @throws JSONException If syntax error. + * + * @return An object. + */ + public Object nextValue() { + char c = this.nextClean(); + String string; + + switch (c) { + case '"': + case '\'': + return this.nextString(c); + case '{': +// this.back(); +// return new JSONObject(this); + case '[': + this.back(); + return new JSON(this);/*Array(this);*/ } - - /** - * Get the next value. The value can be a Boolean, Double, Integer, - * JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. - * @throws JSONException If syntax error. + /* + * Handle unquoted text. This could be the values true, false, or + * null, or it can be a number. An implementation (such as this one) + * is allowed to also accept non-standard forms. * - * @return An object. + * Accumulate characters until we reach the end of the text or a + * formatting character. */ - public Object nextValue() throws JSONException { - char c = nextClean(); - String string; - switch (c) { - case '"': - case '\'': - return nextString(c); - case '{': - back(); - return new JSONObject(this); - case '[': - back(); - return new JSONArray(this); - } - - /* - * Handle unquoted text. This could be the values true, false, or - * null, or it can be a number. An implementation (such as this one) - * is allowed to also accept non-standard forms. - * - * Accumulate characters until we reach the end of the text or a - * formatting character. - */ - - StringBuffer sb = new StringBuffer(); - while (c >= ' ' && ",:]}/\\\"[{;=#".indexOf(c) < 0) { - sb.append(c); - c = next(); - } - back(); - - string = sb.toString().trim(); - if (string.equals("")) { - throw syntaxError("Missing value"); - } - return JSONObject.stringToValue(string); + StringBuffer sb = new StringBuffer(); + while (c >= ' ' && ",:]}/\\\"[{;=#".indexOf(c) < 0) { + sb.append(c); + c = this.next(); } + this.back(); - - /** - * Skip characters until the next character is the requested character. - * If the requested character is not found, no characters are skipped. - * @param to A character to skip to. - * @return The requested character, or zero if the requested character - * is not found. - */ - public char skipTo(char to) throws JSONException { - char c; - try { - int startIndex = this.index; - int startCharacter = this.character; - int startLine = this.line; - reader.mark(Integer.MAX_VALUE); - do { - c = next(); - if (c == 0) { - reader.reset(); - this.index = startIndex; - this.character = startCharacter; - this.line = startLine; - return c; - } - } while (c != to); - } catch (IOException exc) { - throw new JSONException(exc); - } - - back(); - return c; + string = sb.toString().trim(); + if ("".equals(string)) { + throw new RuntimeException("Missing value"); } - - - /** - * Make a JSONException to signal a syntax error. - * - * @param message The error message. - * @return A JSONException object, suitable for throwing - */ - public JSONException syntaxError(String message) { - return new JSONException(message + toString()); + return JSONObject.stringToValue(string); + } + + + /** + * Skip characters until the next character is the requested character. + * If the requested character is not found, no characters are skipped. + * @param to A character to skip to. + * @return The requested character, or zero if the requested character + * is not found. + */ + public char skipTo(char to) { + char c; + try { + long startIndex = this.index; + long startCharacter = this.character; + long startLine = this.line; + this.reader.mark(1000000); + do { + c = this.next(); + if (c == 0) { + this.reader.reset(); + this.index = startIndex; + this.character = startCharacter; + this.line = startLine; + return c; + } + } while (c != to); + } catch (IOException exc) { + throw new RuntimeException(exc); } - - /** - * Make a printable string of this JSONTokener. - * - * @return " at {index} [character {character} line {line}]" - */ - public String toString() { - return " at " + index + " [character " + this.character + " line " + - this.line + "]"; - } -} \ No newline at end of file + this.back(); + return c; + } + + + /** + * Make a printable string of this JSONTokener. + * + * @return " at {index} [character {character} line {line}]" + */ + @Override + public String toString() { + return " at " + this.index + " [character " + this.character + " line " + + this.line + "]"; + } +} diff --git a/src/org/json/JSONWriter.java b/src/org/json/JSONWriter.java index bb8c9f12d..f4085ebea 100644 --- a/src/org/json/JSONWriter.java +++ b/src/org/json/JSONWriter.java @@ -78,7 +78,7 @@ public class JSONWriter { /** * The object/array stack. */ - private final JSONObject stack[]; + private final JSONObj stack[]; /** * The stack top index. A value of 0 indicates that the stack is empty. @@ -96,7 +96,7 @@ public class JSONWriter { public JSONWriter(Writer w) { this.comma = false; this.mode = 'i'; - this.stack = new JSONObject[maxdepth]; + this.stack = new JSONObj[maxdepth]; this.top = 0; this.writer = w; } @@ -208,7 +208,7 @@ public JSONWriter key(String string) throws JSONException { if (this.comma) { this.writer.write(','); } - this.writer.write(JSONObject.quote(string)); + this.writer.write(JSONObj.quote(string)); this.writer.write(':'); this.comma = false; this.mode = 'o'; @@ -236,7 +236,7 @@ public JSONWriter object() throws JSONException { } if (this.mode == 'o' || this.mode == 'a') { this.append("{"); - this.push(new JSONObject()); + this.push(new JSONObj()); this.comma = false; return this; } @@ -268,7 +268,7 @@ private void pop(char c) throws JSONException { * @param c The scope to open. * @throws JSONException If nesting is too deep. */ - private void push(JSONObject jo) throws JSONException { + private void push(JSONObj jo) throws JSONException { if (this.top >= maxdepth) { throw new JSONException("Nesting too deep."); } @@ -318,6 +318,6 @@ public JSONWriter value(long l) throws JSONException { * @throws JSONException If the value is out of sequence. */ public JSONWriter value(Object object) throws JSONException { - return this.append(JSONObject.valueToString(object)); + return this.append(JSONObj.valueToString(object)); } } diff --git a/src/org/json/XML.java b/src/org/json/XML.java index e32819159..6162e49b2 100644 --- a/src/org/json/XML.java +++ b/src/org/json/XML.java @@ -127,11 +127,11 @@ public static void noSpace(String string) throws JSONException { * @return true if the close tag is processed. * @throws JSONException */ - private static boolean parse(XMLTokener x, JSONObject context, - String name) throws JSONException { + private static boolean parse(XMLTokener x, JSONObj context, + String name) /*throws JSONException*/ { char c; int i; - JSONObject jsonobject = null; + JSONObj jsonobject = null; String string; String tagName; Object token; @@ -169,13 +169,13 @@ private static boolean parse(XMLTokener x, JSONObject context, return false; } } - throw x.syntaxError("Expected 'CDATA['"); +// throw x.syntaxError("Expected 'CDATA['"); } i = 1; do { token = x.nextMeta(); if (token == null) { - throw x.syntaxError("Missing '>' after '' after ' 0) { context.accumulate(tagName, jsonobject); @@ -256,7 +256,7 @@ private static boolean parse(XMLTokener x, JSONObject context, token = x.nextContent(); if (token == null) { if (tagName != null) { - throw x.syntaxError("Unclosed tag " + tagName); +// throw x.syntaxError("Unclosed tag " + tagName); } return false; } else if (token instanceof String) { @@ -284,10 +284,11 @@ private static boolean parse(XMLTokener x, JSONObject context, } } } else { - throw x.syntaxError("Misshaped tag"); +// throw x.syntaxError("Misshaped tag"); } } } + return false; } @@ -311,7 +312,7 @@ public static Object stringToValue(String string) { return Boolean.FALSE; } if (string.equalsIgnoreCase("null")) { - return JSONObject.NULL; + return JSONObj.NULL; } if (string.equals("0")) { return new Integer(0); @@ -362,8 +363,8 @@ public static Object stringToValue(String string) { * @return A JSONObject containing the structured data from the XML string. * @throws JSONException */ - public static JSONObject toJSONObject(String string) throws JSONException { - JSONObject jo = new JSONObject(); + public static JSONObj toJSONObject(String string) throws JSONException { + JSONObj jo = new JSONObj(); XMLTokener x = new XMLTokener(string); while (x.more() && x.skipPast("<")) { parse(x, jo, null); @@ -394,14 +395,14 @@ public static String toString(Object object, String tagName) throws JSONException { StringBuffer sb = new StringBuffer(); int i; - JSONArray ja; - JSONObject jo; + JSONArr ja; + JSONObj jo; String key; Iterator keys; int length; String string; Object value; - if (object instanceof JSONObject) { + if (object instanceof JSONObj) { // Emit @@ -413,7 +414,7 @@ public static String toString(Object object, String tagName) // Loop thru the keys. - jo = (JSONObject)object; + jo = (JSONObj)object; keys = jo.keys(); while (keys.hasNext()) { key = keys.next().toString(); @@ -430,8 +431,8 @@ public static String toString(Object object, String tagName) // Emit content in body if (key.equals("content")) { - if (value instanceof JSONArray) { - ja = (JSONArray)value; + if (value instanceof JSONArr) { + ja = (JSONArr)value; length = ja.length(); for (i = 0; i < length; i += 1) { if (i > 0) { @@ -445,12 +446,12 @@ public static String toString(Object object, String tagName) // Emit an array of similar keys - } else if (value instanceof JSONArray) { - ja = (JSONArray)value; + } else if (value instanceof JSONArr) { + ja = (JSONArr)value; length = ja.length(); for (i = 0; i < length; i += 1) { value = ja.get(i); - if (value instanceof JSONArray) { + if (value instanceof JSONArr) { sb.append('<'); sb.append(key); sb.append('>'); @@ -488,10 +489,10 @@ public static String toString(Object object, String tagName) } else { if (object.getClass().isArray()) { - object = new JSONArray(object); + object = new JSONArr(object); } - if (object instanceof JSONArray) { - ja = (JSONArray)object; + if (object instanceof JSONArr) { + ja = (JSONArr)object; length = ja.length(); for (i = 0; i < length; i += 1) { sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName)); diff --git a/src/org/json/XMLTokener.java b/src/org/json/XMLTokener.java index c6b6dd7ac..55dfef313 100644 --- a/src/org/json/XMLTokener.java +++ b/src/org/json/XMLTokener.java @@ -60,14 +60,14 @@ public XMLTokener(String s) { * @return The string up to the ]]>. * @throws JSONException If the ]]> is not found. */ - public String nextCDATA() throws JSONException { + public String nextCDATA() /*throws JSONException*/ { char c; int i; StringBuffer sb = new StringBuffer(); for (;;) { c = next(); if (end()) { - throw syntaxError("Unclosed CDATA"); +// throw syntaxError("Unclosed CDATA"); } sb.append(c); i = sb.length() - 3; @@ -89,7 +89,7 @@ public String nextCDATA() throws JSONException { * source text. * @throws JSONException */ - public Object nextContent() throws JSONException { + public Object nextContent() /*throws JSONException*/ { char c; StringBuffer sb; do { @@ -124,7 +124,7 @@ public Object nextContent() throws JSONException { * @return A Character or an entity String if the entity is not recognized. * @throws JSONException If missing ';' in XML entity. */ - public Object nextEntity(char ampersand) throws JSONException { + public Object nextEntity(char ampersand) /*throws JSONException*/ { StringBuffer sb = new StringBuffer(); for (;;) { char c = next(); @@ -133,7 +133,7 @@ public Object nextEntity(char ampersand) throws JSONException { } else if (c == ';') { break; } else { - throw syntaxError("Missing ';' in XML entity: &" + sb); +// throw syntaxError("Missing ';' in XML entity: &" + sb); } } String string = sb.toString(); @@ -151,7 +151,7 @@ public Object nextEntity(char ampersand) throws JSONException { * @throws JSONException If a string is not properly closed or if the XML * is badly structured. */ - public Object nextMeta() throws JSONException { + public Object nextMeta() /*throws JSONException*/ { char c; char q; do { @@ -159,7 +159,7 @@ public Object nextMeta() throws JSONException { } while (Character.isWhitespace(c)); switch (c) { case 0: - throw syntaxError("Misshaped meta tag"); +// throw syntaxError("Misshaped meta tag"); case '<': return XML.LT; case '>': @@ -178,7 +178,7 @@ public Object nextMeta() throws JSONException { for (;;) { c = next(); if (c == 0) { - throw syntaxError("Unterminated string"); +// throw syntaxError("Unterminated string"); } if (c == q) { return Boolean.TRUE; @@ -216,7 +216,7 @@ public Object nextMeta() throws JSONException { * @return a String or a Character. * @throws JSONException If the XML is not well formed. */ - public Object nextToken() throws JSONException { + public Object nextToken() /*throws JSONException*/ { char c; char q; StringBuffer sb; @@ -225,9 +225,9 @@ public Object nextToken() throws JSONException { } while (Character.isWhitespace(c)); switch (c) { case 0: - throw syntaxError("Misshaped element"); +// throw syntaxError("Misshaped element"); case '<': - throw syntaxError("Misplaced '<'"); +// throw syntaxError("Misplaced '<'"); case '>': return XML.GT; case '/': @@ -248,7 +248,7 @@ public Object nextToken() throws JSONException { for (;;) { c = next(); if (c == 0) { - throw syntaxError("Unterminated string"); +// throw syntaxError("Unterminated string"); } if (c == q) { return sb.toString(); @@ -285,7 +285,7 @@ public Object nextToken() throws JSONException { case '<': case '"': case '\'': - throw syntaxError("Bad character in a name"); +// throw syntaxError("Bad character in a name"); } } } @@ -298,7 +298,7 @@ public Object nextToken() throws JSONException { * @param to A string to skip past. * @throws JSONException */ - public boolean skipPast(String to) throws JSONException { + public boolean skipPast(String to) /*throws JSONException*/ { boolean b; char c; int i; From 1d9c03b86575d0cefe0473bd0a57c9a100dcf4c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20G=C3=B6ransson?= Date: Sun, 24 Mar 2013 15:52:59 +0100 Subject: [PATCH 19/38] Alternative API --- .../download/json4processing-0.1.6.zip | Bin 218226 -> 218834 bytes distribution/json4processing-0.1.6/index.html | 2 +- .../reference/allclasses-frame.html | 4 +- .../reference/allclasses-noframe.html | 4 +- .../reference/constant-values.html | 4 +- .../reference/deprecated-list.html | 4 +- .../reference/help-doc.html | 4 +- .../reference/index-all.html | 12 +++- .../reference/index.html | 2 +- .../reference/org/json/CDL.html | 4 +- .../reference/org/json/Cookie.html | 4 +- .../reference/org/json/CookieList.html | 4 +- .../reference/org/json/HTTP.html | 4 +- .../reference/org/json/HTTPTokener.html | 4 +- .../reference/org/json/JSON.JSONType.html | 4 +- .../reference/org/json/JSON.html | 64 +++++++++++++++-- .../reference/org/json/JSONArr.html | 4 +- .../reference/org/json/JSONException.html | 4 +- .../reference/org/json/JSONML.html | 4 +- .../reference/org/json/JSONObj.html | 4 +- .../reference/org/json/JSONString.html | 4 +- .../reference/org/json/JSONStringer.html | 4 +- .../reference/org/json/JSONTokener.html | 4 +- .../reference/org/json/JSONWriter.html | 4 +- .../reference/org/json/XML.html | 4 +- .../reference/org/json/XMLTokener.html | 4 +- .../reference/org/json/package-frame.html | 4 +- .../reference/org/json/package-summary.html | 4 +- .../reference/org/json/package-tree.html | 4 +- .../reference/overview-tree.html | 4 +- .../reference/serialized-form.html | 4 +- src/org/json/JSON.java | 68 ++++++++++++++---- src/org/json/JSONTokener.java | 6 +- 33 files changed, 182 insertions(+), 76 deletions(-) diff --git a/distribution/json4processing-0.1.6/download/json4processing-0.1.6.zip b/distribution/json4processing-0.1.6/download/json4processing-0.1.6.zip index ecde9f0dddba9f25535abdc73f8f4f6b238a82e5..548fb38cf8bbf972e24e7a4ca582609c12be47d1 100644 GIT binary patch delta 146352 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 j2tyoxC6Ke17okf8t=M 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

R(KxYeXTMD=F#f4m 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 PRWtz<@I=Cp(1iLwj7%BB delta 145784 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

J94lh0N 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 diff --git a/distribution/json4processing-0.1.6/index.html b/distribution/json4processing-0.1.6/index.html index 1625d5d72..0afd2bffe 100644 --- a/distribution/json4processing-0.1.6/index.html +++ b/distribution/json4processing-0.1.6/index.html @@ -41,7 +41,7 @@

json4processing

json4processing

- A library by Andreas Goransson for the programming environment processing. Last update, 03/22/2013. + A library by Andreas Goransson for the programming environment processing. Last update, 03/23/2013.

Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. diff --git a/distribution/json4processing-0.1.6/reference/allclasses-frame.html b/distribution/json4processing-0.1.6/reference/allclasses-frame.html index c30d384db..1a86b492b 100644 --- a/distribution/json4processing-0.1.6/reference/allclasses-frame.html +++ b/distribution/json4processing-0.1.6/reference/allclasses-frame.html @@ -2,9 +2,9 @@ - + All Classes (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.6/reference/allclasses-noframe.html b/distribution/json4processing-0.1.6/reference/allclasses-noframe.html index 02b38ec6a..9694b6a40 100644 --- a/distribution/json4processing-0.1.6/reference/allclasses-noframe.html +++ b/distribution/json4processing-0.1.6/reference/allclasses-noframe.html @@ -2,9 +2,9 @@ - + All Classes (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.6/reference/constant-values.html b/distribution/json4processing-0.1.6/reference/constant-values.html index ef0211c2f..7d6c2c0cc 100644 --- a/distribution/json4processing-0.1.6/reference/constant-values.html +++ b/distribution/json4processing-0.1.6/reference/constant-values.html @@ -2,9 +2,9 @@ - + Constant Field Values (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.6/reference/deprecated-list.html b/distribution/json4processing-0.1.6/reference/deprecated-list.html index e416351d7..c806cab0e 100644 --- a/distribution/json4processing-0.1.6/reference/deprecated-list.html +++ b/distribution/json4processing-0.1.6/reference/deprecated-list.html @@ -2,9 +2,9 @@ - + Deprecated List (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.6/reference/help-doc.html b/distribution/json4processing-0.1.6/reference/help-doc.html index 0633d6289..6e60bd9b6 100644 --- a/distribution/json4processing-0.1.6/reference/help-doc.html +++ b/distribution/json4processing-0.1.6/reference/help-doc.html @@ -2,9 +2,9 @@ - + API Help (Javadocs: json4processing) - + diff --git a/distribution/json4processing-0.1.6/reference/index-all.html b/distribution/json4processing-0.1.6/reference/index-all.html index 684679dbb..a3ffd9252 100644 --- a/distribution/json4processing-0.1.6/reference/index-all.html +++ b/distribution/json4processing-0.1.6/reference/index-all.html @@ -2,9 +2,9 @@ - + Index (Javadocs: json4processing) - + @@ -81,6 +81,8 @@

A

Append values to the array under a key.
+
arr - Variable in class org.json.JSON
+
 
array() - Method in class org.json.JSONWriter
Begin appending a new array.
@@ -608,6 +610,8 @@

N

O

+
obj - Variable in class org.json.JSON
+
 
object() - Method in class org.json.JSONWriter
Begin appending a new object.
@@ -1010,6 +1014,8 @@

T

Convert a JSONObject into an HTTP header.
+
toString() - Method in class org.json.JSON
+
 
toString() - Method in class org.json.JSONArr
Make a JSON text of this JSONArray.
@@ -1050,6 +1056,8 @@

T

Convert a JSONObject into a well-formed, element-normal XML string.
+
type - Variable in class org.json.JSON
+
 
diff --git a/distribution/json4processing-0.1.6/reference/index.html b/distribution/json4processing-0.1.6/reference/index.html index 67f41f64d..17c01bcc0 100644 --- a/distribution/json4processing-0.1.6/reference/index.html +++ b/distribution/json4processing-0.1.6/reference/index.html @@ -2,7 +2,7 @@ - + Javadocs: json4processing - - - - - - -
-
org.json
-

Enum JSON.JSONType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<JSON.JSONType>
    • -
    • -
        -
      • org.json.JSON.JSONType
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<JSON.JSONType>
    -
    -
    -
    Enclosing class:
    -
    JSON
    -
    -
    -
    -
    public static enum JSON.JSONType
    -extends java.lang.Enum<JSON.JSONType>
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      ARRAY 
      NULL 
      OBJECT 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static JSON.JSONTypevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static JSON.JSONType[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static JSON.JSONType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (JSON.JSONType c : JSON.JSONType.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static JSON.JSONType valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - -

processing library json4processing by Andreas Goransson. (c) 2011

- - diff --git a/distribution/json4processing-0.1.6/reference/org/json/JSON.html b/distribution/json4processing-0.1.6/reference/org/json/JSON.html index b18cdfe9e..d2ac55e54 100644 --- a/distribution/json4processing-0.1.6/reference/org/json/JSON.html +++ b/distribution/json4processing-0.1.6/reference/org/json/JSON.html @@ -1,10 +1,10 @@ - + - + JSON (Javadocs: json4processing) - + @@ -35,7 +35,7 @@
+ + + + + +
+ +
+

json4processing

+

+ A library by Andreas Goransson for the programming environment processing. Last update, 11/27/2012. +

+

+ Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. +

+
+ + + +
+

Download

+

+ Download json4processing version 0.1.4 in + .zip format. +

+

Installation

+

+ Unzip and put the extracted json4processing folder into the libraries folder of your processing sketches. Reference and examples are included in the json4processing folder. +

+
+ + +
+

Keywords ?

+

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

+

Source. The source code of json4processing is available at github, and its repository can be browsed here.

+
+ +
+

Examples

+

Find a list of examples in the current distribution of json4processing, or have a look at them by following the links below.

+ +
+ + +
+

Tested

+

+ + Platform linux, windows + + +
Processing 1.5.1 + + +
Dependencies ? +

+
+ + + + + + + + + + + + +
+
+ + +
+ + + + + +
+ +
+

json4processing

+

+ A library by Andreas Goransson for the programming environment processing. Last update, 03/31/2012. +

+

+ Feel free to replace this paragraph with a description of the library. Contributed libraries are developed, documented, and maintained by members of the Processing community. Further directions are included with each library. For feedback and support, please post to the Discourse. We strongly encourage all libraries to be open source, but not all of them are. +

+
+ + + +
+

Download

+

+ Download json4processing version 0.1.3 in + .zip format. +

+

Installation

+

+ Unzip and put the extracted json4processing folder into the libraries folder of your processing sketches. Reference and examples are included in the json4processing folder. +

+
+ + +
+

Keywords ?

+

Reference. Have a look at the javadoc reference here. a copy of the reference is included in the .zip as well.

+

Source. The source code of json4processing is available at github, and its repository can be browsed here.

+
+ +
+

Examples

+

Find a list of examples in the current distribution of json4processing, or have a look at them by following the links below.

+ +
+ + +
+

Tested

+

+ + Platform linux, windows + + +
Processing 1.5.1 + + +
Dependencies ? +

+
+ + + + + + + + + + + + +
+
+ + +