AutoIt JSON Parser

  • Hallo,

    Wer mal mit Ajax gearbeitet hat, der wird JSON kennen. Wer es nicht kennt:
    http://de.wikipedia.org/wiki/JavaScrip…ormatdefinition

    Wenn man mit AutoIt mal so einen JSON String auswerten möchte, der kommt um StringRegExp nicht herum. Und selbst damit ist es manchmal sehr nervenaufreibend.

    Denn ein üblicher JSON String sieht ungefähr so aus:

    Code
    {"Herausgeber": "Xema","Nummer": "1234-5678-9012-3456","Deckung": 2e+6,"Währung": "EURO","Inhaber": {"Name": "Reich","Vorname": "Rainer","männlich": true,"Hobbys": [ "Reiten", "Golfen", "Lesen" ],"Alter": 42,"SozialesGewissen": null}"Firma": "Abc-Firma","Standort": ["Am Gewerbegebiet 25", "Etage 2"]}


    Nur halt viieeeeel länger.

    Ich bruachte jedenfalls eine Funktion um einen JSON String in AutoIt zu verwerten, weil ich mit RegExp gescheitert bin.

    Das ganze funktioniert natürlich rekursiv (wie auch sonst).
    Zurückgegeben wird ein 2 Dimensionaler Array, welcher das Hauptobjekt repräsentiert, in dem [n][0] der Schlüssel und [n][1] der Wert ist.
    Der Schlüssel ist eine Zeichenkette. Der Wert enthält entweder eine Zeichenkette (oder Float), ein Objekt oder einen Array. Ein Array wird als 1D Array (im Array) eingebunden.

    Der Funktion liegt auch ein Beispiel bei.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Example starts here

    [/autoit] [autoit][/autoit] [autoit]

    Local $aReturn, $aInhaber, $aHobbies, $aStandort, $sText
    $sText = _
    '{' & @CRLF & _
    ' "Herausgeber": "Xema",' & @CRLF & _
    ' "Nummer": "1234-5678-9012-3456",' & @CRLF & _
    ' "Deckung": 2e+6,' & @CRLF & _
    ' "Währung": "EURO",' & @CRLF & _
    ' "Inhaber": {' & @CRLF & _
    ' "Name": "Reich",' & @CRLF & _
    ' "Vorname": "Rainer",' & @CRLF & _
    ' "männlich": true,' & @CRLF & _
    ' "Hobbys": [ "Reiten", "Golfen", "Lesen" ],' & @CRLF & _
    ' "Alter": 42,' & @CRLF & _
    ' "SozialesGewissen": null' & @CRLF & _
    ' }' & @CRLF & _
    ' "Firma": "Abc-Firma",' & @CRLF & _
    ' "Standort": ["Am Gewerbegebiet 25", "Etage 2"]' & @CRLF & _
    '}' & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    $aReturn = _JSON_Decode($sText)

    [/autoit] [autoit][/autoit] [autoit]

    $aInhaber = $aReturn[4][1] ; Child Array
    $aHobbies = $aInhaber[3][1] ; Child Array from $aInhaber
    $aStandort = $aReturn[6][1] ; Child Array

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aReturn, "Hauptobjekt")
    _ArrayDisplay($aInhaber, "Inhaber")
    _ArrayDisplay($aHobbies, "Hobbies")

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aReturn, "Hauptobjekt")
    _ArrayDisplay($aStandort, "Standort")

    [/autoit] [autoit][/autoit] [autoit]

    $sEncoded = _JSON_Encode($aReturn)
    MsgBox(0,"",$sEncoded)

    [/autoit] [autoit][/autoit] [autoit]

    ;Functions start here

    [/autoit] [autoit][/autoit] [autoit]

    Func _JSON_Decode($sString)
    Local $iIndex, $aVal, $sOldStr = $sString, $b

    [/autoit] [autoit][/autoit] [autoit]

    $sString = StringStripCR(StringStripWS($sString, 7))
    If Not StringRegExp($sString, "(?i)^\{.+}$") Then Return SetError(1, 0, 0)
    Local $aArray[1][2], $iIndex = 0
    $sString = StringMid($sString, 2)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $b = False

    [/autoit] [autoit][/autoit] [autoit]

    $aVal = StringRegExp($sString, '^"([^"]+)"\s*:\s*(["{[]|[-+]?\d+(?:(?:\.\d+)?[eE][+-]\d+)?|true|false|null)', 2) ; Get value & next token
    If @error Then
    ConsoleWrite("!> StringRegExp Error getting next Value." & @CRLF)
    ConsoleWrite($sString & @CRLF)
    $sString = StringMid($sString, 2) ; maybe it works when the string is trimmed by 1 char from the left ?
    ContinueLoop
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $aArray[$iIndex][0] = $aVal[1] ; Key
    $sString = StringMid($sString, StringLen($aVal[0]))

    [/autoit] [autoit][/autoit] [autoit]

    Switch $aVal[2] ; Value Type (Array, Object, String) ?
    Case '"' ; String
    ; Value -> Array subscript. Trim String after that.

    [/autoit] [autoit][/autoit] [autoit]

    $aArray[$iIndex][1] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
    $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 3)

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    Case '{' ; Object
    ; Recursive function call which will decode the object and return it.
    ; Object -> Array subscript. Trim String after that.

    [/autoit] [autoit][/autoit] [autoit]

    $aArray[$iIndex][1] = _JSON_Decode($sString)
    $sString = StringMid($sString, @extended + 2)
    If StringLeft($sString, 1) = "," Then $sString = StringMid($sString, 2)

    [/autoit] [autoit][/autoit] [autoit]

    $b = True
    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    Case '[' ; Array
    ; Decode Array
    $sString = StringMid($sString, 2)
    Local $aRet[1], $iArIndex = 0 ; create new array which will contain the Json-Array.

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $sString = StringStripWS($sString, 3) ; Trim Leading & trailing spaces
    $aNextArrayVal = StringRegExp($sString, '^\s*(["{[]|\d+(?:(?:\.\d+)?[eE]\+\d+)?|true|false|null)', 2)
    Switch $aNextArrayVal[1]
    Case '"' ; String
    ; Value -> Array subscript. Trim String after that.
    $aRet[$iArIndex] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
    $sString = StringMid($sString, StringLen($aRet[$iArIndex]) + 3)

    [/autoit] [autoit][/autoit] [autoit]

    Case "{" ; Object
    ; Recursive function call which will decode the object and return it.
    ; Object -> Array subscript. Trim String after that.
    $aRet[$iArIndex] = _JSON_Decode($sString)
    $sString = StringMid($sString, @extended + 2)

    [/autoit] [autoit][/autoit] [autoit]

    Case "["
    MsgBox(0, "", "Array in Array. WTF is up with this JSON shit?")
    MsgBox(0, "", "This should not happen! Please post this!")
    Exit 0xDEADBEEF

    [/autoit] [autoit][/autoit] [autoit]

    Case Else
    ConsoleWrite("Array Else (maybe buggy?)" & @CRLF)
    $aRet[$iArIndex] = $aNextArrayVal[1]
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aRet[$iArIndex + 2]
    $iArIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    $sString = StringStripWS($sString, 3) ; Leading & trailing
    If StringLeft($sString, 1) = "]" Then ExitLoop
    $sString = StringMid($sString, 2)
    Until False

    [/autoit] [autoit][/autoit] [autoit]

    $sString = StringMid($sString, 2)
    ReDim $aRet[$iArIndex]
    $aArray[$iIndex][1] = $aRet

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    Case Else ; Number, bool
    ; Value (number (int/flaot), boolean, null) -> Array subscript. Trim String after that.
    $aArray[$iIndex][1] = $aVal[2]
    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1
    $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 2)
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    If StringLeft($sString, 1) = "}" Then
    StringMid($sString, 2)
    ExitLoop
    EndIf
    If Not $b Then $sString = StringMid($sString, 2)
    Until False

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aArray[$iIndex][2]
    Return SetError(0, StringLen($sOldStr) - StringLen($sString), $aArray)
    EndFunc ;==>_JSON_Decode

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _JSON_Encode($aArray)
    Local $sString, $iDim = UBound($aArray, 0), $iUB, $iUB_2
    Switch $iDim ; What type of Property?
    Case 2 ; Object
    $sString = "{"
    $iUB = UBound($aArray)
    $iUB_2 = UBound($aArray,2)
    For $i = 0 To $iUB-1
    $sString &= '"' & $aArray[$i][0] & '":'

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($aArray[$i][1]) Then
    $sString &= _JSON_Encode($aArray[$i][1])
    Else
    $sString &= '"' & $aArray[$i][1] & '"'
    EndIf
    $sString &= ","
    Next
    $sString = StringTrimRight($sString, 1) & "}"

    [/autoit] [autoit][/autoit] [autoit]

    Case 1 ; Array
    $sString = "["
    $iUB = UBound($aArray)
    For $i = 0 To $iUB - 1
    If IsArray($aArray[$i]) Then
    $sString &= _JSON_Encode($aArray[$i])
    Else
    $sString &= '"' & $aArray[$i] & '"'
    EndIf
    $sString &= ","
    Next
    $sString = StringTrimRight($sString, 1) & "]"
    Case Else
    Return SetError(1, 0, "")
    EndSwitch
    Return $sString
    EndFunc ;==>_JSON_Encode

    [/autoit]
  • Das ist schön geworden.
    Falls jemand einen JSON-String erstellen und nicht lesen will, gibt es hier etwas dazu.

  • Soo hab jetzt auch eine Funktion eingebaut um einen JSON String zu erstellen.
    Wobei das ganze sehr kompliziert wird, weil man den Array natürlich "von Hand" erstellen muss.
    Die von Prog@ndy gepostete UDF scheint da einfacher in der Handhabung zu sein.

    Hier nochmal der Link:
    http://www.autoitscript.com/forum/index.php?showtopic=104150&st=0

  • hallo zusammen,
    geht das auch wenn ich sowas habe:
    {"test1":[{"test2":[{"test3":{"a1":20,"a2":1,"a3":1},"stat1":false,"e1":"v11"},{"test4":{"g1":8000,"g2":6400},"state2":false,"e2":"v12"}]}]}

    und wie müsste ich das machen?
    besten dank und gruss


    so etwas ähnlich wie hier wäre am besten: http://www.ieinspector.com/httpanalyzer/i…v_json_tree.png

    schnibble

    Einmal editiert, zuletzt von Schnibble (26. Februar 2011 um 13:28)

  • Ja das geht auch. Leider musst du dich da "durchnavigieren". Ich hab zZ keine Zeit für so eine grafische Oberfläche.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Example starts here

    [/autoit] [autoit][/autoit] [autoit]

    Local $aReturn, $aInhaber, $aHobbies, $aStandort, $sText
    $sString = '{"test1":[{"test2":[{"test3":{"a1":20,"a2":1,"a3":1},"stat1":false,"e1":"v11"},{"test4":{"g1":8000,"g2":6400},"state2":false,"e2":"v12"}]}]}'

    [/autoit] [autoit][/autoit] [autoit]

    $aReturn = _JSON_Decode($sString)
    _ArrayDisplay($aReturn,"Hauptobjekt")
    $aReturn = $aReturn[0][1]
    _ArrayDisplay($aReturn,"[0][1]")
    $aReturn = $aReturn[0]
    _ArrayDisplay($aReturn,"[0][1]->[0]")
    $aReturn = $aReturn[0][1]
    _ArrayDisplay($aReturn,"[0][1]->[0]->[0][1]")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"","test3 (...->[0])")
    $aTmp = $aReturn[0]
    _ArrayDisplay($aTmp,"[0][1]->[0]->[0][1]->[0]")
    $aTmp = $aTmp[0][1]
    _ArrayDisplay($aTmp,"[0][1]->[0]->[0][1]->[0]->[0][1]")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"","test4 (...->[1])")
    $aTmp = $aReturn[1]
    _ArrayDisplay($aTmp,"[0][1]->[0]->[0][1]->[1]")
    $aTmp = $aTmp[0][1]
    _ArrayDisplay($aTmp,"[0][1]->[0]->[0][1]->[1]->[0][1]")
    ;Functions start here

    [/autoit] [autoit][/autoit] [autoit]

    Func _JSON_Decode($sString)
    Local $iIndex, $aVal, $sOldStr = $sString, $b

    [/autoit] [autoit][/autoit] [autoit]

    $sString = StringStripCR(StringStripWS($sString, 7))
    If Not StringRegExp($sString, "(?i)^\{.+}$") Then Return SetError(1, 0, 0)
    Local $aArray[1][2], $iIndex = 0
    $sString = StringMid($sString, 2)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $b = False

    [/autoit] [autoit][/autoit] [autoit]

    $aVal = StringRegExp($sString, '^"([^"]+)"\s*:\s*(["{[]|[-+]?\d+(?:(?:\.\d+)?[eE][+-]\d+)?|true|false|null)', 2) ; Get value & next token
    If @error Then
    ConsoleWrite("!> StringRegExp Error getting next Value." & @CRLF)
    ConsoleWrite($sString & @CRLF)
    $sString = StringMid($sString, 2) ; maybe it works when the string is trimmed by 1 char from the left ?
    ContinueLoop
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $aArray[$iIndex][0] = $aVal[1] ; Key
    $sString = StringMid($sString, StringLen($aVal[0]))

    [/autoit] [autoit][/autoit] [autoit]

    Switch $aVal[2] ; Value Type (Array, Object, String) ?
    Case '"' ; String
    ; Value -> Array subscript. Trim String after that.

    [/autoit] [autoit][/autoit] [autoit]

    $aArray[$iIndex][1] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
    $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 3)

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    Case '{' ; Object
    ; Recursive function call which will decode the object and return it.
    ; Object -> Array subscript. Trim String after that.

    [/autoit] [autoit][/autoit] [autoit]

    $aArray[$iIndex][1] = _JSON_Decode($sString)
    $sString = StringMid($sString, @extended + 2)
    If StringLeft($sString, 1) = "," Then $sString = StringMid($sString, 2)

    [/autoit] [autoit][/autoit] [autoit]

    $b = True
    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    Case '[' ; Array
    ; Decode Array
    $sString = StringMid($sString, 2)
    Local $aRet[1], $iArIndex = 0 ; create new array which will contain the Json-Array.

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $sString = StringStripWS($sString, 3) ; Trim Leading & trailing spaces
    $aNextArrayVal = StringRegExp($sString, '^\s*(["{[]|\d+(?:(?:\.\d+)?[eE]\+\d+)?|true|false|null)', 2)
    Switch $aNextArrayVal[1]
    Case '"' ; String
    ; Value -> Array subscript. Trim String after that.
    $aRet[$iArIndex] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
    $sString = StringMid($sString, StringLen($aRet[$iArIndex]) + 3)

    [/autoit] [autoit][/autoit] [autoit]

    Case "{" ; Object
    ; Recursive function call which will decode the object and return it.
    ; Object -> Array subscript. Trim String after that.
    $aRet[$iArIndex] = _JSON_Decode($sString)
    $sString = StringMid($sString, @extended + 2)

    [/autoit] [autoit][/autoit] [autoit]

    Case "["
    MsgBox(0, "", "Array in Array. WTF is up with this JSON shit?")
    MsgBox(0, "", "This should not happen! Please post this!")
    Exit 0xDEADBEEF

    [/autoit] [autoit][/autoit] [autoit]

    Case Else
    ConsoleWrite("Array Else (maybe buggy?)" & @CRLF)
    $aRet[$iArIndex] = $aNextArrayVal[1]
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aRet[$iArIndex + 2]
    $iArIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    $sString = StringStripWS($sString, 3) ; Leading & trailing
    If StringLeft($sString, 1) = "]" Then ExitLoop
    $sString = StringMid($sString, 2)
    Until False

    [/autoit] [autoit][/autoit] [autoit]

    $sString = StringMid($sString, 2)
    ReDim $aRet[$iArIndex]
    $aArray[$iIndex][1] = $aRet

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1

    [/autoit] [autoit][/autoit] [autoit]

    Case Else ; Number, bool
    ; Value (number (int/flaot), boolean, null) -> Array subscript. Trim String after that.
    $aArray[$iIndex][1] = $aVal[2]
    ReDim $aArray[$iIndex + 2][2]
    $iIndex += 1
    $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 2)
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    If StringLeft($sString, 1) = "}" Then
    StringMid($sString, 2)
    ExitLoop
    EndIf
    If Not $b Then $sString = StringMid($sString, 2)
    Until False

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $aArray[$iIndex][2]
    Return SetError(0, StringLen($sOldStr) - StringLen($sString), $aArray)
    EndFunc ;==>_JSON_Decode

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _JSON_Encode($aArray)
    Local $sString, $iDim = UBound($aArray, 0), $iUB, $iUB_2
    Switch $iDim ; What type of Property?
    Case 2 ; Object
    $sString = "{"
    $iUB = UBound($aArray)
    $iUB_2 = UBound($aArray,2)
    For $i = 0 To $iUB-1
    $sString &= '"' & $aArray[$i][0] & '":'

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($aArray[$i][1]) Then
    $sString &= _JSON_Encode($aArray[$i][1])
    Else
    $sString &= '"' & $aArray[$i][1] & '"'
    EndIf
    $sString &= ","
    Next
    $sString = StringTrimRight($sString, 1) & "}"

    [/autoit] [autoit][/autoit] [autoit]

    Case 1 ; Array
    $sString = "["
    $iUB = UBound($aArray)
    For $i = 0 To $iUB - 1
    If IsArray($aArray[$i]) Then
    $sString &= _JSON_Encode($aArray[$i])
    Else
    $sString &= '"' & $aArray[$i] & '"'
    EndIf
    $sString &= ","
    Next
    $sString = StringTrimRight($sString, 1) & "]"
    Case Else
    Return SetError(1, 0, "")
    EndSwitch
    Return $sString
    EndFunc ;==>_JSON_Encode

    [/autoit]

    MfG

  • es muss nicht unbedingt eine grafik sein, eigentlich will ich nur daten aus gewissen feldern, den inhalt rauslesen zb. test1:test2:test3:a2
    ein weiteres problem besteht das der text nicht von jeder seite her gleich aussieht aber die daten im bau sin immer am gleichen ort zb.test1:test2:test3:a2
    ieinspector gibt mir aber immer einen schönen baum aus, dann müsste ich nur die "äste des baums angeben um dessen inhalt auszulesen

    ich weis das die daten hiermit encodiert werden: http://www.xup.in/dl,20600893/json.zip/

    Spoiler anzeigen

    //JSONEncoder
    package com.adobe.serialization.json
    {
    import flash.utils.*;

    public class JSONEncoder extends Object
    {
    public function JSONEncoder(arg1:*)
    {
    super();
    this.jsonString = this.convertToString(arg1);
    return;
    }

    public function getString():String
    {
    return this.jsonString;
    }

    internal function convertToString(arg1:*):String
    {
    if (arg1 is String)
    {
    return this.escapeString(arg1 as String);
    }
    if (arg1 is Number)
    {
    return isFinite(arg1 as Number) ? arg1.toString() : "null";
    }
    if (arg1 is Boolean)
    {
    return arg1 ? "true" : "false";
    }
    if (arg1 is Array)
    {
    return this.arrayToString(arg1 as Array);
    }
    if (arg1 is Object && !(arg1 == null))
    {
    return this.objectToString(arg1);
    }
    return "null";
    }

    internal function escapeString(arg1:String):String
    {
    var loc2:*=null;
    var loc5:*=null;
    var loc6:*=null;
    var loc1:*="";
    var loc3:*=arg1.length;
    var loc4:*=0;
    while (loc4 < loc3)
    {
    loc2 = arg1.charAt(loc4);
    var loc7:*=loc2;
    switch (loc7)
    {
    case "\"":
    {
    loc1 = loc1 + "\\\"";
    break;
    }
    case "\\":
    {
    loc1 = loc1 + "\\\\";
    break;
    }
    case "":
    {
    loc1 = loc1 + "\\b";
    break;
    }
    case "":
    {
    loc1 = loc1 + "\\f";
    break;
    }
    case "\n":
    {
    loc1 = loc1 + "\\n";
    break;
    }
    case "\r":
    {
    loc1 = loc1 + "\\r";
    break;
    }
    case "\t":
    {
    loc1 = loc1 + "\\t";
    break;
    }
    default:
    {
    if (loc2 < " ")
    {
    loc6 = (loc5 = loc2.charCodeAt(0).toString(16)).length != 2 ? "000" : "00";
    loc1 = loc1 + "\\u" + loc6 + loc5;
    }
    else
    {
    loc1 = loc1 + loc2;
    }
    }
    }
    ++loc4;
    }
    return "\"" + loc1 + "\"";
    }

    internal function arrayToString(arg1:Array):String
    {
    var loc1:*="";
    var loc2:*=0;
    while (loc2 < arg1.length)
    {
    if (loc1.length > 0)
    {
    loc1 = loc1 + ",";
    }
    loc1 = loc1 + this.convertToString(arg1[loc2]);
    ++loc2;
    }
    return "[" + loc1 + "]";
    }

    internal function objectToString(arg1:Object):String
    {
    var o:Object;
    var s:String;
    var classInfo:XML;
    var value:Object;
    var key:String;
    var v:XML;

    var loc1:*;
    value = null;
    key = null;
    v = null;
    o = arg1;
    s = "";
    classInfo = flash.utils.describeType(o);
    if (classInfo.@name.toString() != "Object")
    {
    loc2 = 0;
    var loc5:*=0;
    var loc4:*=classInfo.(name() == "variable" || name() == "accessor");
    loc3 = loc4;
    for each (v in loc3)
    {
    if (s.length > 0)
    {
    s = s + ",";
    }
    s = s + this.escapeString(v.@name.toString()) + ":" + this.convertToString(o[v.@name]);
    }
    }
    else
    {
    var loc2:*=0;
    var loc3:*=o;
    for (key in loc3)
    {
    value = o[key];
    if (value is Function)
    {
    continue;
    }
    if (s.length > 0)
    {
    s = s + ",";
    }
    s = s + this.escapeString(key) + ":" + this.convertToString(value);
    }
    }
    return "{" + s + "}";
    }

    internal var jsonString:String;
    }
    }


    besten dank

    4 Mal editiert, zuletzt von Schnibble (27. Februar 2011 um 10:26)