Передать некоторые данные из массива выборки в int в JSON.Stringify ( Строка )

#json #reactjs #jwt

#json #reactjs #jwt

Вопрос:

я пытаюсь ОТПРАВИТЬ данные на сервер. моя проблема в том, что я получаю ошибку ‘422 (необработанный объект)’, потому что все данные в строке, поэтому мне нужно преобразовать некоторые данные в int. Как преобразовать некоторые данные в int из массива перед привязкой к другим параметрам? мне нужно преобразовать некоторые данные, которые invono amp; lotno в int.

 class App extends Component {
constructor(props) {
 super(props);
 this.state = {
   isLoaded: false,
   alldata: [],
   singledata: {
     invono: "",
     invodate: "",
     lotno: "",
     buildup: "",
     custid: "",
   },
 };


createInvoice() {
fetch("http://xxx:8081/invoice", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer "   token,
  },
  body: JSON.stringify(this.state.singledata),

  //JSON.parse(JSON.stringify(this.state.singledata)),
 // JSON.stringify({this.state.singledata : parseInt($({this.state.singledata.invono}).val(),10)})
}).then(
  this.setState({
    singledata: {
      invono: "",
      invodate: "",
      lotno: "",
      buildup: "",
      custid: "",
    },
  })
);
}
 

обработчик для пользовательского ввода.

 handleChange(event) {
var invono = this.state.singledata.invono;
var invodate = this.state.singledata.invodate;
var lotno = this.state.singledata.lotno;
var buildup = this.state.singledata.buildup;
var custid = this.state.singledata.custid;
if (event.target.name == "invono") invono = event.target.value;
else if (event.target.name == "invodate") invodate = event.target.value;
else if (event.target.name == "lotno") lotno = event.target.value;
else if (event.target.name == "buildup") buildup = event.target.value;
else if (event.target.name == "custid") custid = event.target.value;

this.setState({
  singledata: {
    invono: invono,
    invodate: invodate,
    lotno: lotno,
    buildup: buildup,
    custid: custid,
  },
});
}
 

Ответ №1:

Использовать parseInt для числовых полей.

 handleChange(event) {
  const fieldname = event.target.name;
  // put in the names of the fields that need to be converted to integers into
  // the array below
  const convertToInts = ["invono", "lotno"];
  const value = convertToInts.includes(fieldname) ? parseInt(event.target.value, 10) : event.target.value;
  this.setState({
    ...this.state,
    singledata: {
      ...this.state.singledata,
      [fieldname]: value,
    },
  });
}
 

Комментарии:

1. почему мы должны это делать, чтобы использовать int ? разве не глупо делать это так сложно? кто эти люди, создающие эти языки программирования… возможно, им придется начать проводить тест на IQ для участников