簡體   English   中英

在C#中從POST請求讀取和解析JSON數據

[英]Read and Parse JSON data from POST request in C#

我正在通過JQuery的Ajax做一個POST請求,數據類型定義為json ,包含要發布到服務器的值,比如Username: "Ali"

我需要在Handler中做的是讀取值,將它們反序列化為名為User的對象。

String data = new System.IO.StreamReader(context.Request.InputStream).ReadToEnd();
User user = JsonConvert.DeserializeObject<User>(data);

在調試時, data的值如下:

Username=Ali&Age=2....

現在我確定這不是JSON ,所以下一行肯定會產生錯誤:

"Unexpected character encountered while parsing value: U. Path '', line 0, position 0."

從POST請求中讀取JSON數據的正確方法是什么?

客戶端

$.ajax({
    type: 'POST',
    url: "http://localhost:38504/DeviceService.ashx",
    dataType: 'json',
    data: {
      Username: 'Ali',
      Age: 2,
      Email: 'test'
    },
    success: function (data) {
    },
    error: function (error) {
    }
  });

將您的對象轉換為json字符串:

$.ajax({
    type: 'POST',
    url: "http://localhost:38504/DeviceService.ashx",
    dataType: 'json',
    data: JSON.stringify({
      Username: 'Ali',
      Age: 2,
      Email: 'test'
    }),
    success: function (data) {
    },
    error: function (error) {
    }
  });

我不確定為什么你的數據字符串被編碼為url(看起來像)。

但這可能會解決問題(盡管我不確定)

String data = new System.IO.StreamReader(context.Request.InputStream).ReadToEnd();
String fixedData = HttpServerUtility.UrlDecode(data);
User user = JsonConvert.DeserializeObject<User>(fixedData);

在C#文件中使用此...將為您提供所需的結果...

string username=Request.Form["Username"].ToString();

同樣對於其他人......我希望這會對你有所幫助

另一個答案或者您可以發送這樣的數據

$.ajax({
                    url: '../Ajax/Ajax_MasterManagement_Girdle.aspx',
                    data: "Age=5&id=2"
                    type: 'POST',
                    success: function (data) {

                    }
                });

在c#中得到這樣的答案

string Age=Request.Form["Age"].ToString();

暫無
暫無

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

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