#chainlink
Вопрос:
У меня есть задание для внешнего адаптера, добавленного в мой локальный узел цепочки. Это ошибка, когда я делаю первоначальный запрос. Моя проблема сводится к синтаксической ошибке или использованию неправильного пути. Но я не знаю, где узнать, каким должен быть синтаксис. Или я неправильно понял путь?
Ниже приведено определение моей работы.
type = "directrequest" schemaVersion = 1 name = "f1latestresults" contractAddress = "0x765aCc258f3a7b2D8d103D1A9310fc51b07D5425" maxTaskDuration = "0s" observationSource = """ decode_log [type=ethabidecodelog abi="OracleRequest(bytes32 indexed specId, address requester, bytes32 requestId, uint256 payment, address callbackAddr, bytes4 callbackFunctionId, uint256 cancelExpiration, uint256 dataVersion, bytes data)" data="$(jobRun.logData)" topics="$(jobRun.logTopics)"] decode_cbor [type=cborparse data="$(decode_log.data)"] fetch [type=bridge name="raceresults" requestData="{\"id\":$(jobSpec.externalJobID),\"data\":{\"position\":\"0\"}}"] parse [type=jsonparse **path="data,MRData,RaceTable,Races[0],Results[0],number"** data="$(fetch)"] encode_data [type=ethabiencode abi="(uint256 value)" data="{ \"value\": $(parse) }"] encode_tx [type=ethabiencode abi="fulfillOracleRequest(bytes32 requestId, uint256 payment, address callbackAddress, bytes4 callbackFunctionId, uint256 expiration, bytes32 data)" data="{\"requestId\": $(decode_log.requestId), \"payment\": $(decode_log.payment), \"callbackAddress\": $(decode_log.callbackAddr), \"callbackFunctionId\": $(decode_log.callbackFunctionId), \"expiration\": $(decode_log.cancelExpiration), \"data\": $(encode_data)}" ] submit_tx [type=ethtx to="0x765aCc258f3a7b2D8d103D1A9310fc51b07D5425" data="$(encode_tx)"] decode_log -gt; decode_cbor -gt; fetch -gt; parse -gt; encode_data -gt; encode_tx -gt; submit_tx """ externalJobID = "524e150a-b92b-48a3-b85b-abf7218d73f4"
Это фрагмент данных, возвращенных в задание.
{ "MRData": { "xmlns": "http://ergast.com/mrd/1.4", "series": "f1", "url": "http://ergast.com/api/f1/current/last/results.json", "limit": "30", "offset": "0", "total": "20", "RaceTable": { "season": "2021", "round": "17", "Races": [{ "season": "2021", "round": "17", "url": "http://en.wikipedia.org/wiki/2021_United_States_Grand_Prix", "raceName": "United States Grand Prix", "Circuit": { "circuitId": "americas", "url": "http://en.wikipedia.org/wiki/Circuit_of_the_Americas", "circuitName": "Circuit of the Americas", "Location": { "lat": "30.1328", "long": "-97.6411", "locality": "Austin", "country": "USA" } }, "date": "2021-10-24", "time": "19:00:00Z", "Results": [{ "number": "33", "position": "1", "positionText": "1", "points": "25", "Driver": { "driverId": "max_verstappen", "permanentNumber": "33", "code": "VER", "url": "http://en.wikipedia.org/wiki/Max_Verstappen", "givenName": "Max", "familyName": "Verstappen", "dateOfBirth": "1997-09-30", "nationality": "Dutch" },
С полными результатами можно ознакомиться здесь. http://ergast.com/api/f1/current/last/results.json
Ответ №1:
Можете ли вы попробовать снять квадратные скобки и использовать запятые. т. е. вместо
Races[0]
Попробуй
Races,0
т.е.:
data,MRData,RaceTable,Races,0,Results,0,number
Если это не сработает, пожалуйста, опубликуйте весь свой вывод JSON
Комментарии:
1. Спасибо, Гарри, это все уладило для меня. Теперь работа завершена.