【问题标题】:Manipulate this json string into this javascript object将此 json 字符串操作到此 javascript 对象中
【发布时间】:2017-02-23 14:31:03
【问题描述】:

我有这个 json 字符串。

user_json_str = 
"
[{
    "id": 1,
    "lg_name": "foo",
    "lg_password": "bar"
},
{
    "id": 2,
    "lg_name": "user",
    "lg_password": "passwd"
}
]
";

我想对其进行操作,使其成为一个看起来像这样的 javascript 对象;

user_obj =
{
     foo: {
         id: 1,
         password: 'bar'
     },
     user: {
         id: 2,
         password: 'passwd'
     }
};

我正在使用 node.js v4.6。我不知如何开始。一些提示作为起点会很有帮助。

【问题讨论】:

    标签: javascript json node.js javascript-objects


    【解决方案1】:

    您可以解析字符串并构建一个以名称为键的对象。

    var user_json_str = '[{"id":1,"lg_name":"foo","lg_password": "bar"},{"id":2,"lg_name": "user","lg_password":"passwd"}]',
        array = JSON.parse(user_json_str),
        object = {};
    
    array.forEach(function (a) {
        object[a.lg_name] = { id: a.id, password: a.lg_password };
    });
    
    console.log(object);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      【解决方案2】:

      您可以使用JSON.parse,从字符串中获取对象数组。

      然后,您可以使用array.reduce 循环对象并解析为必要的格式。

      示例

      var user_json_str = '[{"id":1,"lg_name":"foo","lg_password": "bar"},{"id":2,"lg_name": "user","lg_password":"passwd"}]';
      
      var object = JSON.parse(user_json_str).reduce(function (p,o) {
          p[o.lg_name] = { id: o.id, password: o.lg_password };
        return p;
      }, {});
      
      console.log(object);

      【讨论】:

        【解决方案3】:

        首先,解析你的数组,创建一个新对象,然后遍历数组并构建对象。

        var arr = JSON.parse('[{"id": 1,"lg_name": "foo","lg_password": "bar"},{"id": 2,"lg_name": "user","lg_password": "passwd"}]');
        var newObj = {}
        for (var i = 0; i < arr.length; i++)
        {
            newObj[arr[i].lg_name] = {id: arr[i].id, password: arr[i].lg_password}
        }
        

        【讨论】:

          【解决方案4】:

          尝试使用 JSON.parse(user_json_str);

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-06-26
            • 2019-11-01
            • 2011-12-06
            • 1970-01-01
            • 2020-09-20
            • 1970-01-01
            • 2014-04-03
            相关资源
            最近更新 更多