В ASP.NET/С#:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>
<%
JavaScriptSerializer jss = new JavaScriptSerializer();
string[] fruits = new string[3] {"apple","banana","crunchberries"};
string output = jss.Serialize(fruits);
%>
<html>
fruits=<%=output%>
</html>
возвращает fruits=["apple","banana","crunchberries"]
В ASP.NET/VB.NET:
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>
<%
dim jss as new JavaScriptSerializer()
dim fruits = new String(2) {"apple","banana","crunchberries"}
dim output as string = jss.Serialize(fruits)
%>
<html>
fruits=<%=output%>
</html>
возвращает fruits=["apple","banana","crunchberries"]
Но в ASP.NET/JScript.NET:
<%@ Page Language="JScript" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>
<%
var jss:JavaScriptSerializer = new JavaScriptSerializer;
var fruits = ["apple","banana","crunchberries"];
var output = jss.Serialize(fruits);
%>
<html>
fruits=<%=output%>
</html>
возвращает fruits=["0","1","2"]
Это кажется полностью сломанным. Это можно исправить, явно объявив тип данных Fruits, что превращает его в «собственный массив»:
<%@ Page Language="JScript" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>
<%
var jss:JavaScriptSerializer = new JavaScriptSerializer;
var fruits:String = ["apple","banana","crunchberries"];
var output = jss.Serialize(fruits);
%>
<html>
fruits=<%=output%>
</html>
возвращает fruits=["apple","banana","crunchberries"]
Я не понимаю, почему этот тип является обязательным для правильной сериализации. (var fruits = ["apple","banana","crunchberries",5]
может быть плохим кодом, но это разрешено как в Javascript, так и в Jscript.) Предполагается, что массивы JScript медленнее, чем собственные массивы, но они все равно должны работать, верно?