Vbscript 使用ASPjson解析JSON对象

Vbscript 使用ASPjson解析JSON对象,vbscript,asp-classic,Vbscript,Asp Classic,在经典ASP(VBScript)中,我可以使用request.form或使用request.querystring执行一般的POST请求,这将提供发送的整个字符串 但是,我现在需要从客户端位置接收一个JSON对象。 这是一个可能的示例: { "firstName": "John", "lastName" : "Smith", "age" : 25 } 如何请求整个对象(然后

在经典ASP(VBScript)中,我可以使用
request.form
或使用
request.querystring
执行一般的POST请求,这将提供发送的整个字符串

但是,我现在需要从客户端位置接收一个JSON对象。 这是一个可能的示例:

{
  "firstName": "John",
  "lastName" : "Smith",
  "age"      : 25
}
如何请求整个对象(然后我将使用它进行解析)


PS:我知道我可能可以在客户端将JSON对象转换为字符串,然后在服务器端将其解析为文本,但这感觉像是一种解决方法,而不是一个简单的解决方案。

首先,我不会使用AspJson,但是:

其次,您接收的不是对象本身,而是包含“json对象的字符串版本”的请求。在本例中,可能是字节,这就是为什么要先进行二进制读取并将其转换为正文

然后,您将能够使用所需的任何解析器解析主体

现在,让我们尝试给出一个示例代码:

<%Response.LCID = 1033%>
<!--#include file="__jsonObject.class.v3.8.1.asp" -->

Set UTF8Enc = CreateObject("System.Text.UTF8Encoding") ' .NET COMPONENT, required on the server app pool
Set JSON = new JSONobject

lngBytesCount = Request.TotalBytes
request_body = UTF8Enc.GetString(Request.BinaryRead(lngBytesCount))

Set request_json = JSON.parse(request_body)

first_name = request_json("firstName")
last_name = request_json("lastName")
age = request_json("age")

设置UTF8Enc=CreateObject(“System.Text.UTF8Encoding”)”.NET组件,服务器应用程序池上需要此组件
设置JSON=newjsonobject
LNGBytes=Request.TotalBytes
request_body=UTF8Enc.GetString(request.binarydead(lngbytesunt))
设置request_json=json.parse(request_body)
first\u name=request\u json(“firstName”)
last\u name=request\u json(“lastName”)
年龄=请求时间(“年龄”)

无论何时将JSON传递给服务器,都必须将其序列化,并使用
内容类型
标题通知服务器端ASP您正在发送
应用程序/JSON
。然后,ASP页面可以使用库或自定义代码对其进行反序列化。经典ASP中没有自动模式绑定,如果您需要,最好查看ASP.NETMVC。这是否回答了您的问题?谢谢,但是没有。如上所述,我已经在使用ASPjson了-我的问题是将ajax发送的对象读取到ASPjson组件中,然后可以访问键和值。当您谈论
Request.Form
Request.QueryString
时,您理解正确。您谈论的是ASP对象库中的对象,而不是VBScript。VBScript只是经典ASP可以用于服务器端处理的脚本语言之一。您还知道ASPjson是一个用于在经典ASP中解析JSON的脚本库。你的话表明你不明白这一点;“我现在需要从客户端位置接收JSON对象”。我不明白你的意思?您可以通过服务器端脚本发送序列化对象,但从服务器端脚本检索一个客户端??您需要进一步说明您的要求。对于迟来的回复表示歉意-此回复是恶意的-谢谢!你能解释一下为什么这个json库更适合使用吗?