Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

JSONObject["dv"] not a string.

Bom dia,

Estou mandando informações para fazer um cadastro via POST com Axios e React.

Porem ele me retorna o seguinte erro:

data
:
mensagem
:
"JSONObject["dv"] not a string."
status
:
0

o Código da requisição esta assim:

 gravar = () => {
    var empresa = 100;
    var codigo = '001';
    var nome = 'Banco teste';
    var agencia = "0101";
    var conta = '00101';
    var dv = '2';
    var ativo = 1;

    var teste = 'Url'+empresa+',"codigo":'+codigo+',"nome":'+nome+',"agencia":'+agencia+',"conta":'+conta+',"dv":'+dv+',"ativo":'+ativo+'}';

    console.log(teste);

    axios.post(teste).then(function (response){
    console.log(response);
    });
  }

Eu estou declarando que a variável dv é uma string com valor '2'.

No banco só é aceito string com 1 (um) carácter apenas, ou seja deveria dar certo.

3 respostas
solução!

Boa tarde, Denis! Como vai?

Não sei se o problema é resultante do que vou falar, mas me parece que o JSON que vc está montando e atribuindo à variável teste não está correto.

Tente fazer assim:

var teste = {
     Url: empresa,
     codigo: codigo,
     nome: nome,
     agencia: agencia,
     conta: conta,
     dv: dv,
     ativo: ativo
};

var testeJSON = JSON.stringfy(teste);

console.log(testeJSON);

axios.post(testeJSON).then(function (response){
     console.log(response);
});

EXTRA: A partir do ES6, vc pode resumir a criação do seu objeto JavaScript quando as propriedades dele tiverem o mesmo nome das variáveis que representam o seu valor. Então, o seu objeto ficaria assim:

var teste = {
     Url: empresa,
     codigo,
     nome,
     agencia,
     conta,
     dv,
     ativo
};

Vê se resolve o seu problema aí!

Grande abraço e bons estudos!

Agradeço a atenção mas não entendi bem como ficaria a sintaxe, seria algo assim :

class App extends Component {
  constructor() {
    super();
    this.state = {
      server: ' ',
      empresa: ' ',
      codigo: ' ',
      nome: ' ',
      agencia: ' ',
      conta: ' ',
      dv: '',
      ativo: ' '

    }

  }

Método Gravar:

gravar = (event) => {
    var teste = {
    Url: 'https://www.teste.com.br/112/rest/banco/set?usuario={"id":100,"senha":"2494"}&banco=',
    id: 0,
    empresa: this.state.empresa,
    codigo: this.state.codigo,
    nome: this.state.nome,
    agencia: this.state.agencia,
    conta: this.state.conta,
    dv: this.state.dv,
    ativo: this.state.ativo
  }

  var testeJSON = JSON.stringify(teste);
  console.log(testeJSON);
  axios.post(testeJSON).then(function(response){
    console.log(response);
  });

 }

Formulario:

 <form>
 <div className="col-lg-12">
                    <label>EMPRESA</label>
                    <div className="col-lg-12">
                      <input onChange={(e) => this.setState({ empresa: e.target.value })}></input>
                    </div>
                  </div>

                  <div className="col-lg-12">
                    <label>CODIGO</label>
                    <div className="col-lg-12">
                      <input type="text" onChange={(e) => this.setState({ codigo: e.target.value })}></input>
                    </div>
                  </div>

                  <div className="col-lg-12">
                    <label>NOME </label>
                    <div className="col-lg-12">
                      <input type="text" onChange={(e) => this.setState({ nome: e.target.value })}></input>
                    </div>
                  </div>

                  <div className="col-lg-12">
                    <label>AGENCIA </label>
                    <div className="col-lg-12">
                      <input type="text" onChange={(e) => this.setState({ agencia: e.target.value })}></input>
                    </div>
                  </div>

                  <div className="col-lg-12">
                    <label>CONTA </label>
                    <div className="col-lg-12">
                      <input type="text" onChange={(e) => this.setState({ conta: e.target.value })}></input>
                    </div>
                  </div>

                  <div className="col-lg-12">
                    <label>DV</label>
                    <div className="col-lg-12">
                      <input type="text" onChange={(e) => this.setState({ dv: e.target.value })}></input>
                    </div>
                  </div>

                  <div className="col-lg-12">
                    <label>ATIVO  </label>
                    <div className="col-lg-12">
                      <input type="text" onChange={(e) => this.setState({ ativo: e.target.value })}></input>
                    </div>
                  </div>

                  <div className="col-lg-12">
                    <Button onClick={this.listar}>listar</Button>
                    <Button color="success" onClick={this.gravar}>Gravar</Button>
                  </div>
           </form>

Dessa maneira ele me retorna o seguinte erro:

Console:

{"Url":"https://www.teste.com.br/112/rest/banco/set?usuario={\"id\":100,\"senha\":\"2494\"}&banco=","id":0,"empresa":"1","codigo":"1","nome":"1","agencia":"1","conta":"1","dv":"1","ativo":"1"}

Erro:

xhr.js:178 POST http://localhost:3000/%7B%22Url%22:%22https://www.teste.com.br/112/rest/banco/set?usuario={\%22id\%22:100,\%22senha\%22:\%222494\%22}&banco=%22,%22id%22:0,%22empresa%22:%221%22,%22codigo%22:%221%22,%22nome%22:%221%22,%22agencia%22:%221%22,%22conta%22:%221%22,%22dv%22:%221%22,%22ativo%22:%221%22} 404 (Not Found)

Exemplo de como a API precisa:

https://www.teste.com.br/112/rest/banco/set?usuario={"id":100,"senha":"2494"}&banco={"id":0,"empresa":100,"codigo":"001","nome":"Banco do  Brasil","agencia":"0101","conta":"00101","dv":"1","ativo":1}

Estou errando muito ?

Opa, Denis!

Então, parece que agora o erro agora é outro! Afinal de contas inicialmente o problema era o tal do JSONObject["dv"] not a string e agora um 404 (Not Found). Esse erro ocorre quando fazemos uma requisição para uma URL que não existe.

No entanto, como o problema inicial foi resolvido, para não misturarmos as coisas aqui, sugiro que vc abra um novo tópico com esse erro em questão de modo que facilite para que pessoas com o mesmo problema que o seu no futuro consigam encontrar uma solução. Combinado?

Grande abraço e bons estudos!