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

时间:2022-04-09 06:44:39
向大家请教个用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":""}},
  
}

要怎么修改,请指点下
谢谢了

8 个解决方案

#1


#2


有没有更好一点的方法呢?
谢谢了

#3


本帖最后由 showbo 于 2011-06-20 22:50:51 编辑
直接连接返回值就行了
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+版本,键名称可以不使用双引号括起的,或者改成单引号,这样就不需要转义这么麻烦了

#4


非常感谢showbo的讲解,太谢谢你了

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

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

麻烦showbo再帮我指点下,好吗,
谢谢了

#5


楼主要好好补下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""}}, }"

#6


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呢?

#7


本帖最后由 showbo 于 2011-06-21 15:42:32 编辑
厚着脸皮再问一下,
我查询那个结果是一个数值,比如说查询返回的值是: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 

#8


获取需要的数据 然后字符串拼接 不就可以了

#1


#2


有没有更好一点的方法呢?
谢谢了

#3


本帖最后由 showbo 于 2011-06-20 22:50:51 编辑
直接连接返回值就行了
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+版本,键名称可以不使用双引号括起的,或者改成单引号,这样就不需要转义这么麻烦了

#4


非常感谢showbo的讲解,太谢谢你了

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

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

麻烦showbo再帮我指点下,好吗,
谢谢了

#5


楼主要好好补下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""}}, }"

#6


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呢?

#7


本帖最后由 showbo 于 2011-06-21 15:42:32 编辑
厚着脸皮再问一下,
我查询那个结果是一个数值,比如说查询返回的值是: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 

#8


获取需要的数据 然后字符串拼接 不就可以了