提问人:Srikanth Alva 提问时间:6/15/2023 更新时间:6/15/2023 访问量:14
如何使用chainlink API消费者合约从json响应中获取深度嵌套的值
How to access deeply nested value from json response using chainlink API consumer contracts
问:
我已经测试了与 api 的连接,它有效。在 Polygon 孟买测试网上对此进行测试。
我正在尝试从 json 响应中访问 duration.value 和 distance.value。我无法满足我的请求。
API 响应
"destination_addresses" : [
"Dharmapuri, Forest Colony, Tajganj, Agra, Uttar Pradesh 282001, India"
],
"origin_addresses" : [
"Netaji Subhash Marg, Lal Qila, Chandni Chowk, New Delhi, Delhi 110006, India"
],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "137 mi",
"value" : 220239
},
"duration" : {
"text" : "3 hours 12 mins",
"value" : 11503
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
Solidity 代码
constructor() {
setChainlinkToken(0x326C977E6efc84E512bB9C30f76E30c160eD06FB); //
setChainlinkOracle(0x40193c8518BB267228Fc409a613bDbD8eC5a97b3);
oracle = 0x40193c8518BB267228Fc409a613bDbD8eC5a97b3;
jobId ="ca98366cc7314957b8c012c72f05aeeb"; // for uint256
//jobId = "7d80a6386ef543a3abb52817f6707e3b"; // for string
fee = (1 * LINK_DIVISIBILITY) / 10; // 0.1 * 10**18 (Varies by network and job)
}
function requestRide() public {
// Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfillPrice.selector);
// request.add("url", "https://maps.googleapis.com/");
// request.add("queryParams", string(abi.encode("Pickup=", _pickup, "&drop=", _drop, "&api_key=", getApiKey())));
Chainlink.Request memory req = buildChainlinkRequest(
jobId,
address(this),
this.fulfillDistance.selector
);
// AIzaSyDF0rgz17j9QPI94NwD8RPic8ktViw8yIU
req.add(
"get",
"https://maps.googleapis.com/maps/api/distancematrix/json?destinations=Taj%20Mahal&origins=Red%20Fort&units=imperial&key=API_KEY"
);
req.add("path", "rows,0,elements,0,distance,value");
sendChainlinkRequest(req, fee);
}
尝试了这些变化
- req.add(“路径”, “行,0,元素,0,距离,值”);
- req.add(“路径”, “rows.0.elements.0.distance.value”);
- 尝试了更多变体,但似乎没有一个能满足请求。
任何正确方向的帮助都会非常受欢迎。
提前致谢。
答: 暂无答案
评论