【问题标题】:Parse a JSON object using ASPjson使用 ASPjson 解析 JSON 对象
【发布时间】:2021-05-04 09:18:56
【问题描述】:

在经典 ASP (VBScript) 中,我可以使用 request.form 发出一般的 POST 请求,或者使用 request.querystring 发出 GET 请求,这将给我发送的整个字符串。

但是,我现在需要从客户端位置接收 JSON 对象。 这是它的外观示例:

{
  "firstName": "John",
  "lastName" : "Smith",
  "age"      : 25
}

如何请求整个对象(然后我将使用 ASP.JSON 对其进行解析)?

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

【问题讨论】:

  • 无论何时将 JSON 传递给服务器,都必须对其进行序列化并使用 Content-Type 标头通知服务器端 ASP 您正在发送 application/json。然后它可以由 ASP 页面使用库或自定义代码反序列化。 Classic ASP 中没有自动模式绑定,如果需要,最好查看 ASP.Net MVC。
  • 这能回答你的问题吗? converting from json to classic asp
  • 谢谢,但没有。如前所述,我已经在使用 ASPjson - 我的问题是将 ajax 发送的对象读取到 ASPjson 组件中,然后该组件可以访问键和值。
  • 当您谈论Request.FormRequest.QueryString 时,您理解正确,您谈论的是来自 ASP 对象库而不是 VBScript 的对象。 VBScript 只是 Classic ASP 可用于服务器端处理的脚本语言之一。你也知道 ASPjson 是一个用于在 Classic ASP 中解析 JSON 的脚本库。你的latest edit rolling back my changes 表明你不明白这一点。
  • 这句话我很纠结; “我现在需要从客户端位置接收 JSON 对象”。我不清楚你的意思是什么?您可以将序列化对象发送到服务器端脚本,但从服务器端脚本中检索一个客户端?您需要扩展您的要求。

标签: vbscript asp-classic


【解决方案1】:

首先,我不会使用那个 AspJson,但是这个:https://github.com/rcdmk/aspJSON

其次,您收到的不是对象本身,而是包含“json 对象的字符串版本”的请求。在这种情况下,可能是字节,这就是为什么您要先使用 BinaryRead 并将其转换为正文。

然后您就可以使用任何您想要的解析器来解析正文。

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

<%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")

【讨论】:

  • 对迟到的回复表示歉意 - 此回复被吐了 - 谢谢!你能解释一下为什么这个 json 库更好用吗?
  • @kneidels 只是因为经验.. 我发现它更可靠,更容易阅读“引擎盖下”
猜你喜欢
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多