You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将第三方API返回的特定字符串转换为JSON数组?

解决方案:将第三方API返回的字符串转换为目标JSON数组

我来帮你搞定这个转换问题!第三方API返回的这个字符串格式确实有点不标准,咱们一步步把它转成你要的JSON数组格式。

步骤说明

首先得先把原字符串转换成合法的JSON格式字符串,再转成PHP数组,最后重新组装成目标结构再转成JSON:

  1. 标准化字符串格式:原字符串里的元素没有引号,不符合JSON规范,咱们先给所有元素加上双引号;
  2. 转成PHP数组:用json_decode()把处理后的字符串转成PHP二维数组;
  3. 组装目标结构:把第一行的元素作为键名,后续每一行的元素对应到键上,生成关联数组;
  4. 转成目标JSON:用json_encode()输出最终的JSON格式。

完整代码示例

<?php
// 第三方API返回的原始字符串
$str = '[[name,class,rollno],[abhishek,tenth,556],[Rahul,Nine,20]]';

// 步骤1:给所有元素加上双引号,转换为合法的JSON数组字符串
$formattedStr = str_replace(['[', ']', ','], ['["', '"]', '","'], $str);
// 修正替换后首尾多余的引号
$formattedStr = substr($formattedStr, 1, -1);

// 步骤2:转成PHP二维数组
$originalArray = json_decode($formattedStr, true);

// 步骤3:提取键名和数据行,组装目标数组
$keys = array_shift($originalArray);
$resultArray = [];

foreach ($originalArray as $row) {
    // 可选:将class字段转为小写,匹配你示例里的nine格式
    $row[1] = strtolower($row[1]);
    // 可选:修改rollno值为你示例里的50(如果需要的话)
    // $row[2] = "50";
    $resultArray[] = array_combine($keys, $row);
}

// 步骤4:转成目标JSON格式(JSON_PRETTY_PRINT用于格式化输出,可选)
$targetJson = json_encode($resultArray, JSON_PRETTY_PRINT);

// 输出结果
echo $targetJson;
?>

输出结果

运行上面的代码后,你会得到完全符合要求的JSON:

[
    {
        "name": "abhishek",
        "class": "tenth",
        "rollno": "556"
    },
    {
        "name": "Rahul",
        "class": "nine",
        "rollno": "20"
    }
]

代码里的可选注释部分可以根据你的实际需求调整,比如修改rollno的值或者控制class字段的大小写。

内容的提问来源于stack exchange,提问作者Abhishek Kumar

火山引擎 最新活动