Updating a JSON object using Javascript

前端 未结 9 1533
Happy的楠姐
Happy的楠姐 2020-12-07 13:37

How can i update the following JSON object dynamically using javascript or Jquery?

var jsonObj = [{\'Id\':\'1\',\'Username\':\'Ray\',\'FatherName\':\'Thompso         


        
相关标签:
9条回答
  • 2020-12-07 14:14

    I took Michael Berkowski's answer a step (or two) farther and created a more flexible function allowing any lookup field and any target field. For fun I threw splat (*) capability in there incase someone might want to do a replace all. jQuery is NOT needed. checkAllRows allows the option to break from the search on found for performance or the previously mentioned replace all.

    function setVal(update) {
        /* Included to show an option if you care to use jQuery  
        var defaults = { jsonRS: null, lookupField: null, lookupKey: null,
            targetField: null, targetData: null, checkAllRows: false }; 
        //update = $.extend({}, defaults, update); */
    
        for (var i = 0; i < update.jsonRS.length; i++) {
            if (update.jsonRS[i][update.lookupField] === update.lookupKey || update.lookupKey === '*') {
                update.jsonRS[i][update.targetField] = update.targetData;
                if (!update.checkAllRows) { return; }
            }
        }
    }
    
    
    var jsonObj = [{'Id':'1','Username':'Ray','FatherName':'Thompson'},  
               {'Id':'2','Username':'Steve','FatherName':'Johnson'},
               {'Id':'3','Username':'Albert','FatherName':'Einstein'}]
    

    With your data you would use like:

    var update = {
        jsonRS: jsonObj,
        lookupField: "Id",
        lookupKey: 2, 
        targetField: "Username",
        targetData: "Thomas", 
        checkAllRows: false
        };
    
    setVal(update);
    

    And Bob's your Uncle. :) [Works great]

    0 讨论(0)
  • 2020-12-07 14:15

    A plain JavaScript solution, assuming jsonObj already contains JSON:

    Loop over it looking for the matching Id, set the corresponding Username, and break from the loop after the matched item has been modified:

    for (var i = 0; i < jsonObj.length; i++) {
      if (jsonObj[i].Id === 3) {
        jsonObj[i].Username = "Thomas";
        break;
      }
    }
    

    Here it is on jsFiddle.

    Here's the same thing wrapped in a function:

    function setUsername(id, newUsername) {
      for (var i = 0; i < jsonObj.length; i++) {
        if (jsonObj[i].Id === id) {
          jsonObj[i].Username = newUsername;
          return;
        }
      }
    }
    
    // Call as
    setUsername(3, "Thomas");
    
    0 讨论(0)
  • 2020-12-07 14:15

    JSON is the JavaScript Object Notation. There is no such thing as a JSON object. JSON is just a way of representing a JavaScript object in text.

    So what you're after is a way of updating a in in-memory JavaScript object. qiao's answer shows how to do that simply enough.

    0 讨论(0)
提交回复
热议问题