Как получить доступ / вернуть субобъекты из юрского кода js?

У меня есть следующий код, использующий механизм юрского JavaScript:

_engine.Evaluate(JsFileAndFunctionStrings.CreateDefaultState());
            _responseString = _engine.CallGlobalFunction<string>("createDefaultState", spec);

Если я просто использую следующий код...

public static class JsFileAndFunctionStrings
{
    public static string CreateDefaultState()
    {
        return @"
            function createDefaultState(spec) {
                return(spec);
            }
        ";
    }
}

... тогда мой объект спецификации успешно возвращается в виде строки в переменную _responseObject.

Однако, если я пытаюсь получить доступ к любым подобъектам, либо через точечную запись, либо используя строковый ключ, то ничего не возвращается. Например:

public static string CreateDefaultState()
    {
        return @"
            function createDefaultState(spec) {
                return(spec.checkpoints);
            }
        ";
    }

... тогда ничего не возвращается.

Я не могу получить доступ к подобъектам и работать с ними?

Вот объект спецификации для вашей справки:

{
                    'name': 'demo'
                    , 'ident': 'demo'                                  
                    , 'checkpoints': {
                        'wk1': {
                            'default': {
                                'cf': 'false'
                                , 'ping': 'false'
                            }
                            , 'testa': {
                                'cf': 'true'
                                , 'ping': 'true'
                            }
                            , 'testb': 'S1'
                        }
                        , 'wk2': {
                            'default': {
                                'cf': 'false'
                                , 'ping': 'false'
                            }
                            , 'testa': {
                                'cf': 'true'
                                , 'ping': 'true'
                            }
                    }
                }

Если я получаю доступ к spec.checkpoints в отдельном приложении, которое не использует jurassic или.net и просто запускает javascript, я могу получить доступ к любому из подобъектов, используя показанные обозначения.

0 ответов

Другие вопросы по тегам