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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用asp怎么将查询结果转化为json相关的知识,希望对你有一定的参考价值。

你说的是ASP VBS吗?

我这里有一个json编码函数

'Json编码 by Shirne
'支持数组,Dictionary,Recordset等对象直接编码,支持数组中 key&":"&value格式
Function JsonEncode(json)
Dim i, l, key, str
str = ""
If IsArray(json) Then
l = UBound(json)
If TypeName(json(0))="String" Then
If InStr(json(0),":")>0 Then
str = str & ""
For i=0 To l
str = str & """" & Left(json(i),InStr(json(i),":")-1) &""":"
str = str & """" & EncodeJSON(Mid(json(i),InStr(json(i),":")+1)) &""""
If i<l Then str = str & ","
Next
str = str & ""
JsonEncode = str
Exit Function
End If
End If
str = str & "["
For i=0 To l
str = str & JsonEncode(json(i))
If i<l Then str = str & ","
Next
str = str & "]"

ElseIf TypeName(json)="Dictionary" Then
l = json.Count
i = 0
str = str & ""
For Each key In json
i = i + 1
str = str & """" & key &""":"
str = str & JsonEncode(json(key))
If i<l Then str = str & ","
Next
str = str & ""
ElseIf TypeName(json)="Recordset" Then
Dim Field
l = json.Fields.Count
str = str & "["
Do Until json.EOF
i = 0
str = str & ""
For Each Field In json.Fields
i = i + 1
str = str & """" & LCase(Field.Name) &""":"
'If UCase(Field.Name)="IP" Then
' str = str & JsonEncode(IPMask(Field.Value))
'Else
str = str & JsonEncode(Field.Value)
'End If
If i<l Then str = str & ","
Next
str = str & ""
json.MoveNext
If Not json.EOF Then str = str & ","
Loop
str = str & "]"
Else
Select Case VarType(json)
Case 2,3,4,5,6
str = str & json
Case Else
str = str & """" & EncodeJSON(json&"") &""""
End Select
End If
JsonEncode = str
End Function

用法:

Response.Write JsonEncode(Array("state:"&stat, "message:"&msg, "url:"&param))

//或
Response.Write JsonEncode(dictionaryObject)

参考技术A asp本身并不支持json,需要手工按照json格式输出才可以。
搜索一个别人写好的函数使用。

在ASP.NET里list怎么转化为json

ASP.NET里面怎么把从数据库查到的list<class> 转化为json,只要JS弹出来的是JSON字符串就行了,请高手们帮忙

在ASP.NET里list转化为json的方法是传递到页面上用js方法转换。
Handler.ashx中代码如下:
using System.Web.Script.Serialization;
JavaScriptSerializer jss = new JavaScriptSerializer();
//list数据
List<T> list = new List<T>();
Response.Write(jss.Serialize(list));
前台js:
$.ajax(
type: "POST",
url: "xxx/js",
data: 传递的数据 ,
success: function (result)
var data = eval("("+result+")");
//这里,你需要用循环,动态生成table,tr,td来显示result中的数据
,
complete: function (xhr, ts)
xhr = null;
,
error: function ()
alert(\'error\');

);
参考技术A 给class加上[Serializable]属性
然后可以通过JavaScriptSerializer类将List序列化成json字符串,这个类在System.Web.Script.Serialization命名空间下面,需要添加System.Web.Extensions的引用
我的.net版本是4.0追问

我是新手,麻烦写个列子,谢谢,我的也是4.0,在ASPX后台任意的方法里面写一个

追答

//假设class结构如下
[Serializable]
public class MyClass

public string Nameget;set;
public string Codeget;set;

List List = new List(); //添加元素部分省略 JavaScriptSerializer jsSer = new JavaScriptSerializer(); string jsonStr = jsSer.Serialize(obj);
这里的jsonStr就是标准格式的json字符串了
要在页面上弹出,方法有很多种,这里用其中一种好了 ClientScript.RegisterStartupScript(this.GetType(), "json", "alert('" + jsonStr +"')", true);

参考技术B public static string Obj2Json<T>(T data)

try

System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
using (MemoryStream ms = new MemoryStream())

serializer.WriteObject(ms, data);
return Encoding.UTF8.GetString(ms.ToArray());


catch

return null;

追问

json提示不存在,我不是用的MVC4,在ASPX后台方法写的

追答

工具引用中再添加 下面两个再试试
System.ServiceModel
System.ServiceModel.Web

本回答被提问者和网友采纳
参考技术C 在asp.net的webform应用中将对象序列化为json字符串的函数:
List
UserList=new
List
();
System.Web.Script.Serialization.JavaScriptSerializer
oSerializer
=
new
System.Web.Script.Serialization.JavaScriptSerializer();
string
sJSON
=
oSerializer.Serialize(new

total=10,
rows
=
showList
);
Response.Write(sJSON);
Response.End();
好像是在。net4.0中开始有这个东东的,如果想在2.0中用那还是自个儿拼字符串吧。

以上是关于用asp怎么将查询结果转化为json的主要内容,如果未能解决你的问题,请参考以下文章

Django objects的查询结果转化为json的三种方式

将sqlalchemy 查询结果转化成json格式

在ASP.NET里list怎么转化为json

asp.net core 2.0 Json结果的格式

jquery 怎么将json字符串转化为json对象

在SQL中直接把查询结果转换为JSON数据