В ASP.NET/C#:
<%@ 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"]
Это кажется полностью сломанным. Это можно исправить, явно объявив тип данных фруктов,
что превращает это в «собственный массив»:
<%@ 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 работают медленнее, чем собственные массивы, но они все еще должны работать, верно?