Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   str.toJson(); (http://www.flasher.ru/forum/showthread.php?t=131798)

Fernando Costa 28.10.2009 17:27

str.toJson();
 
Привет форумчане.

Есть у кого-нить или может в сети готовые решения для приттипринта JSON по аналогии с toXMLString(); Не хотелось бы делать то, что может уже есть готовое

random13 28.10.2009 17:37

не совсем понятно, что вам нужно еще раз?

SamFR 28.10.2009 17:42

as3corelib http://code.google.com/p/as3corelib/

Fernando Costa 28.10.2009 17:42

есть формат данных JSON. Есть формат данных XML.
Для XML в ас3 есть функция для приттипринта toXMLString(). Для Jsona нет.

SamFR 28.10.2009 18:00

хм... а что подразумевается под "форматом данных JSON"?
это вроде как обычная строка...

Fernando Costa 28.10.2009 18:08

вот так вот хочу
Цитата:

{"slots":
(пробел){
(пробел) (пробел)"action":"456", "res":"OK"
(пробел)}
}

SamFR 28.10.2009 18:18

То есть просто форматирование строки, заданной согласно спецификации JSON?
Тогда готовых решений не знаю, но это не так сложно сделать, используя рекурсию совместно с регулярными выражениями.

random13 28.10.2009 18:29

понятно короче вам надо тупо распарсить весь объект чтоб он в тресе красиво показался, ну так это дело 3 минут рекурсия решает

Fernando Costa 28.10.2009 18:32

короче как-то так, особо не тестировал
Код AS3:

package  
{
        /**
        * @author Anton Bodrichenko. www.bodrichenko.org.ua
        */

        public class JsonFormatter
        {
 
                public function JsonFormatter()
                {
 
                }
                public static function toJsonString($str:String):String
                {
                        var rezultString:String = "{\n"+spaces(1);
                        var str:String = $str;
                        var strLength:int = $str.length;
                        var indent:int = 1;
 
                        for (var i:int = 1; i < strLength; i++)
                        {
                                var char:String = str.charAt(i);
                                if (char == "{" || char == "[" ) {
                                        indent++;
                                        rezultString += "\n " + spaces(indent) + char + "\n " + spaces(indent+1) ;
                                }
                                else if (char == "}" || char == "]" ) {
                                        rezultString += "\n " + spaces(indent) + char + "\n " + spaces(indent)
                                        indent--;
                                } else {
                                        rezultString += char;
                                }
                        }
                        return rezultString
                }
 
                private static function spaces($indent:int):String
                {
                        var str:String = "";
                        while ($indent--) str += "  ";
                        return(str);
                }
        }
}


SamFR 28.10.2009 20:11

Да, можно и так.
А можно с помощью той же as3corelib распарсить строку в объект, а объект уже, соответственно, вывести где-то таким макаром:

Код AS3:

public static function traceObject(obj:Object, ident:String = '', tab:String = '  ', traceSimpleTypes:Boolean = true):String{
        var out:String = '';
        for(var i:String in obj){
                if(typeof(obj[i]) == 'object'){
                        out += ident + i + ': <' + getQualifiedClassName(obj[i]) + '>\n' + traceObject(obj[i], ident + tab, traceSimpleTypes);
                }else{
                        out += ident + i + ': ' + obj[i];
                        if (traceSimpleTypes) out += ' <' + getQualifiedClassName(obj[i]) + '>';
                        out += '\n';
                }
        }
        return output;
}


CrazyFlasher 29.10.2009 10:40

смотри пост 3...а этой либе есть класс JSON с методами JSON.encode, JSON.decode

Fernando Costa 29.10.2009 12:08

Я собственно этими классами и пользуюсь но в них нет метода toJSONString(); чтобы я мог протрейсить отформатированую JSON строку и наглядно посмотреть что мне пришло от сервера, вместо одной длинной строки.

random13 29.10.2009 12:18

что вам пришло от сервера вам очень наглядно может показать firebug - помощник всех веб-разрабов

даже трейсов не нужно делать

Fernando Costa 29.10.2009 12:52

Я знаю что такое файрбаг :) я не хочу стрелять с пушки по воробьям. Проблема уже решена, всем спасибо.

random13 29.10.2009 13:22

думаю про пушку вы тут написали неуместно, учитывая что велосипед за вас уже получается давно сделали а вы счас только заморочились, я понимаю если б у вас какая цель была существенная, а то просто просмотреть объект, что в нем внутри и как обращаться

Fernando Costa 29.10.2009 19:12

Цитата:

если б у вас какая цель была существенная, а то просто просмотреть объект
моя локальная цель это посмотреть джейсон сообщение в удобоваримом виде, это мне надо для достижения другой существенной цели. Файрбаг не форматирует JSON, да и каждый раз запускать браузер не камильфо, мне не понятны посылки к файрбагу впринципе.

Цитата:

учитывая что велосипед за вас уже получается давно сделали
где? кто?


Часовой пояс GMT +4, время: 13:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.