duandi8838 2016-03-22 21:40
浏览 85

如何使用PHP将其解析为数组?

Apple's app store sends this object back as a receipt. I want to parse it into an array. What's the easiest way to do this?

{
    "signature" = "AlHSJDRPuOhUBrIarX84l/YeP+ZpxYyd592/oyF7MkVYb/s13L2W8ag2C+PG0wSHPthbv9dNMBsG4TGg3aP7r7N+oa9Rsp9C3Qu03Z9b7PRzYM2KGXHDmOMk7vDpeMVlLDPSGYz1+U3sDxJzebSpbaJmT7imzUKfggEY7xxf4czfH0yj5wNzSGTOvQ==";
    "purchase-info" = "ewoJIm9yaWdpbmFsLXB1cmNoYXNlLWRhdGUtcHN0IiA9ICIyMDE2LTAzLTIyIDEwOjUxOjAzIEFtZXJpY2EvTG9zX0Fucm9wYXRoLmZpcnN0IjsKCSJwdXJjaGFzZS1kYXRlLXBzdCIgP0wMy0yMiAxMDo1MTowMSBBbWVyaWNhL0xvc19BbmdlbGVzIjsKCSJxdWFudGl0eSIgPSAiMSI7Cn0=";
    "environment" = "Sandbox";
    "pod" = "100";
    "signing-status" = "0";
}

Please notice that it's not JSON, and json_decode does not work on it.

  • 写回答

1条回答 默认 最新

  • dongtangyi8962 2016-03-22 21:56
    关注

    Here is another quick example which may be a little easier to read for those not used to regular expressions:

    $response = '{
    "signature" = "AlHSJDRPuOhUBrIarX84l/YeP+ZpxYyd592/oyF7MkVYb/s13L2W8ag2C+PG0wSHPthbv9dNMBsG4TGg3aP7r7N+oa9Rsp9C3Qu03Z9b7PRzYM2KGXHDmOMk7vDpeMVlLDPSGYz1+U3sDxJzebSpbaJmT7imzUKfggEY7xxf4czfH0yj5wNzSGTOvQ==";
    "purchase-info" = "ewoJIm9yaWdpbmFsLXB1cmNoYXNlLWRhdGUtcHN0IiA9ICIyMDE2LTAzLTIyIDEwOjUxOjAzIEFtZXJpY2EvTG9zX0Fucm9wYXRoLmZpcnN0IjsKCSJwdXJjaGFzZS1kYXRlLXBzdCIgP0wMy0yMiAxMDo1MTowMSBBbWVyaWNhL0xvc19BbmdlbGVzIjsKCSJxdWFudGl0eSIgPSAiMSI7Cn0=";
    "environment" = "Sandbox";
    "pod" = "100";
    "signing-status" = "0";
    }';
    
    $response = trim(str_replace(array('{', '}', '"', '    ', ';'), '', $response));
    $responseLines = explode("
    ", $response);
    
    $result = array();
    foreach ($responseLines as $responseLine) {
        $lineElements = explode(" = ", $responseLine);
        $result[$lineElements[0]] = $lineElements[1];
    }
    
    var_dump($result);
    
    评论

报告相同问题?

悬赏问题

  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序