On Thu, 26 Apr 2007 11:30:49 -0500, michal <mg****@gmail.comwrote:
hi guys,
i thought you might be interested in a nice JSON class which converts
ASP datatypes (basic datatypes, dictionaries, recordsets, ...) into
JSON so that javascript can easily understand it ...
you'll find the demonstration and the download here
http://fabiankoehler.de/wdb/2007/04/...asp-datatypes/
You might find refactoring that generateValue function into several
smaller functions worthwhile. I have a function I use for debugging
which looks like this:
Function Repr(val)
Dim r
Select Case False
' For Scalars and objects other than Err, the name of the Repr
' function can be derived directly from the value's type
Case IsObject(val), val Is Err
On Error Resume Next
Set r = GetRef("Repr::" & TypeName(val))
On Error Goto 0
' The type of the Err object is "Object", so its Repr function
' must be manually chosen
Case Else
Set r = GetRef("Repr::Err")
End Select
If IsEmpty(r) Then Repr = TypeName(val) Else Repr = r(val)
End Function
Then simple specialized functions for each data type can be defined:
Function [Repr::Integer] (val)
[Repr::Integer] = "CInt(" & val & ")"
End Function
Function [Repr::Date] (val)
[Repr::Date] = "#" & val & "#"
End Function
Function [Repr::String] (val)
[Repr::String] = """" _
& Replace(val, """", """""") _
& """"
End Function
Function [Repr::Boolean] (val)
[Repr::Boolean] = CStr(val)
End Function
Function [Repr::Variant()] (val)
With CreateObject("Scripting.Dictionary")
Dim elm: For Each elm In val : .Add .Count, Repr(elm) : Next
[Repr::Variant()] = "Array(" & Join(.Items, ", ") & ")"
End With
End Function
This allows you to easily define Repr functions for user-defined types:
Class Foo : End Class
Function [Repr::Foo] (val)
[Repr::Foo] = "New Foo"
End Function
You should be able to use a similar strategy to emit JSON-encoded data.
--
Justin Piper
Bizco Technologies
http://www.bizco.com/