<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Converts to and from JSON format.
*
* JSON (JavaScript Object Notation) is a lightweight data-interchange
* format. It is easy for humans to read and write. It is easy for machines
* to parse and generate. It is based on a subset of the JavaScript
* Programming Language, Standard ECMA-262 3rd Edition - December 1999.
* This feature can also be found in Python. JSON is a text format that is
* completely language independent but uses conventions that are familiar
* to programmers of the C-family of languages, including C, C++, C#, Java,
* JavaScript, Perl, TCL, and many others. These properties make JSON an
* ideal data-interchange language.
*
* This package provides a simple encoder and decoder for JSON notation. It
* is intended for use with client-side Javascript applications that make
* use of HTTPRequest to perform server communication functions - data can
* be encoded into JSON notation for use in a client-side javascript, or
* decoded from incoming Javascript requests. JSON format is native to
* Javascript, and can be directly eval()'ed with no further parsing
* overhead
*
* All strings should be in ASCII or UTF-8 format!
*
* LICENSE: 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. Redistributions 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.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* @category
* @package Services_JSON
* @author Michal Migurski <mike-json@teczno.com>
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
* @copyright 2005 Michal Migurski
* @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
* @license http://www.opensource.org/licenses/bsd-license.php
* @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
*/
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_SLICE', 1);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_STR', 2);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_ARR', 3);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_OBJ', 4);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_CMT', 5);
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_LOOSE_TYPE', 16);
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
/**
* Converts to and from JSON format.
*
* Brief example of use:
*
* <code>
* // create a new instance of Services_JSON
* $json = new Services_JSON();
*
* // convert a complexe value to JSON notation, and send it to the browser
* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
* $output = $json->encode($value);
*
* print($output);
* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
*
* // accept incoming POST data, assumed to be in JSON notation
* $input = file_get_contents('php://input', 1000000);
* $value = $json->decode($input);
* </code>
*/
class Services_JSON
{
/**
* constructs a new JSON instance
*
* @param int $use object behavior flags; combine with boolean-OR
*
* possible values:
* - SERVICES_JSON_LOOSE_TYPE: loose typing.
* "{...}" syntax creates associative arrays
* instead of objects in decode().
* - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
* Values which can't be encoded (e.g. resources)
* appear as NULL instead of throwing errors.
* By default, a deeply-nested resource will
* bubble up with an error, so all return values
* from encode() should be checked with isError()
*/
function Services_JSON($use = 0)
{
$this->use = $use;
}
/**
* convert a string from one UTF-16 char to one UTF-8 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf16 UTF-16 character
* @return string UTF-8 character
* @access private
*/
function utf162utf8($utf16)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
switch(true) {
case ((0x7F & $bytes) == $bytes):
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x7F & $bytes);
case (0x07FF & $bytes) == $bytes:
// return a 2-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xC0 | (($bytes >> 6) & 0x1F))
. chr(0x80 | ($bytes & 0x3F));
case (0xFFFF & $bytes) == $bytes:
// return a 3-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xE0 | (($bytes >> 12) & 0x0F))
. chr(0x80 | (($bytes >> 6) & 0x3F))
. chr(0x80 | ($bytes & 0x3F));
}
// ignoring UTF-32 for now, sorry
return '';
}
/**
* convert a string from one UTF-8 char to one UTF-16 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf8 UTF-8 character
* @return string UTF-16 character
* @access private
*/
function utf82utf16($utf8)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
}
switch(strlen($utf8)) {
case 1:
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return $utf8;
case 2:
// return a UTF-16 character from a 2-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
没有合适的资源?快使用搜索试试~ 我知道了~
员工管理实例源码、注释详细
共1311个文件
gif:550个
js:382个
png:72个
5星 · 超过95%的资源 需积分: 10 9 下载量 142 浏览量
2014-03-09
20:41:45
上传
评论
收藏 4.77MB ZIP 举报
温馨提示
员工管理实例源码、注释详细,ASP.NET EXTJS 员工管理实例源码、注释详细
资源推荐
资源详情
资源评论
收起资源包目录
员工管理实例源码、注释详细 (1311个子文件)
file_manager_json.ashx 5KB
upload_json.ashx 2KB
RemovePhoto.ashx 117B
Selection.ashx 116B
Detail.ashx 112B
Category.ashx 111B
Detail.ashx 110B
Remove.ashx 110B
List.ashx 108B
Remove.ashx 107B
Detail.ashx 107B
Upload.ashx 107B
Save.ashx 106B
List.ashx 106B
Phone.ashx 105B
Save.ashx 103B
Ajax.ashx 103B
List.ashx 103B
Image.ashx 100B
Login.ashx 100B
UpLoad_Class.asp 16KB
file_manager_json.asp 6KB
JSON_2.0.4.asp 5KB
upload_json.asp 2KB
demo.asp 1KB
demo.aspx 1KB
ExtJs.Demo.bak 1.46MB
ExtJs.CreateDB.sql.bak 11KB
DesignTimeResolveAssemblyReferencesInput.cache 232KB
ExtJs.WebSite.csprojResolveAssemblyReference.cache 22KB
ResolveAssemblyReference.cache 16KB
ExtJs.BLL.csprojResolveAssemblyReference.cache 14KB
ResolveAssemblyReference.cache 9KB
ExtJs.DAL.csprojResolveAssemblyReference.cache 8KB
DesignTimeResolveAssemblyReferencesInput.cache 6KB
DesignTimeResolveAssemblyReferencesInput.cache 6KB
DesignTimeResolveAssemblyReferencesInput.cache 6KB
ResolveAssemblyReference.cache 5KB
Web.Release.config 1KB
Web.Debug.config 1KB
Web.config 686B
Sources.cs 8KB
Recruitment.cs 7KB
Political.cs 6KB
User.cs 5KB
Recruitment.cs 5KB
Sources.cs 4KB
Common.cs 4KB
Image.ashx.cs 3KB
Political.cs 3KB
User.cs 3KB
Save.ashx.cs 3KB
Phone.ashx.cs 2KB
Login.ashx.cs 2KB
UserMapping.cs 2KB
List.ashx.cs 2KB
Detail.ashx.cs 2KB
List.ashx.cs 2KB
Save.ashx.cs 2KB
Selection.ashx.cs 1KB
User.cs 1KB
Upload.ashx.cs 1KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
RecruitmentMapping.cs 1KB
Remove.ashx.cs 1KB
Detail.ashx.cs 1KB
Detail.ashx.cs 1KB
PoliticalMapping.cs 1KB
SourcesMapping.cs 1KB
Remove.ashx.cs 1KB
List.ashx.cs 954B
RemovePhoto.ashx.cs 897B
Ajax.ashx.cs 833B
Category.ashx.cs 634B
Constant.cs 630B
Enum.cs 517B
Constant.cs 469B
Recruitment.cs 466B
Political.cs 418B
Sources.cs 402B
ExtJs.WebSite.csproj 81KB
ExtJs.DAL.csproj 3KB
ExtJs.BLL.csproj 3KB
ExtJs.Model.csproj 3KB
ext-all.css 140KB
ext-all-notheme.css 102KB
xtheme-blue.css 38KB
default.css 21KB
default.css 16KB
Desktop.css 15KB
grid.css 11KB
form.css 10KB
button.css 8KB
panel.css 7KB
tabs.css 7KB
grid.css 6KB
panel-reset.css 6KB
共 1311 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
- yarsuo2014-03-10不错的资源,谢谢分享
gps008
- 粉丝: 3
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功