25
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" } ```