我正在使用模块将apache配置文件解析为json
它的工作非常完美。当我执行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: [ 'admin@localhost', 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": [
"admin@localhost"
],
"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\""
]
}
注释字段在整个结构中完全被忽略。我怎样才能防止这种情况发生。
答案 0 :(得分:1)
我认为你不能在数组中使用这样的键。
例如,尝试更改:
DefaultType: [ 'text/plain', comments: [ [] ] ],
为:
DefaultType: { type: 'text/plain', comments: [ [] ] },
对象包含值为{ key1: value1, key2: value2 }
数组包含以逗号分隔的值:[ value1, value2 ]
对象还可以包含值为数组的值:{ key1: [ value1, value2 ] }
或多维:{ key1: [ value1, [ value2, value3 ] ] }
看起来配置对象的结构存在问题。我建议更改它以匹配我的示例。