如果键名没有由双引号包裹,那么它不符合 JSON 格式的规范,因此无法直接使用 JSON 解析器来提取键值对。但你仍然可以使用正则表达式或手动解析的方式来提取这样的键值对。

下面是一个使用正则表达式提取键值对的示例代码:

const input = '{name: "John", age: 30, city: "New York"}';

// 匹配键名和键值的正则表达式
const regex = /(\w+)\s*:\s*("[^"]*"|\w+)/g;

let match;
const result = {};

while ((match = regex.exec(input)) !== null) {
  const key = match[1];
  const value = match[2].startsWith('"')
    ? match[2].slice(1, -1) // 去掉双引号
    : match[2];

  result[key] = value;
}

console.log(result);
// 输出: {name: "John", age: 30, city: "New York"}

这里的正则表达式 (\w+)\s*:\s*("[^"]*"|\w+) 匹配了一个或多个字母数字字符作为键名,然后是一个冒号,接着是可选的空格,最后是一个字符串(由双引号包裹)或者一个字母数字字符作为键值。

请注意,这种方式只适用于键名和键值都不包含特殊字符的情况。如果键名或键值包含特殊字符(如空格、冒号等),则需要对正则表达式进行适当的修改

js 类似json字符串的格式但是键名没有由双引号包裹如何提取这样键值

原文地址: http://www.cveoy.top/t/topic/iGfC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录