как сохранить результат ответа JSON -RP C на переменную? - PullRequest
0 голосов
/ 09 марта 2020

{"result": 204, "id": "1", "jsonrp c": "2.0"}

это результат запроса json -rp c для общего количества базы данных. таким образом, общее количество документов в базе данных составляет 204. как получить значение 204 и сохранить его в переменной, чтобы я мог использовать его для выполнения некоторых арифметических c операций?

Ответы [ 3 ]

1 голос
/ 09 марта 2020

Вы можете использовать этот код [в php, потому что не сказали, какой язык использовать]:

$array = json_decode('{"result": 204, "id": "1", "jsonrpc": "2.0"}' , true);
$result = $array["result"];
echp $result;

вывод будет таким:

240
0 голосов
/ 09 марта 2020

Из вашего вопроса не ясно, используете ли вы Angular или AngularJS. Потому что между этими версиями существует четкое различие в обработке данных. Судя по вашим комментариям к ответу @ToTaTaRi, вы можете использовать AngularJS. В этом случае попробуйте следующий код

$http.get("<your url here>")
.then(function(response) { // handle response
  $scope.result = response.data.result;
}, function(response) { // handle error
  $scope.content = "Something went wrong";
});

Если вы все еще не уверены, имеет ли значение result тип номер, то приведите его от строки к номеру, используя этот ответ. .

0 голосов
/ 09 марта 2020

Если вы выполняете запрос с angular http-клиентом, поведение по умолчанию состоит в том, что вы возвращаете тело ответа как json объект ... Таким образом, вы можете просто прочитать его свойства, то есть:

http.get('test.de').subscribe( (res) => { let test = res.result}); 
console.log(test);

Итак, какой язык / рамки вы используете?

Если вы получите объект ответа, как описано в нашем комментарии через "res. json ()", он будет таким же, вы можете прочитать его свойства ... Я не думаю, что необходимо делать json декодирование, потому что это уже должен быть json объект. Если вы пишете в TypeScript, компилятору может не понравиться то, что он не знает определения объекта, но вы можете просто привести тип ответа к любому, объекту или json, и он должен работать!

РЕДАКТИРОВАТЬ: поскольку это AngularJS, а не Angular2 +, тело ответа находится в свойстве, называемом «data» объекта ответа angular http, и типы не имеют значения, потому что оно простое js, поэтому вызов должен выглядеть следующим образом:

http.get('test.de').subscribe( (res) => { let test = res.data.result});
console.log(test); // => Output: 204

EDIT2: Если это так, я ошибся, и вы пишете на машинописном тексте, и вы используете текущий выпуск angular и не angularJS вы должны были бы разыграть кого-либо первым! Но было бы лучше создать интерфейс или класс, описывающий ответ ...

Не очень красивый способ:

http.get<any>('test.de').subscribe( (res) => { let test = res.result});

ИЛИ

http.get('test.de').subscribe( (res: any) => { let test = res.result});

Более симпатично путь:

interface BasicApiResponse {
    result: JSON | string | number | any; // => here it depends on the specific request...
    id: number;
    jsonrpc: string;
}

Тогда вы можете сделать s.th. как:

http.get<BasicApiResopnse>('test.de').subscribe( (res: BasicApiResopnse) => { let test = res.result});
...