php-extended / php-json-object
Requires
- php: >=7.1
- php-extended/php-email-address-object: ^3.4
- php-extended/php-ensurer-object: ^3
- php-extended/php-http-message-factory-psr17: ^3
- php-extended/php-ip-object: ^4.3
- php-extended/php-mac-object: ^3.3
- php-extended/php-uuid-object: ^3.3
- php-extended/php-version-object: ^4
- php-extended/polyfill-php80-stringable: >=1
- psr/http-factory: ^1
Requires (Dev)
- dev-master
- 5.4.7
- 5.4.6
- 5.4.5
- 5.4.4
- 5.4.3
- 5.4.2
- 5.4.1
- 5.4.0
- 5.3.5
- 5.3.4
- 5.3.3
- 5.3.2
- 5.3.1
- 5.3.0
- 5.2.17
- 5.2.16
- 5.2.15
- 5.2.14
- 5.2.13
- 5.2.12
- 5.2.11
- 5.2.10
- 5.2.9
- 5.2.8
- 5.2.7
- 5.2.6
- 5.2.5
- 5.2.4
- 5.2.3
- 5.2.2
- 5.2.1
- 5.2.0
- 5.1.5
- 5.1.4
- 5.1.3
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.2.6
- 4.2.5
- 4.2.4
- 4.2.3
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.0
- 3.14.0
- 3.13.0
- 3.12.0
- 3.11.0
- 3.10.1
- 3.10.0
- 3.9.2
- 3.9.1
- 3.9.0
- 3.8.1
- 3.8.0
- 3.7.1
- 3.7.0
- 3.6.0
- 3.5.1
- 3.5.0
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.0
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
This package is auto-updated.
Last update: 2022-05-14 17:12:33 UTC
README
一个用于操作JSON对象的PHP助手
安装
此库的安装通过composer进行。从其网站下载composer.phar
。然后将其添加到您的composer.json文件中
"require": {
...
"php-extended/php-json-object": "^5",
...
}
然后运行php composer.phar update
以安装此库。此库所有类的自动加载都通过composer的自动加载器完成。
基本用法
此类是一个助手,旨在扩展。例如,一个表示以下信息的价格对象
{
"price": "199.99",
"currency": "USD",
"date": "2017-07-12 21:21:42"
}
此对象应使用原生PHP的json_decode
函数进行解析,然后将返回的数组提供给以下类
use PhpExtended\Json\JsonObject;
class ExamplePrice extends JsonObject
{
/**
*
* @var float
*/
public $_price = null;
/**
*
* @var string
*/
public $_currency = null;
/**
*
* @var \DateTimeInterface
*/
public $_date = null;
public function __construct(array $json, $silent = false)
{
// filters all error, status and code attributes for error handling
$data = parent::__construct($json, $silent);
// then iterates on the remaining elements
foreach($data as $key => $value)
{
switch($key)
{
case 'price':
$this->_price = $this->asFloat($value, $silent);
break;
case 'currency':
$this->_currency = $this->asString($value, $silent);
break;
case 'date':
$this->_date = $this->asDatetime($value, 'Y-m-d H:i:s', $silent);
break;
default:
if(!$silent)
throw new IllegalArgumentException();
}
}
}
}
然后可以使用以下代码使用此类
$json_array = json_decode($json_string, true); // important to have arrays
$json_object = new ExamplePrice($json_array, true); // set to false if you want exceptions on errors
echo $json_object->_currency; // should echo 'USD'
var_dump($json_object->_price); // should echo float:199.99
JsonObject
是所有其他对象的基础对象。此对象还可以收集JSON中提供的状态码,如果在status
或code
单词中提供,并在error
或message
单词中提供错误消息。请注意,如果有多个属性匹配这些单词,则此对象只会取最后的一个,这取决于给json中的属性顺序。
JsonCollection
对象用于处理[{ ... }, { ... }]情况。
在外部对象中,您需要处理json对象的键,然后使用数组中对象的类名创建一个JsonCollection
对象。
JsonCollection
对象还可以收集如果json中找到的键包含单词error
的错误消息。这些将不会抛出当键值不可接受时抛出的JsonException
(即,对于集合,它们都必须是整数)。
JsonPagination
对象是JsonCollection
的扩展。它表示分页的元数据,包含计数和边界,以及将使用JsonCollection
构建的内部数据集。
JsonSuccess
对象还可以收集服务器如果通过json在success
或response
单词中提供的布尔响应。
JsonCount
对象还可以收集如果服务器通过json在count
或value
单词中提供的整数响应。
JsonDate
对象还可以收集如果服务器通过json在date
或today
单词中提供的日期响应。
JsonTime
对象还可以收集如果服务器通过json在time
或now
单词中提供的时间响应。
JsonTimestamp
对象还可以收集如果服务器通过json在datetime
、timestamp
、date
、time
或now
单词中提供的时间戳响应。
JsonDateTime
对象还可以收集如果服务器通过json在datetime
、timestamp
、date
、time
或now
单词中提供的日期和时间响应,并且如果它们格式化为\DateTime
类中的任何格式常量。
JsonMac48
对象也可以从服务器收集由 json 中的 mac
字段提供的 48 位 MAC 地址响应。
JsonMac64
对象也可以从服务器收集由 json 中的 mac
字段提供的 64 位 MAC 地址响应。
JsonIpv4
对象也可以从服务器收集由 json 中的 ipv4
字段提供的 ipv4 响应。
JsonIpv4Network
对象也可以从服务器收集由 json 中的 network
字段提供的 ipv4 网络响应。
JsonIpv6
对象也可以从服务器收集由 json 中的 ipv6
字段提供的 ipv6 响应。
JsonIpv6Network
对象也可以从服务器收集由 json 中的 network
字段提供的 ipv6 网络响应。
JsonEmailAddress
对象也可以从服务器收集由 json 中的 email
字段提供的电子邮件地址响应。
JsonEmailAddressList
对象也可以从服务器收集由 json 中的 list
字段提供的电子邮件地址列表响应。
JsonMailbox
对象也可以从服务器收集由 json 中的 mailbox
字段提供的邮箱响应。
JsonMailboxList
对象也可以从服务器收集由 json 中的 list
字段提供的邮箱列表响应。
JsonMailboxGroup
对象也可以从服务器收集由 json 中的 group
字段提供的邮箱组响应。
JsonMailboxGroupList
对象也可以从服务器收集由 json 中的 list
字段提供的邮箱组列表响应。
JsonMetaRecord
对象也可以根据其状态收集数据库记录的元数据,以便快速检查需要更新的位置。
许可
MIT 许可(见 许可文件)。