Javascript 如何向这个嵌套的JSON对象添加append

Javascript 如何向这个嵌套的JSON对象添加append,javascript,json,Javascript,Json,我的JSON对象是 "msg"=[{"userName":"Mandy","emailId":"m@t.co","userCreated":"2011-12-21 17:21:49","allowedDownloads":"15"},{"userName":"Andy","emailId":"ab@r.co","userCreated":"2011-12-21 17:29:58","allowedDownloads":"45"},{"userName":"Randy","emailId":"re

我的JSON对象是

"msg"=[{"userName":"Mandy","emailId":"m@t.co","userCreated":"2011-12-21 17:21:49","allowedDownloads":"15"},{"userName":"Andy","emailId":"ab@r.co","userCreated":"2011-12-21 17:29:58","allowedDownloads":"45"},{"userName":"Randy","emailId":"re@t.co","userCreated":"2012-01-02 10:18:19","allowedDownloads":"15"},{"userName":"Vandy","emailId":"vai@t.co","userCreated":"2012-01-02 15:49:20","allowedDownloads":"14"},{"userName":"Sandy","emailId":"vrush@t.co","userCreated":"2012-01-02 16:47:35","allowedDownloads":"14"}]
1) 如何再添加1个人,以便在“msg”后面添加

{"userName":"Wendy","emailId":"w@t.co","userCreated":"2012-12-21 17:21:49","allowedDownloads":"15"}
2) 如何将属性“嗜好”添加到每个索引中,以便

{"userName":"Wendy","emailId":"w@t.co","userCreated":"2012-12-21 17:21:49","allowedDownloads":"15","hobbies":"skiing,football,hockey"}

3) 如何检查索引“Wendy”是否有爱好“曲棍球”?

因为您有一个Javascript数组

  var msg = [{"userName":"Mandy","emailId":"m@t.co","userCreated":"2011-12-21 17:21:49","allowedDownloads":"15"},
             {"userName":"Andy","emailId":"ab@r.co","userCreated":"2011-12-21 17:29:58","allowedDownloads":"45"},
             {"userName":"Randy","emailId":"re@t.co","userCreated":"2012-01-02 10:18:19","allowedDownloads":"15"},
             {"userName":"Vandy","emailId":"vai@t.co","userCreated":"2012-01-02 15:49:20","allowedDownloads":"14"},
             {"userName":"Sandy","emailId":"vrush@t.co","userCreated":"2012-01-02 16:47:35","allowedDownloads":"14"}];
您可以轻松地推送新元素

  msg.push({"userName":"Wendy","emailId":"w@t.co","userCreated":"2012-12-21 17:21:49","allowedDownloads":"15"});
但要更新记录,必须循环

  function update(username, property, value){

      for(var i=0; i < msg.length; i++){
          var user = msg[i];
          if(user["userName"] == username){
              user[property] = value;
              break;
          }          
      }

  }
  function check(username, property, value){

        for(var i=0; i < msg.length; i++){
            var user = msg[i];
            if(user["userName"] == username){
                var propertyVal = user[property];
                if( propertyVal && propertyVal.indexOf(value) != -1){
                    return true;
                }
            }          
        }
        return false;
    }
函数更新(用户名、属性、值){
对于(变量i=0;i
要搜索,还必须循环

  function update(username, property, value){

      for(var i=0; i < msg.length; i++){
          var user = msg[i];
          if(user["userName"] == username){
              user[property] = value;
              break;
          }          
      }

  }
  function check(username, property, value){

        for(var i=0; i < msg.length; i++){
            var user = msg[i];
            if(user["userName"] == username){
                var propertyVal = user[property];
                if( propertyVal && propertyVal.indexOf(value) != -1){
                    return true;
                }
            }          
        }
        return false;
    }
函数检查(用户名、属性、值){
对于(变量i=0;i
1)您可以通过以下方式再添加一条记录:

data.push({"userName" : "Smit","emailId":"smit@example.com","userCreated":"2011-12-21 17:29:58","allowedDownloads":"9"});
2) 您可以添加“嗜好”,如:

3) 对于最后一个问题,您可以创建一个函数。我对javascript不太在行,所以除了这个,可能还有其他选择。但您可以从以下代码开始:

function getHobbey(userName, hobbey_name)
{
    for(a in data)
    {
        if (data[a].userName == userName)
        {
            var hb = data[a].hobbies;
            if (hb != '')
            {
                all_hb = hb.split(",");
                for(i=0; i<= all_hb.length; i++)
                {
                    if (all_hb[i] == hobbey_name)
                    {
                        return true;
                    }
                }
                return false;
            }
            return false;
        }            
    }
}
会给你真假

仍然有很多东西可以改进这个功能


谢谢

所有这些都取决于您用来创建和解析JSON字符串的语言。修改语言的本机数据类型,并使用其方法将其转换为JSON,反之亦然。仅供参考,
“msg”=[…]
不是JSON,我无法想象这在哪种语言中是一个有效的赋值。我发布的“msg”是一个更大的JSON对象的一部分,由一个php脚本进行响应…:{“成功”:true,“msg”:[{“用户名”:“…}]}这是否意味着您正在使用PHP?如果是这样,您只需为新的person准备一个数组,并将其附加到包含所有person的数组中,然后调用
json\u encode
。好吧,您在开始时没有提到JavaScript。然后,似乎更多的是关于如何向JavaScript数组添加新元素的问题,与J无关只要做
msg.push({“用户名”:“Wendy”,“emailId”:”w@t.co“,“userCreated”:“2012-12-21 17:21:49”,“allowdownloads”:“15”});
看看@dichakpianist:你之前评论中的代码哪里出了问题,是在
msg[msg.length]={};
之后长度发生了变化,所以你需要说
msg[msg.length-1][“userName”]-“Wendy”
或者你可以一步完成,如
msg[msg.length]={“userName”:“Wendy”};
。或者,最好的选择是使用Felix提到的
msg.push()