用asp怎么将查询结果转化为json

xiaoxi_2011 2011-06-20 11:48:42
向大家请教个用asp将查询结果转化为json格式的问题
有个s.asp.代码如下:
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("date.mdb")
%>

<%
Class JSONClass
Dim SqlString ' 用于设置Select
Dim JSON ' 返回的JSON对象的名称
Dim DBConnection ' 连接到数据库的Connection对象

' 可以外部调用的公共方法
Public Function GetJSON ()
dim Rs
dim returnStr
dim i
dim oneRecord

' 获取数据
Set Rs= Server.CreateObject("ADODB.Recordset")
Rs.open SqlString,DBConnection,1,1
' 生成JSON字符串
if Rs.eof=false and Rs.Bof=false then
returnStr="{ "& JSON & ":{ records:["
while Rs.eof=false
' -------
oneRecord= "{"
for i=0 to Rs.Fields.Count -1
oneRecord=oneRecord & chr(34) &Rs.Fields(i).Name&chr(34)&":"
oneRecord=oneRecord & chr(34) &Rs.Fields(i).Value&chr(34) &","
Next
'去除记录最后一个字段后的","
oneRecord=left(oneRecord,InStrRev(oneRecord,",")-1)
oneRecord=oneRecord & "},"
'------------
returnStr=returnStr & oneRecord
Rs.MoveNext
Wend
' 去除所有记录数组后的","
returnStr=left(returnStr,InStrRev(returnStr,",")-1)
returnStr=returnStr & "]}}"
end if
Rs.close
set Rs=Nothing
GetJSON=returnStr
End Function

'私用方法,在类中使用
Private Function check()

End Function
'
End Class

%>

<%
dim a
set a=new JSONClass
a.Sqlstring="Select Price From Products where id=1"
a.dbconnection=conn
a.json="magazineTab"
%>

我想将查询得到的结果转化为json格式,
json格式如下:

{
"add_to_box": {
"action": "/boxes/update_or_create",
},
"calculation": {"xlink:href":"","estimated_value":这里获取上面查询结果的Price的值,"product":{"name":"Iconia Tab A500 16GB 10.1 Tablet ","product_type":"Tradeable","json_class":"Product","manufacturer_name":"","calculator_url":""}},

}

要怎么修改,请指点下
谢谢了
...全文
512 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen0228 2011-06-22
  • 打赏
  • 举报
回复
获取需要的数据 然后字符串拼接 不就可以了
Go 旅城通票 2011-06-21
  • 打赏
  • 举报
回复
楼主要好好补下asp的基本知识才行了。。

dim a ,json
set a=new JSONClass
a.Sqlstring="Select Price From Products where id=1"
a.dbconnection=conn
a.json="magazineTab"
json=a.GetJSON()'获取price的json字符串
response.Write"{ ""add_to_box"": { ""action"": ""/boxes/update_or_create"", }, ""calculation"": {""estimated_value"":"&json&",""json_class"":""Product""}}, }"
xiaoxi_2011 2011-06-21
  • 打赏
  • 举报
回复
非常感谢showbo的讲解,太谢谢你了

但是我需要在s.asp这个页面里直接生成像下面这种json格式,
{
"add_to_box": {
"action": "/boxes/update_or_create",
},
"calculation": {"estimated_value":这里获取上面查询结果的Price的值,"json_class":"Product"}},

}

因为其它页面要读取s.asp生成的estimated_value的值,

麻烦showbo再帮我指点下,好吗,
谢谢了
Go 旅城通票 2011-06-21
  • 打赏
  • 举报
回复
厚着脸皮再问一下,
我查询那个结果是一个数值,比如说查询返回的值是:30.0
我想生成的json格式是:"estimated_value":30.0"
但我按你的方法生成变成了:"estimated_value":{ magazineTab:{ records:[{"P_Price":"30"}]}}
要怎样修改呢?
---
不用要你的类库JSONClass,JSONClass生成的json字符串就是那个样子的,直接使用recordset就行了
price="0.0"'默认一个值
set rs=conn.execute("Select Price From Products where id=1")'获取对应的价格
if not (rs.eof or rs.bof) then price=rs(0)'记录存在
response.Write"{ ""add_to_box"": { ""action"": ""/boxes/update_or_create"", }, ""calculation"": {""estimated_value"":"&price&",""json_class"":""Product""}}, }"


=================

还有一个地方要请教下,如果我用"Select Pro_name,Price From Products where id=1"来查询两个字段的话,
怎样才能把返回的Pro_name的值赋予给json_class呢?
--------
生成json字符串不用你操心,jsonclass已经帮你自动生成对应的字段名称和值了,你只要选出需要的字段即可

jsonclass中这段代码会遍历你选出的字段的
for i=0 to Rs.Fields.Count -1 
oneRecord=oneRecord & chr(34) &Rs.Fields(i).Name&chr(34)&":"
oneRecord=oneRecord & chr(34) &Rs.Fields(i).Value&chr(34) &","
Next

xiaoxi_2011 2011-06-21
  • 打赏
  • 举报
回复
showbo说的是,我是要好好补下asp的基本知识才行了现在都是啃以前在学校学的老本,出来社会这么多年,因为工作的关系,把以前学的都忘得差不多了.

厚着脸皮再问一下,
我查询那个结果是一个数值,比如说查询返回的值是:30.0
我想生成的json格式是:"estimated_value":30.0"
但我按你的方法生成变成了:"estimated_value":{ magazineTab:{ records:[{"P_Price":"30"}]}}
要怎样修改呢?


还有一个地方要请教下,如果我用"Select Pro_name,Price From Products where id=1"来查询两个字段的话,
怎样才能把返回的Pro_name的值赋予给json_class呢?
xuexiaodong2009 2011-06-20
  • 打赏
  • 举报
回复
Go 旅城通票 2011-06-20
  • 打赏
  • 举报
回复
直接连接返回值就行了
dim a ,json
set a=new JSONClass
a.Sqlstring="Select Price From Products where id=1"
a.dbconnection=conn
a.json="magazineTab"
json=a.GetJSON()'获取price的json字符串

'连接代码不用写了吧?。。。注意asp双引号的转义就行了
'如果不是使用json1.4+版本,键名称可以不使用双引号括起的,或者改成单引号,这样就不需要转义这么麻烦了
xiaoxi_2011 2011-06-20
  • 打赏
  • 举报
回复
有没有更好一点的方法呢?
谢谢了

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧