簡體   English   中英

Json integer 在發布 Data.Net Core + React 時變成字符串

[英]Json integer turns string when posting Data .Net Core + React

我正在嘗試將 Car 對象添加到我的數據庫中,僅使用字符串就可以正常工作,但是當我嘗試添加 integer 值時,該值在 Json 中被引用,因此轉向字符串。 這是 my.Net Core Model:

public class Car : Service
    {
        public string Description { get; set; }
        public int Price { get; set; }
        public string Options { get; set; }
    }

這是我的創建處理程序

 public async Task<Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var car = new Car
                {
                    id = request.id,
                    Name = request.Name,
                    Description = request.Description,
                    Price = request.Price,
                    Options = request.Options
                };

                _context.Cars.Add(car);
                var success= await _context.SaveChangesAsync() > 0;

                if(success) return Unit.Value;

                throw new System.Exception("Problem saving changes");
            }

再次,創建處理程序可以很好地處理字符串,但是當我嘗試發送 integer 值時,這是發送的 Json

{id: "f8aa6881-8a90-4510-9505-5471c1f9a656", name: "Mercedes AMG", description: "a", price: "800",…}
description: "a"
id: "f8aa6881-8a90-4510-9505-5471c1f9a656"
name: "Mercedes AMG"
options: "a"
price: "800" //This is the value creating the problem
price:{}; The JSON value could not be converted to System.Int32

請問如何確保該值作為 integer 傳遞? 我很感激幫助。

今天發現自己有這個問題!

您可以使用valueAsNumber將值作為雙精度值

double :按順序返回元素的值,解釋為以下之一:

  • 時間價值
  • 一個號碼
  • 如果無法進行轉換,則為NaN

來源 - MSN Web 文檔

如果您使用基本的“onChange”類型 function 來處理輸入,您可以將其更改為類似的內容(如果它不是數字,它將像正常一樣將其分配為字符串):

    onChange = e => this.setState({ [e.target.name]: e.target.valueAsNumber || e.target.value })

或者,如果您需要對轉換進行更有限的控制,您可以執行類似於@bennygenel他的回答中建議的操作:

this.setState({
  [e.target.name]: e.target.type === 'number' ? parseInt(e.target.value) : e.target.value
});

// or

this.setState({
  [e.target.name]: e.target.name === 'price' ? parseFloat(e.target.value) : e.target.value
});

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM