Собственная библиотека Apache Tomcat на основе APR не была найдена в java.library.path?

При попытке запустить мое приложение с помощью eclipse / linux на tomcat

Итак, JSON.stringify предоставляет отличный способ превратить объект JS, например:

var baz = {"foo":1, "bar":someFunction};

, в строку JSON, например:

{"foo":1}

Он делает это с необязательным вторым аргументом, который определяет, какие поля должны быть сериализованы:

JSON.stringify(baz, ["foo"]);

Это здорово, но есть проблема. Допустим, ваш "baz" на самом деле является свойством другого объекта, и вы хотите сериализовать этот другой объект:

someObject.baz = {"foo":1, "bar":someFunction};
JSON.stringify(someObject, ["baz"]);

Ну, обычно вы просто определяете метод toJSON на baz, например :

someObject.baz = {"foo":1, "bar":someFunction};
someObject.baz.toJSON = function() { /* logic to "toJSON" baz*/ }
JSON.stringify(someObject, ["baz"]);

Теперь, как я уже упоминал ранее у нас уже есть идеальная логика для "toJSON" baz:

someObject.baz.toJSON = function() {
    return JSON.stringify(baz, ["foo"]);
}

, но если вы попытаетесь вставить это в свой toJSON, вы получите ошибку рекурсии, потому что stringify вызовет toJSON, который вызовет stringify, который будет ...: - (

Вы можете обойти это с помощью хака:

someObject.baz.toJSON = function() {
    var oldToJON = this.toJSON;
    this.toJSON = null;
    var ret = JSON.stringify(baz, ["foo"]);
    this.toJSON = oldToJON;
    return ret;
}

Но ... это кажется неправильным. Итак, мой вопрос: Есть ли способ использовать отличную встроенную сериализацию JSON.stringify внутри метода toJSON объекта (без необходимости скрывать сам метод toJSON во время операции преобразования в строку)?

23
задан machineghost 26 November 2010 в 23:48
поделиться