如何从自定义的基于字符串的键值格式中解析值?

问题描述 投票:0回答:1

有人可以提示我如何提取基于字符串的自定义键值格式的

NC
值,这是以下数据结构的
domainDetails
相关值...

{
  notAfterTimeStamp: 123456787,
  notBeforeTimeStamp: 123435637,
  domainDetails: 'NC=test.com,O=xyz,L=uvw,C=AS',
  Requested: 'CN=issuer Private Test CA ,OU=abc,OU=Testing',
} 

我尝试从

NC
中提取和打印
domainDetails
的值,如下所示。但是我尝试的结果是
undefined
.

console.log("domainDetails:"+JSON.stringify(response.data.domainDetails.NC));
javascript string object parsing key-value
1个回答
0
投票

从我上面的评论...

“没有真正的复杂性,问题与 JSON 几乎没有任何关系……这一切都归结为如何从字符串(这里

NC
)中解析特定值(这里
"NC=test.com,O=xyz,L=uvw,C=AS"
)”

一种直接的解析方法,它完全涵盖了

domainDetails
值的自定义模式分别
Requested
看起来像这样......

Object
  .fromEntries(
    'NC=test.com,O=xyz,L=uvw,C=AS'
      .split(',')
      .map(customEntry => customEntry.split('='))
  )['NC']

split
是任何出现的逗号处的字符串。通过在 map
 字符处拆分每个自定义条目,结果数组被 
=
ped 到键和值项的数组中。

输入数组的结果数组然后传递给

Object.fromEntries
创建一个对象,OP最终可以访问OP正在寻找的特定值......在这里通过使用
NC
-key.

考虑到 OP 的数据结构的可执行示例代码将如下所示......

const responseData = {
  notAfterTimeStamp: 123456787,
  notBeforeTimeStamp: 123435637,
  domainDetails: 'NC=test.com,O=xyz,L=uvw,C=AS',
  Requested: 'CN=issuer Private Test CA ,OU=abc,OU=Testing',
};

const parsedResponseData = Object
  .assign({}, responseData, {
    domainDetails: Object.fromEntries(
      responseData.domainDetails
        .split(',')
        .map(customEntry => customEntry.split('='))
    )
  });
const nc = parsedResponseData.domainDetails.NC

console.log({
  responseData,
  parsedResponseData,
  nc,
});
.as-console-wrapper { min-height: 100%!important; top: 0; }

© www.soinside.com 2019 - 2024. All rights reserved.