Доступ к значениям объекта класса Std из строки JSON в PHP - PullRequest
0 голосов
/ 21 октября 2019

Я получаю строку JSON от API, которую затем декодирую в массив. Массив полон объектов и массивов stdClass, но я не могу получить доступ к свойствам.

Это массив, который я декодировал из JSON, а затем вызвал print_r:

stdClass Object
(
[scannedDocument] => stdClass Object
    (
        [scanId] => 6188703b5450ed927159cbbbb223fc89
        [totalWords] => 7
        [totalExcluded] => 0
        [credits] => 1
        [creationTime] => 2019-10-21T10:33:18
    )

[results] => stdClass Object
    (
        [internet] => Array
            (
            )

        [database] => Array
            (
            )

        [batch] => Array
            (
            )

        [score] => stdClass Object
            (
                [identicalWords] => 0
                [minorChangedWords] => 0
                [relatedMeaningWords] => 0
                [aggregatedScore] => 0
            )

    )

[status] => 0

)

Я предполагаю, что должен получить доступ к первому значению массива изатем используя -> чтобы получить значения объекта следующим образом:

$wordcount = $jsonResponse[0]->scannedDocument->totalWords;
$totalExcluded = $jsonResponse[0]->scannedDocument->totalExcluded;
$percent = $jsonResponse[0]->results->score->aggregatedScore;

Но эти переменные пустые. Я рву свои волосы!

Есть идеи, пожалуйста?

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете преобразовать ваш объект в массив или stdClass и получить к нему доступ с помощью одной из этих функций в соответствии с типом объекта

function ConvertToObject($array) {
    $object = new stdClass();
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            $value = ConvertToObject($value);
        }
        if (isset($value)) {
            $object->$key = $value;
        }
    }
    return $object;
}
function ConvertToArray($obj) {
    if (is_object($obj))
        $obj = (array) $obj;
    if (is_array($obj)) {
        $new = array();
        foreach ($obj as $key => $val) {
            $new[$key] = ConvertToArray($val);
        }
    } else {
        $new = $obj;
    }
    return $new;
}
...