Wie rufe ich mit Oraclize bestimmte Daten basierend auf Benutzereingaben von der URL ab?

Ich verwende 'testrpc' und 'truffle' für die Entwicklung.

Das Folgende ist der verwendete Vertragscode.

pragma solidity ^0.4.0;
import "./usingOraclize.sol";

contract WeatherApiCall is usingOraclize {

           function WeatherApiCall() {
              OAR = OraclizeAddrResolverI(0x5049063e4a7704ac155e4f1f42a4954bbef5bbde);
           }

           function __callback(bytes32 myid, string result) {
                if (msg.sender != oraclize_cbAddress()) throw;

                }

           function update() payable  {
                  oraclize_query("URL", "json(http://api.openweathermap.org/data/2.5/forecast?q='india'&mode=json&APPID=d2e8279188c8649c17540f798c9cc972).list.0.weather.0.main");
           }
 }

Die JSON-Struktur der URL ist wie folgt: -

    {
            "city": {
                  "id": 1273840,
                  "country": "IN" 
            },
            "list": [
                     {
                      "dt": 1486360800,
                       "weather": [
                                     {
                                       "id": 500,
                                       "main": "Rain",
                                       "description": "light rain"
                                      }
                                  ],
                                  "dt_txt": "2017-02-06 06:00:00"
                        },
                        {
                          "dt": 1486371600,
                           "weather": [
                                       {
                                        "id": 801,
                                        "main": "Clouds",
                                        "description": "few clouds"
                                      }
                                     ],
                                       "dt_txt": "2017-02-06 09:00:00"
                                     }
                          ]
           }

Die angegebene URL "json( http://api.openweathermap.org/data/2.5/forecast?q= 'india'&mode=json&APPID=d2e8279188c8649c17540f798c9cc972).list.0.weather.0.main" gibt das Ergebnis als "Rain ".

Ich muss das Ergebnis als „Regen“ oder „Wolken“ abrufen, basierend auf der vom Benutzer angegebenen Datumseingabe? Wie können wir die Wetterbedingungen basierend auf der Benutzereingabe abrufen?

Antworten (1)

Die Oraclizequery in solidity soll wie folgt aktualisiert werden:-

 oraclize_query("URL", "json(http://api.openweathermap.org/data/2.5/forecast?q='india'&mode=json&APPID=d2e8279188c8649c17540f798c9cc972).list[?(@.dt_txt='2017-02-08 12:00:00')].weather[0].main");

Das Ergebnis wird nach Bedarf zurückgegeben.