26
2019.2
JSON的编码与解码
作者: POPASP
JSON数据处理,在PHP中有成熟的函数json_encode与json_decode,前者是对变量对行json编码,后者是对 JSON 格式的字符串进行解码。二者的功能一正一反,满足项目需求。但是在ASP的年代里,当时比较盛行xml,所以官方没有给出对JSON的处理函数。
POPASP在前人类库的基础上,也推出了两个函数用来对JSON进行编码与解码,分别是js_encode与js_decode,功能类似于PHP的json_encode与json_decode。这两个函数本质调用的是POPASP_JSON类,一般来说,我们不直接使用POPASP_JSON类进行JSON的编码与解码。
使用方法介绍如下:
### js_encode的使用
**对Dictionary对象进行JSON编码**
```brush:vb
dim dict
set dict = D_
dict("a") = "aa"
dict("b") = "bb"
Response.write js_encode(dict) '{ "a": "aa", "b": "bb" }
```
**对Recordset对象进行JSON编码**
```brush:vb
dim rs
set rs = M_("post").db.find()
Response.write js_encode(rs)
```
**对IRequestDictionary对象进行JSON编码**
```brush:vb
if request.querystring <> "" then
Response.write js_encode( request.querystring ) '例如:{ "c": "Index", "a": "test" }
end if
if request.form <> "" then
Response.write js_encode( request.form )
end if
Response.write js_encode(request.ServerVariables)
```
**对数组进行JSON编码**
```brush:vb
dim arr
arr = POP_MVC.Arr.Range(5,10)
Response.write js_encode(arr) '[ 5, 6, 7, 8, 9, 10 ]
```
相对于对js_encode函数对于变量类型的限制,js_decode的参数只有一种,就是正确的JSON字符串。进行解码之后,返回的数据类型均为Dictionary对象。
### js_decode的使用
```brush:vb
dim str1,str2
dim dict1,dict2
str1 = "[ 5, 6, 7, 8, 9, 10 ]"
str2 = "{ ""a"": ""aa"", ""b"": ""bb"" }"
set dict1 = js_decode(str1)
set dict2 = js_decode(str2)
var_export dict1 '[ 5, 6, 7, 8, 9, 10 ]
var_export dict2 '{ "a": "aa", "b": "bb" }
```