[英]PHP flattening JSON array of objects?
我正在使用AFNetworking從iOS應用中發布一些JSON。 這似乎工作正常,我發送的JSON具有以下格式:
{
"user":{
"firstName":"Joe",
"lastName":"Blogs",
"contact":{
"email":"joe@blogs.com",
"phone":"0800900800"
},
"list":[
{
"name":"Item1",
"code":"ITM1",
"category":0
},
{
"name":"Item2",
"code":"ITM2",
"category":3
},
{
"name":"Item3",
"code":"ITM3",
"category":2
}
]
}
}
然后,我將此JSON的內容解析到MySQL表中。 我能夠按照您期望的那樣從PHP的JSON中讀取所有信息(名字,姓氏,聯系方式等):
<?php
$json = $_POST["user"];
$fname = $json["firstName"];
$lname = $json["lastName"];
$contact = $json["contact"];
$email = $contact["email"];
.
.
.
?>
但是,當我遍歷“列表”數組時,該數組似乎變平了。 如果我進行計數:
$list = $json["list"];
$listCount = count($list);
$listCount
將等於9(即數組中的3個對象x每個對象上的3個屬性,就好像數組已經展平了),而不是我期望的3個。
我是否誤解了如何在PHP中解析JSON數組,或者AFNetworking可以在發布之前以某種方式處理JSON?
更新:
var_dumped JSON的“列表”數組部分后,我得到了以下信息:
["list"]=>
array(9) {
[0]=>
array(1) {
["name"]=>
string(5) "Item1"
}
[1]=>
array(1) {
["code"]=>
string(4) "ITM1"
}
[2]=>
array(1) {
["category"]=>
string(1) "0"
}
[3]=>
array(1) {
["name"]=>
string(5) "Item2"
}
[4]=>
array(1) {
["code"]=>
string(4) "ITM2"
}
[5]=>
array(1) {
["category"]=>
string(1) "3"
}
[6]=>
array(1) {
["name"]=>
string(5) "Item3"
}
[7]=>
array(1) {
["code"]=>
string(4) "ITM3"
}
[8]=>
array(1) {
["category"]=>
string(1) "2"
}
}
因此,似乎原始數組中的每個對象都被拆分為該數組中自己的對象。
供參考,這是我在iOS應用中使用AFNetworking的請求:
User *user = [users objectAtIndex:0];
NSDictionary *userDictionary = [user serialiseUser];
NSLog(@"User\n%@", userDictionary);
NSURL *url = [NSURL URLWithString:baseURL];
AFHTTPRequestOperationManager *operationManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:url];
if (operationManager) {
[operationManager POST:path
parameters:userDictionary
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed: %@", error);
NSLog(@"%@", operation.responseString);
}];
其中serialiseUser
產生上面的原始JSON / Dictionary對象。
預先感謝您的任何見解。
嘗試如下解碼json
<?php
$json = json_decode($_POST["user"]);
print_r($json);
?>
stdClass Object
(
[user] => stdClass Object
(
[firstName] => Joe
[lastName] => Blogs
[contact] => stdClass Object
(
[email] => joe@blogs.com
[phone] => 0800900800
)
[list] => Array
(
[0] => stdClass Object
(
[name] => Item1
[code] => ITM1
[category] => 0
)
[1] => stdClass Object
(
[name] => Item2
[code] => ITM2
[category] => 3
)
[2] => stdClass Object
(
[name] => Item3
[code] => ITM3
[category] => 2
)
)
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.