JSON Api attributes 元素是否应该包含嵌套对象?
Should JSON Api attributes element contain nested objects?
这是我们第一次在我们的项目中使用 JSON API,根据他们网站上的规范,这是常规的 JSON API 响应应该看起来像
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z"
},
"relationships": {
"author": {
"data": {"id": "42", "type": "people"}
}
}
}],
"included": [
{
"type": "people",
"id": "42",
"attributes": {
"name": "John",
"age": 80,
"gender": "male"
}
}
]
}
我们不确定,数据中的属性是否应该始终是扁平的,或者属性也可以包含嵌套对象,例如位置
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z",
"location":
{
"lat": "0.00",
"long": "0.00"}
},
解码你的 JSON 后,结果是 -
Array
(
[data] => Array
(
[0] => Array
(
[type] => articles
[id] => 1
[attributes] => Array
(
[title] => JSON API paints my bikeshed!
[body] => The shortest article. Ever.
[created] => 2015-05-22T14:56:29.000Z
[updated] => 2015-05-22T14:56:28.000Z
[location] => Array
(
[lat] => 0.00
[long] => 0.00
)
)
[relationships] => Array
(
[author] => Array
(
[data] => Array
(
[id] => 42
[type] => people
)
)
)
)
)
[included] => Array
(
[0] => Array
(
[type] => people
[id] => 42
[attributes] => Array
(
[name] => John
[age] => 80
[gender] => male
)
)
)
)
这里location包含一个数组,所以这将是一个嵌套对象。
是的,请查看:http://jsonapi.org/format/#document-resource-object-attributes
Complex data structures involving JSON objects and arrays are allowed
as attribute values. However, any object that constitutes or is
contained in an attribute MUST NOT contain a relationships or links
member, as those members are reserved by this specification for future
use.
这是我们第一次在我们的项目中使用 JSON API,根据他们网站上的规范,这是常规的 JSON API 响应应该看起来像
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z"
},
"relationships": {
"author": {
"data": {"id": "42", "type": "people"}
}
}
}],
"included": [
{
"type": "people",
"id": "42",
"attributes": {
"name": "John",
"age": 80,
"gender": "male"
}
}
]
}
我们不确定,数据中的属性是否应该始终是扁平的,或者属性也可以包含嵌套对象,例如位置
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z",
"location":
{
"lat": "0.00",
"long": "0.00"}
},
解码你的 JSON 后,结果是 -
Array
(
[data] => Array
(
[0] => Array
(
[type] => articles
[id] => 1
[attributes] => Array
(
[title] => JSON API paints my bikeshed!
[body] => The shortest article. Ever.
[created] => 2015-05-22T14:56:29.000Z
[updated] => 2015-05-22T14:56:28.000Z
[location] => Array
(
[lat] => 0.00
[long] => 0.00
)
)
[relationships] => Array
(
[author] => Array
(
[data] => Array
(
[id] => 42
[type] => people
)
)
)
)
)
[included] => Array
(
[0] => Array
(
[type] => people
[id] => 42
[attributes] => Array
(
[name] => John
[age] => 80
[gender] => male
)
)
)
)
这里location包含一个数组,所以这将是一个嵌套对象。
是的,请查看:http://jsonapi.org/format/#document-resource-object-attributes
Complex data structures involving JSON objects and arrays are allowed as attribute values. However, any object that constitutes or is contained in an attribute MUST NOT contain a relationships or links member, as those members are reserved by this specification for future use.