在C#中从POST请求读取和解析JSON数据

时间:2014-04-28 09:13:07

标签: c# jquery ajax json post

我正在通过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) {
    }
  });

3 个答案:

答案 0 :(得分:5)

将您的对象转换为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) {
    }
  });

答案 1 :(得分:4)

我不确定为什么你的数据字符串被编码为url(看起来像)。

但这可能会解决问题(尽管我不确定)

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

答案 2 :(得分:0)

使用此在c#文件中...将为您提供所需的结果......

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

同样对于其他人...... 我希望这会对你有所帮助

另一个答案或者你可以发送这样的数据

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

                    }
                });

ANd在c#

中得到这样的答案
string Age=Request.Form["Age"].ToString();