【问题标题】:how convert string to object in javaScript如何在javascript中将字符串转换为对象
【发布时间】:2019-07-10 13:04:48
【问题描述】:

我使用过 Object.parses() 但出现错误

var obj = '
   "users": [
 { "name":"John", "age":30, "city":"New York"},
 { "name":"Mike", "age":25, "city":"new jersey"},   
]'

【问题讨论】:

  • 您遇到的错误是什么?什么是 Object.parses()?
  • 你的意思是JSON.parse()
  • 我建议您使用JSON.parse(),除非您发布的字符串不是有效的 JSON
  • 是的 JSON.parse 是正确的,如果你想解析一个对象
  • @Owaisp 仍然不是有效的 JSON。它也不是有效的 JavaScript。您需要更加注意您输入的内容。使用可以突出显示语法错误的 IDE 以及像 jsonlint.com 这样的 JSON 检查器可能会帮助您在运行代码之前对其进行排序。无论如何,请参阅下面的答案以获取摘要。

标签: javascript json parsing


【解决方案1】:

虽然您没有明确提到 JSON,但此数据看起来像 JSON。您可以使用JSON.parse() 将 JSON 字符串转换为 JavaScript 变量

但是,由于一些语法错误,您发布的字符串实际上不是有效的 JSON。您可以修复这些以获得(我假设是)预期的对象结构:

1) 去掉new jersey之前多余的双引号

2) 在两端添加花括号,使其成为有效对象。

3) 在最后一个数组条目之后删除多余的逗号(尽管事实上很多解析器都会容忍这一点)

所以你最终得到了

{ 
  "users": [
    { "name":"John", "age":30, "city":"New York"},
    { "name":"Mike", "age":25, "city":"new jersey"}
  ]
}

这很容易解析:

var obj = '{ "users": [{    "name": "John",    "age": 30,    "city": "New York"  },  {    "name": "Mike",    "age": 25,    "city": "new jersey"  }]}';

var data = JSON.parse(obj);

console.log(data);
console.log("----------");

//example of gettng a specific property, now it's a JS variable
console.log(data.users[0].name);

【讨论】:

  • 我也使用过相同的,但是当我分配以下字符串对象时,var string = { "users": [ { "name": "Andrew", "pets": [ { "name": "Layla", age: 12 }, { "name": "Poopers", age: 2 }, { "name": "Noelle", age: 1 }, { "name": "Huckleberry", age: 1 } ] }, { "name": "Sergio", "pets": [ { "name": 'Athena', age: 4 }, { "name": 'Anubis', age: 8 }, { "name": 'Fluffy', age: 1 } ] }, ] } JSON.parse() 不适用于此
  • 那是因为它不是JSON,它已经是一个对象,你不需要将它解析成一个新的对象。 JSON.parse() 期望得到一个字符串值,而不是一个对象。请记住:JSON 是一种在字符串中写入对象的方式(例如,您可以在 HTTP 请求中发送它)。如果您只是声明一个变量,那么这与 JSON 无关,并且您不需要 JSON。要使该数据在 JavaScript 上下文中成为 JSON,您必须将其括在引号中,以便 JavaScript 将其视为字符串。然后你可以解析它,就像我回答中的例子一样。
  • ...但是,如果数据来自其他来源而不是手写到代码中,解析 JSON 通常才有用。我的回答只是一个理论示例(基于您在问题的原始代码中尝试执行的操作)。
  • 我以字符串形式获取的此数据不是对象。
  • 你在评论中的写法,即var string = { "users": [....表明它不是一个字符串——你是从{开始的。这使它成为一个对象字面量。如果您正在创建一个字符串,它将以 var string = '{ "users": [... 开头,即在开头添加一个 ' 引号。但这也会给你带来其他问题——你在数据中有单引号而不是双引号(例如"name": 'Athena')。如果它 字符串,那会使 JSON 无效。 JSON(与 JavaScript 不同)要求所有属性名称和所有字符串值始终用双引号引起来。
【解决方案2】:

首先,更正您的字符串。它应该看起来像插入的 sn-p。 二、使用JSON.parse()

var t = '{"users": [{ "name":"John", "age":30, "city":"New York"},{ "name":"Mike", "age":25, "city":"new jersey"}]}'; 
    
     
     var obj = JSON.parse(t);
     console.log(obj["users"][0].name);
     console.log(obj["users"][0].age);
     console.log(obj["users"][0].city);

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    相关资源
    最近更新 更多