carica / jsondom
将 JSON 读取到 DOM 中
dev-master
2014-02-18 09:17 UTC
Requires
- php: >=5.4
This package is auto-updated.
Last update: 2024-08-29 04:14:21 UTC
README
许可证: MIT 许可证
版权: 2013-2014 Thomas Weinert thomas@weinert.info
Carica JsonDOM 将 JSON 转换为 XML DOM。生成的 XML 格式正确,并在单独的命名空间中包含额外的 JSON 特定数据。
为什么不直接使用 JSON 呢?
因为这需要做大量的工作。你需要检查元素是否存在、列表是否为空、检查条件……如果可以使用查询语言,如 Xpath,会更容易。
示例
使用 Xpath 从 JSON 中获取数据
<?php
$reader = new Carica\JsonDOM\Reader($json);
$xpath = new DOMXpath($reader->asDom());
var_dump(
$xpath->evaluate('string(/*/phoneNumbers/*[type="home"]/number)')
);
// string(12) "212 555-1234"
JSON (来自 维基百科)
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<json:json xmlns:json="urn:carica-json-dom.2013">
<firstName>John</firstName>
<lastName>Smith</lastName>
<age json:type="number">25</age>
<address>
<streetAddress>21 2nd Street</streetAddress>
<city>New York</city>
<state>NY</state>
<postalCode json:type="number">10021</postalCode>
</address>
<phoneNumbers json:type="array">
<_>
<type>home</type>
<number>212 555-1234</number>
</_>
<_>
<type>fax</type>
<number>646 555-4567</number>
</_>
</phoneNumbers>
</json:json>
从 XML 创建 JSON
你可以将其转换回来,或者从任何 XML DOM 生成 JSON。节点属性将被忽略,重复的键将覆盖之前的键。
<?php
echo 'XML -> JSON: ', "\n";
$writer = new Carica\JsonDOM\Writer($dom);
echo json_encode($writer, JSON_PRETTY_PRINT);
安装
Carica JsonDOM 可在 Packagist 上找到。使用 Composer 将其添加到您自己的项目中的依赖项。