当前位置: 首页 > 知识库问答 >
问题:

当json_解码、stripslashes和其他解决方案不起作用时,如何在php中解析json?

孟财
2023-03-14

我知道这种类型的问题已经被问过多次在这个论坛上但我已经看了无数的变化的问题并尝试了许多不同的解决方案没有一个是工作的所以我想我会粘贴我的实际代码的情况下我是完全错过了什么。所以我正在访问CRM的API并接收json输出。产出如下:

{"access_token":"415db7610058604900566bdd","expires":1639406913,"expires_in":3600,"scope":"granted_permission","domain":"bitrix24.com","server_endpoint":"https:\/\/oauth.bitrix.info\/rest\/","status":"L","client_endpoint":"https:\/\/bitrix24.com\/rest\/","member_id":"**************","user_id":8,"refresh_token":"31dcde610058604900566bdd00000008f0f1037319823fdbcad5b438d3098146949075"}

这是我在使用cURL发布一个URL后得到的输出,该URL允许生成一个refresh_令牌,这可以在json输出中看到。我必须解析json以获取新的刷新令牌,以便在令牌过期时重新输入它。

经过研究,我了解到可以使用json_decode函数通过PHP解析json,我尝试了许多不同的方法,尝试了trim、true、stripslashes和更多变体的函数。

当我运行下面的代码时,我可以回显$result变量并查看json,但是当我尝试回显从json输出解析的refresh_标记时,我得到的只是一个空白屏幕,无论我尝试使用哪种方法,或者即使我使用var_dump。如果有人能解释我做错了什么,我是否应该导入某种外部库,或者我是否在某个地方遗漏了一步,那将不胜感激。

<?php header("Content-Type: application/json; charset=UTF-8");
ini_set("allow_url_fopen", 1);

$client_id = "**********";
$secret_id = "****************";
$refresh_token = "94dade610058604900566bdd00000008f0f103f252c645ad3779a511ca2346b2fe9f27";
$refresh_token2 = "";


if($refresh_token2 == "") {
    $url = "https://bitrix24.com/oauth/token/?grant_type=refresh_token&client_id=" . $client_id . "&client_secret=" . $secret_id . "&refresh_token=" . $refresh_token . "&scope=granted_permission&redirect_uri=app_URL";

    // Initialize a CURL session.
    $ch = curl_init();

    // Return Page contents.
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //grab URL and pass it to the variable.
    curl_setopt($ch, CURLOPT_URL, $url);

    $result = curl_exec($ch);
    curl_close($ch);
    echo $result;
    

    $json = file_get_contents($result);
    $obj = json_decode($json, true);
    var_dump($obj);


}

共有1个答案

卜勇
2023-03-14

你为什么用这个

$json = file_get_contents($result);

在curl_close($ch)语句之后,尝试添加:

$json = json_decode($result, true);
print_r($json);

如果有效,您应该能够执行以下操作:

echo $json['refresh_token'];
 类似资料:
  • 一切都很顺利,然后我运行我的代码,我得到了这个错误。 我已经尝试过以下解决方案(没有任何效果): http://stackoverflow.com/questions/22000423/javafx-and-maven-nullpointerexception-location-is-required 应用程序启动方法javafx gui中出现异常 应用程序启动方法中出现异常 JavaFX“loc

  • 我写了一个相当基本的js函数,它以编程方式自动将iPhone键盘完美地对准每一个聚焦的输入字段(如果你喜欢,可以随意使用它!)。对齐主要由window.scroll处理——这是一种标准方法,适用于任何浏览器视图,UIWebView除外,因此是phonegap/cordova(2.1)。所以我需要一个变通方法。 我的工作代码: 工作在一切,但UIWebView,这是。正如我上面提到的,除了windo

  • 我有以下代码: 它返回json结果后的示例,但不返回访问令牌(尽管json_解码)。curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);不返回下面的令牌。谢谢你帮助我。

  • 本文向大家介绍php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案,包括了php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案的使用技巧和注意事项,需要的朋友参考一下 PHP5.4才支持JSON_UNESCAPED_UNICODE这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量。但在PHP

  • 问题内容: 如今,哪个XMPP库将是Android开发的最佳选择? 我一直在使用修补过的Smack库,如本文其他许多问题所建议的那样。但是,那是两年前Smack API的补丁版本。尽管总体上效果不错,但我正在探索其他任何最新的选择。 我一直在研究官方的Smack API,经过一些研究,现在看来它可能还不错(尽管我还没有在实际的应用程序中尝试过它)。 我遇到的另一个解决方案是Beem的aSMACK库

  • 本文向大家介绍Java解析JSON数据时报错问题解决方案,包括了Java解析JSON数据时报错问题解决方案的使用技巧和注意事项,需要的朋友参考一下 一、问题由来 测试人员最近在测试时,后台日志一直抱错,大致意思是JSON数据解析错误,错误信息如下: 二、问题分析 去查看代码时,发现异常信息是这里抛出来的,解析时使用的是json-lib这个包中的方法; 然后进一步排查错误,将里面的测试数据复制出来查