В этом случае я думаю, что вы используете универсальный метод (ForEach), который сгенерирует новый тип (при условии, что Foo является ссылочным типом, будет сгенерирован только один новый тип), и лямбда будет скомпилирована как обычный анонимный метод. Ничто об этом не предполагает какого-либо линейного увеличения использования памяти.
Что касается профилировщика, вы ничего не измеряете в памяти или в ГХ. Вы измеряете время, затраченное на выполнение метода, и лямбда не должна быть значительно медленнее, чем «обычный» способ.
Помните, что классический ASP включает как JScript, так и VBScript. Интересно, что вы можете анализировать JSON с помощью JScript и использовать полученные объекты непосредственно в VBScript.
Следовательно, можно использовать канонический https://github.com/douglascrockford/JSON-js/blob/master/ json2.js в коде на стороне сервера без изменений.
Конечно, если ваш JSON включает какие-либо массивы, они останутся массивами JScript после завершения синтаксического анализа. Вы можете получить доступ к содержимому массива JScript из VBScript, используя точечную нотацию.
<%@Language="VBScript" %>
<%
Option Explicit
%>
<script language="JScript" runat="server" src='path/to/json2.js'></script>
<%
Dim myJSON
myJSON = Request.Form("myJSON") // "[ 1, 2, 3 ]"
Set myJSON = JSON.parse(myJSON) // [1,2,3]
Response.Write(myJSON) // 1,2,3
Response.Write(myJSON.[0]) // 1
Response.Write(myJSON.[1]) // 2
Response.Write(myJSON.[2]) // 3
%>
Не уверен. Вы проверили фреймворк ASP extreme с поддержкой JSON?
Я не смог заставить работать ни extreme-evolution, ни предложение Криса Нильсона. Но у меня сработало следующее:
http://tforster.wik.is/ASP_Classic_Practices_For_The_21st_Century/JSON4ASP
Загрузите следующее как "json2.min.asp"
http://tforster.wik.is/@api/deki/files/2/=json2.min.asp
Добавьте следующую строку в начало вашего ASP файла:
<script language="javascript" runat="server" src="json2.min.asp"></script>
После этого вы можете использовать JSON в ASP.
Dim car: Set car = JSON.parse("{""brand"":""subaru"",""model"":""outback sport"",""year"":2003," & _
"""colour"":""green"",""accessories"":[" & _
"{""foglamps"":true},{""abs"":true},{""heatedSeats"":true}]}")
Response.Write("brand: " & car.brand & "<br/>")
Response.Write("model: " & car.model & "<br/>")
Response.Write("colour: " & car.colour & "<br/>")
Response.Write("has foglamps: " & CStr(car.accessories.get(0).foglamps) & "<br/>")
car.accessories.get(0).foglamps = false
Response.Write("has foglamps: " & CStr(car.accessories.get(0).foglamps) & "<br/>")
Response.Write("new Json: " & JSON.stringify(car) & "<br/>")
Set car = Nothing
Примечание: Чтобы разобрать массив элементов, вам нужно сделать следующее:
for each iTmp in testing
if (TypeName(iTmp))<>"JScriptTypeInfo" then
Response.Write("Item: " & iTmp & "<br/>")
end if
next