Convert JSONVar to string Temperature from Open Weather

Hi, I'm trying to display in a matrix led the temperature from Open Weather.
I can display the integer part but not the decimals, so I get "9" no "9.8"
How may get the "9.8" in an string ?

 temp1 = int(my_obj["main"]["temp"]);   
 tempa = (String) temp1;

 String sub_S = tempa ;
 P.print(sub_S);                     // Display in matrix

Way too little context to be sure, but this looks like a convoluted way of saying

P.print(my_obj["main"]["temp"].as<String>());

I tried

tempa =(my_obj["main"]["temp"].as<String>());

and get this error 'class JSONVar' has no member named 'as'

and this:

P.print(my_obj["main"]["temp"].as<String>());

error : 'class JSONVar' has no member named 'as'

Like I said, insufficient context. Please post your full code and links to the libraries you're using, especially the one you're using for JSON.

Thanks for your answer, the idea is a clock and weather to display in a led matrix. is a esp8266

//  CLOCK AND WEATHER
//
//  
//  
//Weather
#include <ESP8266HTTPClient.h>
#include <Arduino_JSON.h>
String my_Api_Key = "e1e11b7969e4ea11abad3e947ba*****";
String my_city = "Buenos Aires"; //specify your city
String my_country_code = "AR"; //specify your country code
unsigned long last_time = 0;
unsigned long timer_delay = 30000;
String json_array;
WiFiClient wifiClient;

String tempa =  "9999"  ;
int temp1 = 0;

// Weather ^^^^^^^^^^^^^^

// MD_MAX72XX library can be found at https://github.com/MajicDesigns/MD_MAX72XX
//
#include <ESP8266WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
const char *ssid     = "TP-*****"; 
const char *password = "no*****";
// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");
 String time1 = "00000000";
 int timesec = 0 ;

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN   14
#define DATA_PIN  13
#define CS_PIN    12

// Hardware SPI connection
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

void setup(void)
{
  WiFi.begin(ssid, password);
// Initialize a NTPClient to get time
   timeClient.begin();
   timeClient.setTimeOffset(-10800);
   Serial.begin(57600);
pinMode(16, OUTPUT);
 digitalWrite(16, HIGH); 
  P.begin();
  P.print("Hello!");
}

void loop(void)
{
// Wheather ============================================

   unsigned long timert = (millis() - last_time);
  if ( timert > timer_delay) {
  
    if(WiFi.status()== WL_CONNECTED){
      String server = "http://api.openweathermap.org/data/2.5/weather?q=" + my_city + "," + my_country_code + "&APPID=" + my_Api_Key + "&units=metric";
      digitalWrite(16, LOW);
      json_array = GET_Request(server.c_str());
      Serial.println(json_array);
      JSONVar my_obj = JSON.parse(json_array);
  
      if (JSON.typeof(my_obj) == "undefined") {
        Serial.println("Parsing input failed!");
        return;
      }
    
      Serial.print("JSON object = ");
      Serial.println(my_obj);
      Serial.print("Temperature: ");
      Serial.println(my_obj["main"]["temp"]);
      Serial.print("Pressure: ");
      Serial.println(my_obj["main"]["pressure"]);
      Serial.print("Humidity: ");
      Serial.println(my_obj["main"]["humidity"]);
      Serial.print("Wind Speed: ");
      Serial.println(my_obj["wind"]["speed"]);
     // tempa = int(my_obj["main"]["temp"]);
 
    tempa = ( my_obj ["main"]["temp"]);
   
   
    }
    else {
      Serial.println("WiFi Disconnected");
    }
    last_time = millis();
  }


// Clock =====================================  
  timeClient.update(); // actualizo hora NTP
  time1 = timeClient.getFormattedTime(); // assign current time to var
  timesec = timeClient.getSeconds(); // assign seconds
   
unsigned char m1,m2,m3,m4,m5,m6,m7,m8;
int currentminu = timeClient.getMinutes();
int currentsec  = timeClient.getSeconds();
  
   // SECONDS SAND CLOCK ! 
  if (currentsec == 0  ) { m1 = 0; m2 = 0; m3 = 0; m4 = 0; m5 = 0;m6 = 0;m7 = 0;m8 = 0;} // zero
  if (currentsec == 1 ) { m1 = 128; } // second 1
  if (currentsec == 2 ) {  m1 = 128; m2 = 128; } // second 2
  if (currentsec == 3 ) {  m1 = 128;  m2 = 128; m3 = 128; } // second 3
  if (currentsec == 4 ) { m1 = 128;  m2 = 128; m3 = 128; m4 = 128; m5 = 0;  m6 = 0; m7 = 0; m8 = 0;} // second 4
  if (currentsec == 5 ) { m1 = 128;  m2 = 128; m3 = 128; m4 = 128; m5 = 128;  m6 = 0; m7 = 0; m8 = 0;} // second 5
  if (currentsec == 6 ) { m1 = 128;  m2 = 128; m3 = 128; m4 = 128; m5 = 128;  m6 = 128; m7 = 0; m8 = 0;} // second 6
  if (currentsec == 7 ) { m1 = 128;  m2 = 128; m3 = 128; m4 = 128; m5 = 128;  m6 = 128; m7 = 128; m8 = 0;} // second 7
  if (currentsec == 8 ) { m1 = 128;  m2 = 128; m3 = 128; m4 = 128; m5 = 128;  m6 = 128; m7 = 128; m8 = 128;} // second 8
  if (currentsec == 9 ) { m1 = 192;  m2 = 128; m3 = 128; m4 = 128; m5 = 128;  m6 = 128; m7 = 128; m8 = 128;} // second 9
  if (currentsec == 10 ) { m1 = 192;  m2 = 192; m3 = 128; m4 = 128; m5 = 128;  m6 = 128; m7 = 128; m8 = 128;} // second 10
  if (currentsec == 11 ) { m1 = 192;  m2 = 192; m3 = 192; m4 = 128; m5 = 128;  m6 = 128; m7 = 128; m8 = 128;} // second 11
  if (currentsec == 12 ) { m1 = 192;  m2 = 192; m3 = 192; m4 = 192; m5 = 128;  m6 = 128; m7 = 128; m8 = 128;} // second 12
  if (currentsec == 13 ) { m1 = 192;  m2 = 192; m3 = 192; m4 = 192; m5 = 192;  m6 = 128; m7 = 128; m8 = 128;} // second 12
  if (currentsec == 14 ) { m1 = 192;  m2 = 192; m3 = 192; m4 = 192; m5 = 192;  m6 = 192; m7 = 128; m8 = 128;} // second  
  if (currentsec == 15 ) { m1 = 192;  m2 = 192; m3 = 192; m4 = 192; m5 = 192;  m6 = 192; m7 = 192; m8 = 128;} // second 
  if (currentsec == 16 ) { m1 = 192;  m2 = 192; m3 = 192; m4 = 192; m5 = 192;  m6 = 192; m7 = 192; m8 = 192;} // second  
  if (currentsec == 17 ) { m1 = 224;  m2 = 192; m3 = 192; m4 = 192; m5 = 192;  m6 = 192; m7 = 192; m8 = 192;} //
  if (currentsec == 18 ) { m1 = 224;  m2 = 224; m3 = 192; m4 = 192; m5 = 192;  m6 = 192; m7 = 192; m8 = 192;} //
  if (currentsec == 19 ) { m1 = 224;  m2 = 224; m3 = 224; m4 = 192; m5 = 192;  m6 = 192; m7 = 192; m8 = 192;} //
  if (currentsec == 20 ) { m1 = 224;  m2 = 224; m3 = 224; m4 = 224; m5 = 192;  m6 = 192; m7 = 192; m8 = 192;} //
  if (currentsec == 21 ) { m1 = 224;  m2 = 224; m3 = 224; m4 = 224; m5 = 224;  m6 = 192; m7 = 192; m8 = 192;} //
  if (currentsec == 22 ) { m1 = 224;  m2 = 224; m3 = 224; m4 = 224; m5 = 224;  m6 = 224; m7 = 192; m8 = 192;} //
  if (currentsec == 23 ) { m1 = 224;  m2 = 224; m3 = 224; m4 = 224; m5 = 224;  m6 = 224; m7 = 224; m8 = 192;} //
  if (currentsec == 24 ) { m1 = 224;  m2 = 224; m3 = 224; m4 = 224; m5 = 224;  m6 = 224; m7 = 224; m8 = 224;} //
  if (currentsec == 25 ) { m1 = 240;  m2 = 224; m3 = 224; m4 = 224; m5 = 224;  m6 = 224; m7 = 224; m8 = 224;} //
  if (currentsec == 26 ) { m1 = 240;  m2 = 240; m3 = 224; m4 = 224; m5 = 224;  m6 = 224; m7 = 224; m8 = 224;} //
  if (currentsec == 27 ) { m1 = 240;  m2 = 240; m3 = 240; m4 = 224; m5 = 224;  m6 = 224; m7 = 224; m8 = 224;} //
  if (currentsec == 28 ) { m1 = 240;  m2 = 240; m3 = 240; m4 = 240; m5 = 224;  m6 = 224; m7 = 224; m8 = 224;} //
  if (currentsec == 29 ) { m1 = 240;  m2 = 240; m3 = 240; m4 = 240; m5 = 240;  m6 = 224; m7 = 224; m8 = 224;} //
  if (currentsec == 30 ) { m1 = 240;  m2 = 240; m3 = 240; m4 = 240; m5 = 240;  m6 = 240; m7 = 224; m8 = 224;} //
  if (currentsec == 31 ) { m1 = 240;  m2 = 240; m3 = 240; m4 = 240; m5 = 240;  m6 = 240; m7 = 240; m8 = 224;} //
  if (currentsec == 32 ) { m1 = 240;  m2 = 240; m3 = 240; m4 = 240; m5 = 240;  m6 = 240; m7 = 240; m8 = 240;} //
  if (currentsec == 33 ) { m1 = 248;  m2 = 240; m3 = 240; m4 = 240; m5 = 240;  m6 = 240; m7 = 240; m8 = 240;} //
  if (currentsec == 34 ) { m1 = 248;  m2 = 248; m3 = 240; m4 = 240; m5 = 240;  m6 = 240; m7 = 240; m8 = 240;} //
  if (currentsec == 35 ) { m1 = 248;  m2 = 248; m3 = 248; m4 = 240; m5 = 240;  m6 = 240; m7 = 240; m8 = 240;} //
  if (currentsec == 36 ) { m1 = 248;  m2 = 248; m3 = 248; m4 = 248; m5 = 240;  m6 = 240; m7 = 240; m8 = 240;} //
  if (currentsec == 37 ) { m1 = 248;  m2 = 248; m3 = 248; m4 = 248; m5 = 248;  m6 = 240; m7 = 240; m8 = 240;} //
  if (currentsec == 38 ) { m1 = 248;  m2 = 248; m3 = 248; m4 = 248; m5 = 248;  m6 = 248; m7 = 240; m8 = 240;} //
  if (currentsec == 39 ) { m1 = 248;  m2 = 248; m3 = 248; m4 = 248; m5 = 248;  m6 = 248; m7 = 248; m8 = 240;} //
  if (currentsec == 40 ) { m1 = 248;  m2 = 248; m3 = 248; m4 = 248; m5 = 248;  m6 = 248; m7 = 248; m8 = 248;} //
  if (currentsec == 41 ) { m1 = 252;  m2 = 248; m3 = 248; m4 = 248; m5 = 248;  m6 = 248; m7 = 248; m8 = 248;} //
  if (currentsec == 42 ) { m1 = 252;  m2 = 252; m3 = 248; m4 = 248; m5 = 248;  m6 = 248; m7 = 248; m8 = 248;} //
  if (currentsec == 43 ) { m1 = 252;  m2 = 252; m3 = 252; m4 = 248; m5 = 248;  m6 = 248; m7 = 248; m8 = 248;} //
  if (currentsec == 44 ) { m1 = 252;  m2 = 252; m3 = 252; m4 = 252; m5 = 248;  m6 = 248; m7 = 248; m8 = 248;} //
  if (currentsec == 45 ) { m1 = 252;  m2 = 252; m3 = 252; m4 = 252; m5 = 252;  m6 = 248; m7 = 248; m8 = 248;} //
  if (currentsec == 46 ) { m1 = 252;  m2 = 252; m3 = 252; m4 = 252; m5 = 252;  m6 = 252; m7 = 248; m8 = 248;} //
  if (currentsec == 47 ) { m1 = 252;  m2 = 252; m3 = 252; m4 = 252; m5 = 252;  m6 = 252; m7 = 252; m8 = 248;} //
  if (currentsec == 48 ) { m1 = 252;  m2 = 252; m3 = 252; m4 = 252; m5 = 252;  m6 = 252; m7 = 252; m8 = 252;} //
  if (currentsec == 49 ) { m1 = 254;  m2 = 252; m3 = 252; m4 = 252; m5 = 252;  m6 = 252; m7 = 252; m8 = 252;} //
  if (currentsec == 50 ) { m1 = 254;  m2 = 254; m3 = 252; m4 = 252; m5 = 252;  m6 = 252; m7 = 252; m8 = 252;} //
  if (currentsec == 51 ) { m1 = 254;  m2 = 254; m3 = 254; m4 = 252; m5 = 252;  m6 = 252; m7 = 252; m8 = 252;} //
  if (currentsec == 52 ) { m1 = 254;  m2 = 254; m3 = 254; m4 = 254; m5 = 252;  m6 = 252; m7 = 252; m8 = 252;} //
  if (currentsec == 53 ) { m1 = 254;  m2 = 254; m3 = 254; m4 = 254; m5 = 254;  m6 = 252; m7 = 252; m8 = 252;} //
  if (currentsec == 54 ) { m1 = 254;  m2 = 254; m3 = 254; m4 = 254; m5 = 254;  m6 = 254; m7 = 252; m8 = 252;} //
  if (currentsec == 55 ) { m1 = 254;  m2 = 254; m3 = 254; m4 = 254; m5 = 254;  m6 = 254; m7 = 254; m8 = 252;} //
  if (currentsec == 56 ) { m1 = 254;  m2 = 254; m3 = 254; m4 = 254; m5 = 254;  m6 = 254; m7 = 254; m8 = 254;} //
  if (currentsec == 57 ) { m1 = 255;  m2 = 254; m3 = 254; m4 = 254; m5 = 254;  m6 = 254; m7 = 254; m8 = 254;} //
  if (currentsec == 58 ) { m1 = 129;  m2 = 195; m3 = 255; m4 = 255; m5 = 255;  m6 = 255; m7 = 195; m8 = 129;} //
  if (currentsec == 59 ) { m1 = 129;  m2 = 195; m3 = 231; m4 = 255; m5 = 255;  m6 = 231; m7 = 195; m8 = 129;} //
  


 // DYSPLAY PRINTING ===========================================================================================
  
  const uint8_t dospun[] = {1, 36}; // 2 points spacer
  P.addChar('$', dospun);
  const uint8_t secsec[] = {8,m1,m2,m3,m4,m5,m6,m7,m8}; // seconds bar
  P.addChar('&', secsec);
  
// String sub_S = time1.substring(0,2) +"$"+ time1.substring(3,5)+"&" ;  //  shorten formated time to delet seconds %%$$##&&(()%%#$#"""#$%&

   String sub_S = tempa ;
 P.print(sub_S); // Print in dysplay
 

// clock end ^^^^^^^^^^^^^^^^^==========

// Weather part 2 ======================

}

String GET_Request(const char* server) {
  HTTPClient http;    
  http.begin(wifiClient,server);
  int httpResponseCode = http.GET();
  
  String payload = "{}"; 
  
  if (httpResponseCode>0) {
    Serial.print("HTTP Response code: ");
    Serial.println(httpResponseCode);
    payload = http.getString();
  }
  else {
    Serial.print("Error code: ");
    Serial.println(httpResponseCode);
  }
  http.end();

  return payload;
    
// Wheather ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END


  
}

You could try P.print(static_cast<const char *>(my_obj["main"]["temp"]));

no errors, but either output :frowning:

If I use

int(my_obj["main"]["temp"]);

works, but only the integer I lost decimals...

Solved !!! I think it works !!!

 tempa = JSON.stringify(my_obj["main"]["temp"]);

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.