http://www.mediawiki.org/wiki/Special:Code/MediaWiki/84655
Revision: 84655
Author: reedy
Date: 2011-03-24 00:46:04 +0000 (Thu, 24 Mar 2011)
Log Message:
-----------
And json.class.php
Wonder when I missed those out. Oh well
Added Paths:
-----------
trunk/extensions/OpenStackManager/aws-sdk/utilities/json.class.php
Added: trunk/extensions/OpenStackManager/aws-sdk/utilities/json.class.php
===================================================================
--- trunk/extensions/OpenStackManager/aws-sdk/utilities/json.class.php
(rev 0)
+++ trunk/extensions/OpenStackManager/aws-sdk/utilities/json.class.php
2011-03-24 00:46:04 UTC (rev 84655)
@@ -0,0 +1,104 @@
+<?php
+/*
+ * Copyright 2010-2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License").
+ * You may not use this file except in compliance with the License.
+ * A copy of the License is located at
+ *
+ * http://aws.amazon.com/apache2.0
+ *
+ * or in the "license" file accompanying this file. This file is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+
+/*%******************************************************************************************%*/
+// CLASS
+
+/**
+ * Handles the conversion of data from JSON to other formats.
+ *
+ * @version 2011.03.02
+ * @license See the included NOTICE.md file for more information.
+ * @copyright See the included NOTICE.md file for more information.
+ * @link http://aws.amazon.com/php/ PHP Developer Center
+ */
+class CFJSON
+{
+ /**
+ * Converts a JSON string to a CFSimpleXML object.
+ *
+ * @param string|array $json (Required) Pass either a valid
JSON-formatted string, or an associative array.
+ * @param SimpleXMLElement $xml (Optional) An XML object to add nodes
to. Must be an object that is an <code>instanceof</code> a
<code>SimpleXMLElement</code> object. If an object is not passed, a new one
will be generated using the classname defined for <code>$parser</code>.
+ * @param string $parser (Optional) The name of the class to use to
parse the XML. This class should extend <code>SimpleXMLElement</code>. Has a
default value of <code>CFSimpleXML</code>.
+ * @return CFSimpleXML An XML representation of the data.
+ */
+ public static function to_xml($json, SimpleXMLElement $xml = null,
$parser = 'CFSimpleXML')
+ {
+ // If there isn't an XML object, create one
+ if (!$xml)
+ {
+ $xml = simplexml_load_string('<?xml version="1.0"
encoding="UTF-8"?><rootElement/>', $parser);
+ }
+
+ // If we haven't parsed the JSON, do it
+ if (!is_array($json))
+ {
+ $json = json_decode($json, true);
+
+ // Did we encounter an error?
+ switch (json_last_error())
+ {
+ case JSON_ERROR_DEPTH:
+ throw new JSON_Exception('Maximum stack
depth exceeded');
+
+ case JSON_ERROR_CTRL_CHAR:
+ throw new JSON_Exception('Unexpected
control character found');
+
+ case JSON_ERROR_SYNTAX:
+ throw new JSON_Exception('Syntax error;
Malformed JSON');
+
+ case JSON_ERROR_STATE_MISMATCH:
+ throw new JSON_Exception('Invalid or
malformed JSON');
+ }
+ }
+
+ // Hand off for the recursive work
+ self::process_json($json, $xml, $parser);
+
+ return $xml;
+ }
+
+ /**
+ * Converts a JSON string to a CFSimpleXML object.
+ *
+ * @param string|array $json (Required) Pass either a valid
JSON-formatted string, or an associative array.
+ * @param SimpleXMLElement $xml (Optional) An XML object to add nodes
to. Must be an object that is an <code>instanceof</code> a
<code>SimpleXMLElement</code> object. If an object is not passed, a new one
will be generated using the classname defined for <code>$parser</code>.
+ * @param string $parser (Optional) The name of the class to use to
parse the XML. This class should extend <code>SimpleXMLElement</code>. Has a
default value of <code>CFSimpleXML</code>.
+ * @return CFSimpleXML An XML representation of the data.
+ */
+ protected static function process_json($json, SimpleXMLElement $xml =
null, $parser = 'CFSimpleXML')
+ {
+ foreach ($json as $k => $v)
+ {
+ if (is_array($v))
+ {
+ $node = $xml->addChild($k);
+ self::process_json($v, $node, $parser);
+ }
+ else
+ {
+ $xml->addChild($k, $v);
+ }
+ }
+ }
+}
+
+
+/**
+ * Default JSON Exception.
+ */
+class JSON_Exception extends Exception {}
Property changes on:
trunk/extensions/OpenStackManager/aws-sdk/utilities/json.class.php
___________________________________________________________________
Added: svn:eol-style
+ native
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs