如果键不在双引号中,Javascript JSON 正文将无法读取

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

我手头上有以下问题: 如果我尝试使用以下样式将 json 发送到 api,它可以正常工作:

{ "key": "value", "key": value }

如果我使用以下格式,你似乎总是用JavaScript得到它不起作用:

{ key: "value", key: value }

JSON.stringify 也不起作用,因为它似乎需要一个对象而不是字符串

javascript json
1个回答
0
投票

朋友,JSON 语法虽然非常有用,但非常有限。

当然,根据后端的 JSON 解析器,它可以允许使用不带双引号的键,但这将是所述解析器的奇怪行为......对于浏览器

JSON
api 那么你需要保持常规规则(包括双引号键)。

在浏览器级别,您可以使用

JSON.stringify()
将几乎任何实例转换为有效的 JSON 字符串。包括文字。
JSON.parse()
将需要一个有效的 JSON 字符串作为参数,如果该字符串不是有效的 JSON,则计算结果为空值。

const literalString = "my literal string";
const literalNumber = Date.now();
const literalObject = { literalString, literalNumber };

// EXAMPLE 1
const example1 = JSON.stringify(literalString);

// Example 2
const example2 = JSON.stringify(literalNumber);

// Example 3
const example3 = JSON.stringify(literalObject);

// Example 4
const example4 = JSON.stringify(true);

// Example 5 // Invalid use
const example5 = JSON.stringify(class Something {});

console.log
({
  example1, example2, example3, example4, example5,
});
console.log('Parsed Values:');
console.log
({
  example1: example1 ? JSON.parse(example1) : undefined,
  example2: example2 ? JSON.parse(example2) : undefined,
  example3: example3 ? JSON.parse(example3) : undefined,
  example4: example4 ? JSON.parse(example4) : undefined,
  example5: example5 ? JSON.parse(example5) : undefined,
});

addEventListener
(
  'error', errorEvent => console.warn(errorEvent.error.message)
);

console.log('Additional Test:');
console.log(JSON.parse("{key: \"Value\"}"));
.as-console-wrapper { min-height: 100%; }

注意:仍然有一些

JSON.stringify
/
JSON.parse
无法识别的文字,例如
BigInt
、类、函数以及可能更多...但几乎一切都会正常工作。

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