Limpar Json para arduino

Postado 19:58 18/07/2019 por COMPARTILHAR

Remove: " remove: { remove: }

Limpa o json sem o uso de biblioteca, e um codigo pequeno e funcional!!

entrada: {"TL":92578,"L1":0,"L2":0,"L3":0,"L4":0,"L5":0,"L6":0,"E1":0,"E2":0}

Saida do serial:

{"TL":70170,"L1":0,"L2":1,"L3":0,"L4":1,"L5":0,"L6":1,"E1":0,"E2":0}
TL:70170,L1:0,L2:1,L3:0,L4:1,L5:0,L6:1,E1:0,E2:0
nome: E2 valor: 0
nome: E1 valor: 0
nome: L6 valor: 1
nome: L5 valor: 0
nome: L4 valor: 1
nome: L3 valor: 0
nome: L2 valor: 1
nome: L1 valor: 0
nome: TL valor: 70170

codigo:

String sincronizacao = "{\"TL\":70170,\"L1\":0,\"L2\":1,\"L3\":0,\"L4\":1,\"L5\":0,\"L6\":1,\"E1\":0,\"E2\":0}";
void setup() {
Serial.begin(115200);
sincroniza ();
}
void loop() {}

void sincroniza (){
  Serial.println(sincronizacao);
//limpa o json, removendo:{"}
  for (int i=0; i  <sincronizacao.length();++i){
    char c = sincronizacao.charAt(i);
    if(c=='{'){sincronizacao.remove(i, 1);i--;}
    if(c=='"')sincronizacao.remove(i, 1);
    if(c=='}')sincronizacao.remove(i, 1);
  }
  Serial.println(sincronizacao);
  sincronizacao = sincronizacao+",";
 //Define variaveis e valores e seta os mesmo!!
  int goOn = 1;  int pos1=0;   int pos2 = sincronizacao.length();
  while( goOn == 1 ) {
    pos1 = sincronizacao.lastIndexOf(",", pos2);
    pos2 = sincronizacao.lastIndexOf(",", pos1 - 1);
    if( pos2 <= 0 ) goOn = 0;
    String tmp = sincronizacao.substring(pos2 + 1, pos1);
    String nome = tmp.substring(0,tmp.indexOf(":"));
    String valor = tmp.substring(tmp.indexOf(":")+1);
    Serial.println("nome: " + nome + " valor: " + valor);
    //comparaçoes como essa:
    //if (nome == "L1")digitalWrite(L1, valor.toInt()); 
  }
  }


Gastei um dia todo de pesquisa!!! kkkkkkkkkkkk 


Comentários