title: How to send limited json data (stored in SPIFF) to a local server from esp8266?
body: <p>An example code:</p>
  
  <pre><code>#include &lt;FS.h&gt;                   //this needs to be first, or it all crashes and burns...
  
  #include &lt;ESP8266WiFi.h&gt;          //https://github.com/esp8266/Arduino
  
  //needed for library
  #include &lt;DNSServer.h&gt;
  #include &lt;ESP8266WebServer.h&gt;
  #include &lt;WiFiManager.h&gt;          //https://github.com/tzapu/WiFiManager
  
  #include &lt;ArduinoJson.h&gt;          //https://github.com/bblanchon/ArduinoJson
  
  //define your default values here, if there are different values in config.json, they are overwritten.
  char mqtt_server[40];
  char mqtt_port[6] = "8080";
  char blynk_token[34] = "YOUR_BLYNK_TOKEN";
  
  //flag for saving data
  bool shouldSaveConfig = false;
  
  //callback notifying us of the need to save config
  void saveConfigCallback () {
    Serial.println("Should save config");
    shouldSaveConfig = true;
  }
  
  
  void setup() {
    // put your setup code here, to run once:
    Serial.begin(115200);
    Serial.println();
  
    //clean FS, for testing
    //SPIFFS.format();
  
    //read configuration from FS json
    Serial.println("mounting FS...");
  
    if (SPIFFS.begin()) {
      Serial.println("mounted file system");
      if (SPIFFS.exists("/config.json")) {
        //file exists, reading and loading
        Serial.println("reading config file");
        File configFile = SPIFFS.open("/config.json", "r");
        if (configFile) {
          Serial.println("opened config file");
          size_t size = configFile.size();
          // Allocate a buffer to store contents of the file.
          std::unique_ptr&lt;char[]&gt; buf(new char[size]);
  
          configFile.readBytes(buf.get(), size);
          DynamicJsonBuffer jsonBuffer;
          JsonObject&amp; json = jsonBuffer.parseObject(buf.get());
          json.printTo(Serial);
          if (json.success()) {
            Serial.println("\nparsed json");
  
            strcpy(mqtt_server, json["mqtt_server"]);
            strcpy(mqtt_port, json["mqtt_port"]);
            strcpy(blynk_token, json["blynk_token"]);
  
          } else {
            Serial.println("failed to load json config");
          }
        }
      }
    } else {
      Serial.println("failed to mount FS");
    }
    //end read
  
  
  
    // The extra parameters to be configured (can be either global or just in the setup)
    // After connecting, parameter.getValue() will get you the configured value
    // id/name placeholder/prompt default length
    WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
    WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 5);
    WiFiManagerParameter custom_blynk_token("blynk", "blynk token", blynk_token, 32);
  
    //WiFiManager
    //Local intialization. Once its business is done, there is no need to keep it around
    WiFiManager wifiManager;
  
    //set config save notify callback
    wifiManager.setSaveConfigCallback(saveConfigCallback);
  
    //set static ip
    wifiManager.setSTAStaticIPConfig(IPAddress(10,0,1,99), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
  
    //add all your parameters here
    wifiManager.addParameter(&amp;custom_mqtt_server);
    wifiManager.addParameter(&amp;custom_mqtt_port);
    wifiManager.addParameter(&amp;custom_blynk_token);
  
    //reset settings - for testing
    //wifiManager.resetSettings();
  
    //set minimu quality of signal so it ignores AP's under that quality
    //defaults to 8%
    //wifiManager.setMinimumSignalQuality();
  
    //sets timeout until configuration portal gets turned off
    //useful to make it all retry or go to sleep
    //in seconds
    //wifiManager.setTimeout(120);
  
    //fetches ssid and pass and tries to connect
    //if it does not connect it starts an access point with the specified name
    //here  "AutoConnectAP"
    //and goes into a blocking loop awaiting configuration
    if (!wifiManager.autoConnect("AutoConnectAP", "password")) {
      Serial.println("failed to connect and hit timeout");
      delay(3000);
      //reset and try again, or maybe put it to deep sleep
      ESP.reset();
      delay(5000);
    }
  
    //if you get here you have connected to the WiFi
    Serial.println("connected...yeey :)");
  
    //read updated parameters
    strcpy(mqtt_server, custom_mqtt_server.getValue());
    strcpy(mqtt_port, custom_mqtt_port.getValue());
    strcpy(blynk_token, custom_blynk_token.getValue());
  
    //save the custom parameters to FS
    if (shouldSaveConfig) {
      Serial.println("saving config");
      DynamicJsonBuffer jsonBuffer;
      JsonObject&amp; json = jsonBuffer.createObject();
      json["mqtt_server"] = mqtt_server;
      json["mqtt_port"] = mqtt_port;
      json["blynk_token"] = blynk_token;
  
      File configFile = SPIFFS.open("/config.json", "w");
      if (!configFile) {
        Serial.println("failed to open config file for writing");
      }
  
      json.printTo(Serial);
      json.printTo(configFile);
      configFile.close();
      //end save
    }
  
    Serial.println("local ip");
    Serial.println(WiFi.localIP());
  
  }
  
  void loop() {
    // put your main code here, to run repeatedly:
  
  
  }
  </code></pre>
  
  <p>I got this code from here (<a href="https://techtutorialsx.com/2017/01/08/esp8266-posting-json-data-to-a-flask-server-on-the-cloud/" rel="nofollow noreferrer">https://techtutorialsx.com/2017/01/08/esp8266-posting-json-data-to-a-flask-server-on-the-cloud/</a>):</p>
  
  <pre><code>HTTPClient http; //Declare object of class HTTPClient
  http.begin("http://anteph.pythonanywhere.com/postjson"); //Specify request destination
  http.addHeader("Content-Type", "application/json"); //Specify content-type header
  
  int httpCode = http.POST(JSONmessageBuffer); //Send the request
  String payload = http.getString(); //Get the response payload
  Serial.println(httpCode); //Print HTTP return code
  Serial.println(payload); //Print request response payload
  http.end(); //Close connection
  </code></pre>
  
  <p>But If I use:</p>
  
  <pre><code>int httpCode = http.POST(JSONmessageBuffer); //Send the request
  </code></pre>
  
  <p>This will send all the json data (i.e mqtt_server, mqtt_port, blynk_token). But I want to send only "blynk_token" and not the rest json data to server, So how can I achieve this?</p>
  
  <p>Please suggest.</p>