如何在JavaScript中将对象转换为字符串?

7
我有一个函数,应该以对象作为参数,并返回一个字符串。
我编写的代码如下。
function check(obj) {
  return obj.toString();
}

3
JSON.stringify(object) --> BOOM!-> 你得到了一个字符串 - darklightcode
不行,我试过了。 - user11580667
是的,因为JSON将每个属性名称和值都编码为带有双引号的字符串。所以您需要检查 actual.includes('"name": "Ant", "age": 28,.. etc) - James
6个回答

9

let toString = ({name, age, language}) => `name: ${name}, age: ${age}, language: ${language}`;

const david = { name: 'David', age: 22, language: 'PHP' };

console.log(toString(david));

如果您想要更通用:

let toString = obj => Object.entries(obj).map(([k, v]) => `${k}: ${v}`).join(', ');

const david = { name: 'David', age: 22, language: 'PHP', favoriteFood: 'blue' };

console.log(toString(david));


谢谢。我的三个测试都通过了,但是我得到了一个错误:“返回一个包含用户所有详细信息的字符串”。你能帮我吗? - user11580667
你需要提供更多细节。你还应该了解如何调试代码。 - junvar

6
如果您的对象像

最初的回答:
const obj = { name: "John", age: 30, city: "New York" };

使用JavaScript函数JSON.stringify()将其转换为字符串。 像这样JSON.stringify(obj)。 然后你会得到这个字符串:"{"name":"John","age":30,"city":"New York"}"。 请注意,此字符串包含引号,并且是一个有效的JSON格式字符串。

2
var data = {name: "john", age: 30}
var str = JSON.stringify(data)  // "{\"name\":\"john\",\"age\":30}"
var btoas = btoa(str)  // "eyJuYW1lIjoiam9obiIsImFnZSI6MzB9"
var atobs = atob(btoas)  // "{\"name\":\"john\",\"age\":30}"
var myRealData = JSON.parse(atobs)  //{name: "john", age: 30}

` BOYAA !! `

您尚未定义btoaatob。因此,这不是一个可行的解决方案,应将其删除。 - Tyler2P
这是用于测试字符串值的程序相关内容。有时候,对象代码被更改为 btoa 可以工作,当更改为 atob 时,该值为 [Object object] - perona chan
在浏览器中可以使用atobbtoa,以及alert代码。 - perona chan
需要将对象转换为字符串,例如用于存储浏览器 cookie。使用 btoa(JSON.stringify(code)) 代码可以正常工作。 - perona chan

1

如果你想将一个对象转换为字符串,而不使用JSON.stringify()函数,那么可以采用这种技术。

let obj = { 
  x: 1, 
  y: 'HelloWorld',
  toString: function(){
    return `${this.x}, ${this.y}`;
  }
};

let result = String(obj);

console.log(result, 'type --> ', typeof result);


1
function check(obj) {
  console.log(typeof obj) // object
  let res = JSON.stringify(obj)
  console.log(typeof res) // string
  return res;
}
let example = {name: "John"}
console.log(check(example)) // {"name":"John"}

0

有时候你需要的不仅仅是json。几乎总是需要json,但是...

有时候你需要一个JavaScript字符串,而不是json。比如当你填写graphql模板时。

它就像json字符串一样,但是它的属性周围没有引号。

export const toJavascriptString =
  (obj: any) => JSON.stringify(obj).replace(/\"([\w_-]+?)\"\:/g, '$1:')


var obj = {a: 'wsd', b: 2}
var str = JSON.stringify(obj).replace(/\"([\w_-]+?)\"\:/g, '$1:')
console.log(str)

{a:"wsd",b:2}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接