2017-07-15 57 views
0

被忽略,我使用一個模塊來解析Apache配置文件到JSON意見欄在JSON.stringify

https://github.com/tellnes/node-apacheconf

它工作得完美。當我執行JSON.stringify()時,生成的JSON對象不包含註釋。的console.log(config) 輸出:

{ ThreadsPerChild: [ '250', comments: [ [Array] ] ], 
    MaxRequestsPerChild: [ '0', comments: [ [] ] ], 
    Listen: [ '80', comments: [ [] ] ], 
    ServerRoot: [ '"/www/Apache22"', comments: [ [] ] ], 
    DocumentRoot: [ '"/THDL/thdl-site"', comments: [ [] ] ], 
    ServerName: [ 'localhost:80', comments: [ [Array] ] ], 
    ServerAdmin: [ '[email protected]', comments: [ [] ] ], 
    ErrorLog: [ 'logs/error.log', comments: [ [] ] ], 
    LogLevel: [ 'error', comments: [ [] ] ], 
    LoadModule: 
    [ 'alias_module modules/mod_alias.so', 
    'authz_host_module modules/mod_authz_host.so', 
    'autoindex_module modules/mod_autoindex.so', 
    'dir_module modules/mod_dir.so', 
    'log_config_module modules/mod_log_config.so', 
    'mime_module modules/mod_mime.so', 
    'rewrite_module modules/mod_rewrite.so', 
    'setenvif_module modules/mod_setenvif.so', 
    'php5_module "C:/www/php5/php5apache2.dll"', 
    comments: [ [Array], [Array], [Array], [Array], [Array], [], [Array], [], [] ] ], 
    IfDefine: 
    [ { '$args': 'SSL', LoadModule: [Array] }, 
    comments: [ [Array] ] ], 
    DefaultType: [ 'text/plain', comments: [ [] ] ], 
    IfModule: 
    [ { '$args': 'dir_module', DirectoryIndex: [Array] }, 
    { '$args': 'mime_module', 
     TypesConfig: [Array], 
     AddType: [Array] }, 
    { '$args': '!php5_module', IfModule: [Array] }, 
    { '$args': 'php5_module', Location: [Array] }, 
    { '$args': 'ssl_module', 
     Include: [Array], 
     SSLRandomSeed: [Array] }, 
    { '$args': 'mod_alias.c', Alias: [Array] }, 
    comments: [ [], [], [Array], [], [], [Array] ] ], 
    IndexIgnore: [ '.htaccess', comments: [ [] ] ], 
    FilesMatch: 
    [ { '$args': '^.ht', Order: [Array], Deny: [Array] }, 
    comments: [ [] ] ], 
    Redirect: [ '/thdl external link: http://localhost', comments: [ [] ] ], 
    Directory: 
    [ { '$args': '/', 
     Options: [Array], 
     AllowOverride: [Array], 
     Order: [Array], 
     Allow: [Array], 
     Satisfy: [Array] }, 
    { '$args': '/THDL/thdl-site', 
     Options: [Array], 
     AllowOverride: [Array], 
     Order: [Array], 
     Allow: [Array] }, 
    { '$args': 'C:/www/phpMyAdmin', 
     Options: [Array], 
     AllowOverride: [Array], 
     order: [Array], 
     deny: [Array], 
     allow: [Array] }, 
    comments: [ [], [Array], [] ] ], 
    Include: 
    [ 'conf/extra/httpd-autoindex.conf', 
    'conf/extra/httpd-languages.conf', 
    'conf/extra/httpd-info.conf', 
    'conf/extra/httpd-manual.conf', 
    'conf/extra/httpd-default.conf', 
    'conf/Suite-extra/components.conf', 
    comments: [ [Array], [Array], [Array], [Array], [Array], [Array] ] ], 
    LoadFile: [ '"C:/www/php5/php5ts.dll"', comments: [ [Array] ] ] } 

console.log(JSON.stringify(config))輸出:

{ 
    "ThreadsPerChild": [ 
    "250" 
    ], 
    "MaxRequestsPerChild": [ 
    "0" 
    ], 
    "Listen": [ 
    "80" 
    ], 
    "ServerRoot": [ 
    "\"/www/Apache22\"" 
    ], 
    "DocumentRoot": [ 
    "\"/THDL/thdl-site\"" 
    ], 
    "ServerName": [ 
    "localhost:80" 
    ], 
    "ServerAdmin": [ 
    "[email protected]" 
    ], 
    "ErrorLog": [ 
    "logs/error.log" 
    ], 
    "LogLevel": [ 
    "error" 
    ], 
    "LoadModule": [ 
    "alias_module modules/mod_alias.so", 
    "authz_host_module modules/mod_authz_host.so", 
    "autoindex_module modules/mod_autoindex.so", 
    "dir_module modules/mod_dir.so", 
    "log_config_module modules/mod_log_config.so", 
    "mime_module modules/mod_mime.so", 
    "rewrite_module modules/mod_rewrite.so", 
    "setenvif_module modules/mod_setenvif.so", 
    "php5_module \"C:/www/php5/php5apache2.dll\"" 
    ], 
    "IfDefine": [ 
    { 
     "$args": "SSL", 
     "LoadModule": [ 
     "ssl_module modules/mod_ssl.so" 
     ] 
    } 
    ], 
    "DefaultType": [ 
    "text/plain" 
    ], 
    "IfModule": [ 
    { 
     "$args": "dir_module", 
     "DirectoryIndex": [ 
     "index.html index.php index.aspx" 
     ] 
    }, 
    { 
     "$args": "mime_module", 
     "TypesConfig": [ 
     "conf/mime.types" 
     ], 
     "AddType": [ 
     "application/x-compress .Z", 
     "application/x-gzip .gz .tgz" 
     ] 
    }, 
    { 
     "$args": "!php5_module", 
     "IfModule": [ 
     { 
      "$args": "!php4_module", 
      "Location": [ 
      { 
       "$args": "/", 
       "FilesMatch": [ 
       { 
        "$args": ".php[45]?$", 
        "Order": [ 
        "allow,deny" 
        ], 
        "Deny": [ 
        "from all" 
        ] 
       } 
       ] 
      } 
      ] 
     } 
     ] 
    }, 
    { 
     "$args": "php5_module", 
     "Location": [ 
     { 
      "$args": "/", 
      "AddType": [ 
      "text/html .php .phps" 
      ], 
      "AddHandler": [ 
      "application/x-httpd-php .php", 
      "application/x-httpd-php-source .phps" 
      ] 
     } 
     ] 
    }, 
    { 
     "$args": "ssl_module", 
     "Include": [ 
     "conf/extra/httpd-ssl.conf" 
     ], 
     "SSLRandomSeed": [ 
     "startup builtin", 
     "connect builtin" 
     ] 
    }, 
    { 
     "$args": "mod_alias.c", 
     "Alias": [ 
     "/phpMyAdmin \"C:/www/phpMyAdmin\"" 
     ] 
    } 
    ], 
    "IndexIgnore": [ 
    ".htaccess" 
    ], 
    "FilesMatch": [ 
    { 
     "$args": "^.ht", 
     "Order": [ 
     "allow,deny" 
     ], 
     "Deny": [ 
     "from all" 
     ] 
    } 
    ], 
    "Redirect": [ 
    "/thdl external link: http://localhost" 
    ], 
    "Directory": [ 
    { 
     "$args": "/", 
     "Options": [ 
     "FollowSymLinks" 
     ], 
     "AllowOverride": [ 
     "all" 
     ], 
     "Order": [ 
     "deny,allow" 
     ], 
     "Allow": [ 
     "from all" 
     ], 
     "Satisfy": [ 
     "all" 
     ] 
    }, 
    { 
     "$args": "/THDL/thdl-site", 
     "Options": [ 
     "Indexes FollowSymLinks" 
     ], 
     "AllowOverride": [ 
     "all" 
     ], 
     "Order": [ 
     "allow,deny" 
     ], 
     "Allow": [ 
     "from all" 
     ] 
    }, 
    { 
     "$args": "C:/www/phpMyAdmin", 
     "Options": [ 
     "None" 
     ], 
     "AllowOverride": [ 
     "None" 
     ], 
     "order": [ 
     "deny,allow" 
     ], 
     "deny": [ 
     "from all" 
     ], 
     "allow": [ 
     "from 127.0.0.1" 
     ] 
    } 
    ], 
    "Include": [ 
    "conf/extra/httpd-autoindex.conf", 
    "conf/extra/httpd-languages.conf", 
    "conf/extra/httpd-info.conf", 
    "conf/extra/httpd-manual.conf", 
    "conf/extra/httpd-default.conf", 
    "conf/Suite-extra/components.conf" 
    ], 
    "LoadFile": [ 
    "\"C:/www/php5/php5ts.dll\"" 
    ] 
} 

意見欄在整個結構完全被忽略。我怎樣才能防止這種情況發生。

回答

1

我不認爲你可以使用像數組內的鍵。

例如,嘗試改變:

DefaultType: [ 'text/plain', comments: [ [] ] ], 

到:

DefaultType: { type: 'text/plain', comments: [ [] ] }, 

對象包含鍵與值:{ key1: value1, key2: value2 }

陣列包含逗號分隔值:[ value1, value2 ]

對象可以還包含值ar值電子數組:{ key1: [ value1, value2 ] }

或多維:{ key1: [ value1, [ value2, value3 ] ] }

它看起來像您的配置對象的結構的問題。我建議改變它以匹配我的例子。