PHP-使用特定索引/键将数组转换为json
我收到一个数组,希望通过在PHP中使用带有特定索引/键的json_encode将其转换为json。数组结果:PHP-使用特定索引/键将数组转换为json,php,arrays,json,Php,Arrays,Json,我收到一个数组,希望通过在PHP中使用带有特定索引/键的json_encode将其转换为json。数组结果: {"StatusCode": "2800", "card": { "studentcard": { "1000": [ { "Name": "Jerome", "CardNumber": "512314512312", "CardExpiry": "2017-03-24", "CardType": "Library", }, { "Name": "Jerome", "C
{"StatusCode": "2800",
"card": {
"studentcard": {
"1000": [
{
"Name": "Jerome",
"CardNumber": "512314512312",
"CardExpiry": "2017-03-24",
"CardType": "Library",
},
{
"Name": "Jerome",
"CardNumber": "512314512312-b",
"CardExpiry": "2017-10-22",
"CardType": "IT",
}],
"1001": [
{
"Name": "Jason",
"CardNumber": "512314512313",
"CardExpiry": "2017-10-22",
"CardType": "Library",
}]
}
JSON中的预期结果
[
{
"Name": "Jerome",
"CardNumber": "512314512312",
"CardExpiry": "2017-03-24",
"CardType": "Library"
},
{
"Name": "Jerome",
"CardNumber": "512314512312-b",
"CardExpiry": "2017-10-22",
"CardType": "IT"
},
{
"Name": "Jason",
"CardNumber": "512314512313",
"CardExpiry": "2017-10-22",
"CardType": "Library"
}
]
如何删除StatusCode、card、studentcard、1000并将其编码为JSON中的预期结果?使用
JSON\u decode
和array\u merge
函数的有效JSON字符串解决方案:
$json_str = '{
"StatusCode": "2800",
"card": {
"studentcard": {
"1000": [{
"Name": "Jerome",
"CardNumber": "512314512312",
"CardExpiry": "2017-03-24",
"CardType": "Library"
}, {
"Name": "Jerome",
"CardNumber": "512314512312-b",
"CardExpiry": "2017-10-22",
"CardType": "IT"
}],
"1001": [{
"Name": "Jason",
"CardNumber": "512314512313",
"CardExpiry": "2017-10-22",
"CardType": "Library"
}]
}
}
}';
$data = json_decode($json_str, true);
$data = array_merge($data["card"]["studentcard"]["1000"], $data["card"]["studentcard"]["1001"]);
$json = json_encode($data, JSON_PRETTY_PRINT);
echo $json;
输出:
[
{
"Name": "Jerome",
"CardNumber": "512314512312",
"CardExpiry": "2017-03-24",
"CardType": "Library"
},
{
"Name": "Jerome",
"CardNumber": "512314512312-b",
"CardExpiry": "2017-10-22",
"CardType": "IT"
},
{
"Name": "Jason",
"CardNumber": "512314512313",
"CardExpiry": "2017-10-22",
"CardType": "Library"
}
]
您可以使用
调用用户函数数组('array\u merge',…)展平该数组。
:
看到它在或上运行
请注意,在JSON中,对象的最后一个属性后面不能有逗号(即右大括号之前)。此外,您还缺少两个右大括号。初始json无效这只是一个猜测,但他可能需要一个解决方案,该解决方案不需要硬编码
1000
和1001
,并且可以处理学生卡中的两个以上元素。您的解决方案非常有效。别想了。感谢对json格式的更正。编辑
$obj = json_decode($json, true);
$result = call_user_func_array('array_merge', $obj["card"]["studentcard"]);
$json = json_encode($result, JSON_PRETTY_PRINT);