在ASP.NET中读取已发布的JSON数据

时间:2013-03-22 18:55:48

标签: asp.net json post

我订阅了一个大众电子邮件服务,当他们在结束时发生错误时,会将我的网站上的页面发布为端点,以通知我电子邮件已退回。

他们描述如下: The event data is sent in the POST request body using a JSON object.

我需要知道的是如何捕获发布给我的信息? 目前我将它们指向一个通用处理程序,一个.ashx页面,只要它在.NET中就可以改为。

使用第一代经典ASP和现在的.NET工作10年我以前从未这样做过,我必须承认我甚至不知道从哪里开始。

4 个答案:

答案 0 :(得分:2)

这是我用来实现类似事情的代码 - 不知道我最初在哪里得到它。

C#

var strJSON = String.Empty;

context.Request.InputStream.Position = 0;
using (var inputStream = new StreamReader(context.Request.InputStream))
{
  strJSON = inputStream.ReadToEnd();
}

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
object serJsonDetails = javaScriptSerializer.Deserialize(strJSON, typeof(object));

// go and process the serJsonDetails object

或VB

Dim strJSON = [String].Empty

context.Request.InputStream.Position = 0
Using inputStream = New StreamReader(context.Request.InputStream)
    strJSON = inputStream.ReadToEnd()
End Using

Dim javaScriptSerializer As New JavaScriptSerializer()
Dim serJsonDetails As Object = javaScriptSerializer.Deserialize(strJSON, GetType(Object))

' go and process the serJsonDetails object

答案 1 :(得分:1)

您可以只读取请求流(Request.GetRequestStream)并使用Json.NET反序列化为对象。

您可以使用MVC4和内置对象映射。

有很多选择。也许你应该更多地阅读它们,以便你了解它们的能力和缺点。

答案 2 :(得分:0)

可能Request.Form (here)将帮助您获取JSON,如果您知道帖子的内容,然后您需要类似json.net库来获取对象,或者您只需搜索字符串使用正则表达式或关键字

或者,如果您可以将帖子定向到Web服务(asmx)而不是网页,那些服务将为您解析json

答案 3 :(得分:0)

如果您需要两次或多次阅读原始帖子数据,我建议您使用此代码。

preceding zeros are ignored when setting a number-type object as the right operand of <<