首页 > 解决方案 > 如何将 JSON-RPC 响应的结果存储到变量中?

问题描述

{“结果”:204,“id”:“1”,“jsonrpc”:“2.0”}

这是对数据库总数的 json-rpc 请求的结果。所以数据库中的文档总数为 204。如何获取值 204 并将其存储在变量中,以便我可以使用它来执行一些算术运算?

标签: angularjson-rpc

解决方案


如果您使用 Angular http 客户端执行请求,默认行为是您将响应主体作为 json 对象返回......所以您可以读取它的属性,即:

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

那么您使用的是什么语言/框架?

如果您通过“res.json()”获得我们评论中描述的响应对象,那将是相同的,您可以读取它的属性...我认为没有必要进行 json 解码,因为它已经应该是一个 json 对象。如果您使用 TypeScript 编写,编译器可能不喜欢他不知道对象的定义,但您可以将响应类型转换为 any、object 或 json,它应该可以工作!

编辑:因为它是 AngularJS 而不是 Angular2+,所以响应主体位于角度 http 响应对象的一个​​名为“数据”的属性中,类型无关紧要,因为它是纯 js,所以调用应该如下所示:

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

EDIT2:如果是我弄错了并且您正在使用打字稿编写并且您使用的是当前的角度版本而不是 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;
}

然后你可以做某事。喜欢:

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

推荐阅读