谁能写出这样的JSON String(Nodejs相关)

谁能写出这样的JSON String(Nodejs相关)

var json = “{ “name”: “” + $(“input#name”).val()
+ “”, “date”: “” + $(“input#date”).val()
+ “”, “title”: “” + $(“input#title”).val()
+ “”, “description”: “” + $(“textarea#description”).val()
+ “” }”;

这样写的话, 我真的写不出。 转义什么的很混乱有木有?

有没有其他简便方法?


8 回复

当然可以!使用Node.js来生成JSON字符串时,直接进行字符串拼接确实容易出错,尤其是涉及到转义字符的时候。更好的方法是使用JavaScript的内置对象 JSON.stringify 来生成JSON字符串,或者直接使用对象字面量来创建JSON对象。

以下是一个示例代码,展示了如何使用对象字面量来创建JSON字符串:

示例代码

// 假设我们有一些输入框和文本区域的值
const name = "John Doe";
const date = "2023-10-01";
const title = "My Awesome Project";
const description = "This is a description of my project.";

// 创建一个包含这些信息的对象
const dataObject = {
    name: name,
    date: date,
    title: title,
    description: description
};

// 使用JSON.stringify将对象转换为JSON字符串
const jsonString = JSON.stringify(dataObject, null, 2);

console.log(jsonString);

输出结果

运行上述代码后,jsonString 将包含如下内容:

{
  "name": "John Doe",
  "date": "2023-10-01",
  "title": "My Awesome Project",
  "description": "This is a description of my project."
}

解释

  1. 对象字面量:通过直接创建一个对象字面量,可以避免手动处理字符串拼接和转义问题。
  2. JSON.stringify:这个方法将JavaScript对象转换为JSON格式的字符串。第二个参数是一个函数或数组,用于过滤或转换对象属性;第三个参数是一个空格数,用于美化输出的JSON字符串。

这种方式不仅简洁,而且更安全、更易维护。如果你需要从HTML表单中获取数据,可以使用类似的方法,只是需要先从DOM中获取表单字段的值。例如:

const name = document.getElementById('name').value;
const date = document.getElementById('date').value;
const title = document.getElementById('title').value;
const description = document.getElementById('description').value;

const dataObject = {
    name: name,
    date: date,
    title: title,
    description: description
};

const jsonString = JSON.stringify(dataObject, null, 2);

console.log(jsonString);

这种方法不仅能减少错误,还能提高代码的可读性和可维护性。


为 什 么 你 要 写 这 样 的 J S O N,不 觉 得 很 难 受 吗?

很想知道是基于什么需要要这样写的。

罚抄 JSON.parse JSON.stringify 两个 API 一百遍!

同意楼上

呵呵…

如果实在是想手写 至少可以 用 ‘ 来代替 "

var json = JSON.stringify({name:$("#name").val()});

要生成复杂的 JSON 字符串,特别是当你需要处理用户输入时,使用模板字符串或 JSON.stringify 方法会更安全和方便。下面是一个使用模板字符串的例子,它可以帮助你更清晰地构建 JSON 字符串:

// 假设你已经有了这些元素的值
const name = document.querySelector('input#name').value;
const date = document.querySelector('input#date').value;
const title = document.querySelector('input#title').value;
const description = document.querySelector('textarea#description').value;

// 使用模板字符串构建 JSON 字符串
const json = `{ 
    "name": "${name}", 
    "date": "${date}", 
    "title": "${title}", 
    "description": "${description}" 
}`;

console.log(json);

解释:

  • 模板字符串:使用反引号 ` 可以插入变量并进行格式化,同时自动处理转义字符。
  • 安全性:直接插入变量可以避免手动转义带来的问题,并且能防止潜在的 XSS 攻击。
  • 可读性:使用模板字符串使代码更具可读性和维护性。

这种方法不仅简化了代码,还提高了代码的安全性。

回到顶部