You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用Koinex API时无法解码嵌套JSON的问题求助

Fixing Nested JSON Decoding Issues with Koinex API in PHP

Hey there! Let's work through that nested JSON decoding problem you're hitting with your Koinex API request. I'll walk you through common pitfalls and a revised version of your code that should resolve this.

First, Let's Diagnose the Problem

Your current code is missing two key checks that often cause JSON decoding headaches:

  • Curl request errors: You haven't added logic to catch if the curl request itself fails (like network timeouts, connection issues, etc.)
  • JSON validation: You aren't verifying if the JSON decoding actually succeeded, which helps pinpoint if the issue is with the API response or your code.

Revised Code with Error Handling & Proper JSON Decoding

Here's an updated version of your code that addresses both points, and properly handles nested JSON structures:

<?php
$getCurrency = "inr";
$displayArrayOutput = true;

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://koinex.in/api/ticker",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
));

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

// Step 1: Catch curl request failures first
if ($err) {
    echo "Curl Error: " . $err;
    exit;
}

// Step 2: Decode JSON into an associative array (the true flag unlocks easy nested access)
$decodedData = json_decode($response, true);

// Step 3: Verify JSON decoding worked
if (json_last_error() !== JSON_ERROR_NONE) {
    echo "JSON Decoding Error: " . json_last_error_msg();
    exit;
}

// Now access nested data with ease
if ($displayArrayOutput) {
    // Example: Fetch Bitcoin's price in INR
    if (isset($decodedData['prices'][$getCurrency]['BTC'])) {
        echo "BTC Price in INR: " . $decodedData['prices'][$getCurrency]['BTC'];
    }

    // Dump the full structure to explore all nested fields
    echo "<pre>";
    print_r($decodedData);
    echo "</pre>";
}
?>

Key Fixes Explained

  • Curl Error Handling: We now check $err right after executing the request to catch network issues before trying to decode JSON (no point decoding a failed response!).
  • Associative Array Decoding: The true parameter in json_decode($response, true) converts nested JSON objects into PHP associative arrays, so you can access nested values like $decodedData['prices']['inr']['ETH'] directly.
  • JSON Validation: Using json_last_error() and json_last_error_msg() tells you exactly why decoding failed (e.g., malformed JSON, empty response from the API).

Quick Troubleshooting Tips

If you still run into issues:

  • Print the raw $response to see what the API is actually sending back (it might not be valid JSON, or have a structure you didn't expect).
  • Check for Koinex API rate limits—too many rapid requests might return a non-JSON error response.
  • Ensure your PHP version is up to date (all modern versions support the json_decode options we're using).

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:29:14