Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在节点js中将字符串转换为JSON?_Javascript_Json_Node.js - Fatal编程技术网

Javascript 在节点js中将字符串转换为JSON?

Javascript 在节点js中将字符串转换为JSON?,javascript,json,node.js,Javascript,Json,Node.js,我正在使用NodeJS中的Web服务,它以这种奇怪的格式返回响应。我必须通过传递键名来提取某些值,并且我希望将响应转换为JSON以便于解析。我该怎么做呢 这是我从网络服务得到的 Data Source=*******;Initial Catalog=****;User ID=*******;Password= *******;MultipleActiveResultSets=True;Min Pool Size=5;Max Pool Size=5000;Conn ect Timeout=180;

我正在使用NodeJS中的Web服务,它以这种奇怪的格式返回响应。我必须通过传递键名来提取某些值,并且我希望将响应转换为JSON以便于解析。我该怎么做呢

这是我从网络服务得到的

Data Source=*******;Initial Catalog=****;User ID=*******;Password=
*******;MultipleActiveResultSets=True;Min Pool Size=5;Max Pool Size=5000;Conn
ect Timeout=180;Application Name=*****

我想提取数据源、用户ID、密码。

您可以使用以下方法轻松解析它:

您可以使用
JSON.stringify(obj)
对其进行操作、删除或提取值,最后用JSON对其进行编码


注意:正如Oleg V.Volkov评论的那样,如果源字符串的键或值中包含delimeters(“;”和“=”),则它将不起作用。

您可以使用以下方法轻松解析它:

您可以使用
JSON.stringify(obj)
对其进行操作、删除或提取值,最后用JSON对其进行编码


注意:正如Oleg V.Volkov评论的那样,如果源字符串的键或值中包含delimeters(“;”和“=”),它将不起作用。

如果返回的模式是常量,可以使用regexp实现:

var result = str.match(/Source=(.*);Initial.*ID=(.*);Password=(.*);Multiple/)
然后从匹配的组中获取所需的值

DataSource = result[1];
UserId = result[2];
Password = result[3];

如果返回的模式是常量,则可以使用regexp实现:

var result = str.match(/Source=(.*);Initial.*ID=(.*);Password=(.*);Multiple/)
然后从匹配的组中获取所需的值

DataSource = result[1];
UserId = result[2];
Password = result[3];

Dario的答案基本上就是这样,但值得一提的是节点的
querystring
模块“免费”完成了这类工作

代码

const qs = require('querystring');
const s = `Data Source=*******;Initial Catalog=****;User ID=*******;Password=*******;MultipleActiveResultSets=True;Min Pool Size=5;Max Pool Size=5000;Connect Timeout=180;Application Name=*****`;
console.log(qs.parse(s, ';', '='));
产出:

{ 'Data Source': '*******',
  'Initial Catalog': '****',
  'User ID': '*******',
  Password: '*******',
  MultipleActiveResultSets: 'True',
  'Min Pool Size': '5',
  'Max Pool Size': '5000',
  'Connect Timeout': '180',
  'Application Name': '*****' }

Dario的答案基本上就是这样,但值得一提的是节点的
querystring
模块“免费”完成了这类工作

代码

const qs = require('querystring');
const s = `Data Source=*******;Initial Catalog=****;User ID=*******;Password=*******;MultipleActiveResultSets=True;Min Pool Size=5;Max Pool Size=5000;Connect Timeout=180;Application Name=*****`;
console.log(qs.parse(s, ';', '='));
产出:

{ 'Data Source': '*******',
  'Initial Catalog': '****',
  'User ID': '*******',
  Password: '*******',
  MultipleActiveResultSets: 'True',
  'Min Pool Size': '5',
  'Max Pool Size': '5000',
  'Connect Timeout': '180',
  'Application Name': '*****' }

使用
.Split(“;”)
拆分为对,然后使用
.Split(“=”)
将每对拆分为k/v。如果值可以包括
,这可能会更困难
=
。使用
拆分为对。拆分(“;”)
,然后使用
将每对拆分为k/v。拆分(“=”)
。如果值可以包括
,这可能会更困难
=