Вопрос по java, javascript – Rhino: вернуть JSON из Java

2

У меня есть строковое представление JSON-сериализованного объекта в Java, например."{\"name\":\"John\",\"age\":24}", Как мне разобрать и вернуть его в контекст JavaScript, просто такJSON.parse(str) будет работать в JS? Благодарю.

вопросы / ответы немного отличаются (разбор против строк). что делать parsa
пост свой ответ и примите его. Поскольку вы уже опубликовали ответ, вы просто должны принять его. smcg
Так как вы ответили на свой вопрос, а ответ был на другой вопрос, я бы порекомендовал удалить ваш вопрос. smcg

Ваш Ответ

3   ответа
2

Нашел ответ здесь: Получите доступ к нативному JSON.Stringify Rhino из Java

import org.mozilla.javascript.NativeJSON;

Object json = NativeJSON.parse(cx, scope, str, null, null);
выглядит как в последней версии, так как на данный момент публичная версия синтаксического анализа имеет только 4 аргумента, а 4-й не может быть нулевым. все еще пытаюсь заставить это работать ... antony.trupe
@ antony.trupe, см. мой ответ ниже. SoWeLie
2

Org.mozilla.javascript.json.JsonParser.parseValue. То есть, если вам не нужно применять реверир.

Более интересно,org.mozilla.javascript.NativeJSON построен вокругorg.mozilla.javascript.json.JsonParser.parseValue. И вы можете увидеть это здесь,https: //github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/NativeJSON.java#L11.

10

а четвертая не может быть нулевой. Чтобы решить эту проблему, вы должны создать простой класс, который реализует org.mozilla.javascript.Callable:

import org.mozilla.javascript.Callable;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

public class NullCallable implements Callable
{
    @Override
    public Object call(Context context, Scriptable scope, Scriptable holdable, Object[] objects)
    {
        return objects[1];
    }
}

Затем вы можете вызвать NativeJSON.parse следующим образом:

Object result = NativeJSON.parse(context, scope, jsonString, new NullCallable());
фантастика (я полагаю) antony.trupe
Потрясающе!! искал решение с прошлых двух недель. СПАСИБО ALOT @ SoWeLie AndEngine
Потрясающе!! Раньше боролся с этим несколько часов ... Ты спас мой день :)) Большое спасибо !! Kiril Aleksandrov

Похожие вопросы