【问题标题】:Make an object from a string in node js从节点js中的字符串创建一个对象
【发布时间】:2017-04-07 02:24:56
【问题描述】:

我将字符串从 AngularJS 发送到 NodeJS,格式如下。

"{↵obj:{↵one:string,↵two:integer↵}↵}"//request object from browser console

我想将此字符串转换为对象并使用其属性。为此,服务器端代码如下:

var data=req.body.data.replace(/"/g,"");
var str=data.replace(/\n/g," ");
//res.json(str) // returning "{ obj:{ one:string, two:integer } }"
try {
var obj=JSON.parse(JSON.stringify(str)).replace(/"/g,"");
res.json(obj);//returning same "{ obj:{ one:string, two:integer } }"
} catch (error) {
console.log(error);
}

我想通过 Object.keys[obj] 或任何其他方法获取 ['users'] 想要访问此对象的属性。但未能实现这一目标。

This 之类的许多解决方案都无济于事。这里有什么建议吗??

【问题讨论】:

  • 为什么要删除引号和换行符?如果它是有效的 JSON,那么您需要做的就是在 req.body.data 上调用 JSON.parse()
  • 这似乎不是一个有效的JSON
  • 它没有直接解析 req.body.data。通过这样做 JSON.parse(JSON.stringify(req.body.data)) 答案是“{\nobj:{\none:string ,\ntwo:integer\n}\n}".....仍然无法访问属性
  • @ThomasThiebaud 错误后 json.parse 显示这个但我如何验证这个 json 以防万一。???你能解释一下吗?

标签: javascript angularjs json node.js string


【解决方案1】:

您只需要JSON.parse 将字符串转换为对象。

类似这样的:

var jsonString='{"obj":{"one":"string","two":"integer"}}';
console.log(JSON.parse(jsonString));

输出:

{ obj: { one: 'string', two: 'integer' } }

【讨论】:

  • 只是 json.parse 正在创建错误作为意外令牌。
  • 显示控制台输出。
  • 这是 req.body.data { obj:{ one:string, two:integer } } 不像 json object.and 这是控制台输出。SyntaxError: Unexpected token o in JSON at position 2 at Object.parse (native)
  • 那是因为它不是一个正确的 JSON 字符串。这是 json 对象。一个 json 字符串是这样的:'{"obj":{"one":"string","two":"integer"}}';
  • 好的,这是一个对象字符串吗?我们可以将它转换为简单的对象而不是 json 吗?
【解决方案2】:

例如我的原始数据是这样的:

var raw_data = 
    {
        "ok": true,
        "user": {
            "id": "U89MZ4PV2",
            "team_id": "T895HCY8H",
            "name": "hyosoka187",       
        }
    }

然后只需使用JSON.parse(raw_data, true);。所以

var real_data = JSON.parse(raw_data, true);
console.log(real_data.user.name);

结果:

hyosoka187

注意: JSON.parse(raw_data, true) :的输出

{
    ok: true,
    user: {
        id: 'U89MZ4PV2',
        team_id: 'T895HCY8H',
        name: 'hyosoka187',       
    }
}

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    相关资源
    最近更新 更多