繁体   English   中英

在jQuery中设置嵌套JSON的值

[英]setting values for nested JSON in Jquery

我有一个看起来像下面的杰森

{
    "Market": 0,
    "Marketer": null,
    "Notes": null,
    "SalesChannel": null,
    "ServiceLocations": [
        {
            "ExtensionData": null,
            "AdminFee": 0,
            "CommodityType": 0,
            "ContractType": 0,
            "Payment": {
                "ExtensionData": null,
                "BankAccountNumber": null,
                "BankAccountType": 0,
                "BankRoutingNumber": null,
                "CardType": 0,
                "CreditCardExpirationDate": "/Date(-62135575200000)/",
                "CreditCardNumber": null,
                "CreditCardReferenceID": null,
                "CreditCardSecurityCode": null,
                "PaymentAddress1": null,
                "PaymentAddress2": null,
                "PaymentAmount": 0,
                "PaymentCity": null,
                "PaymentCounty": null,
                "PaymentFirstName": null,
                "PaymentLastName": null,
                "PaymentPhone": null,
                "PaymentState": null,
                "PaymentType": 0,
                "PaymentZip": null
            },
            "ProductID": null,
            "PromoCode": null,
            "Rate": 0,
            "RateSchedule": null,
            "ServiceAddress1": null,
            "ServiceAddress2": null,
            "ServiceCity": null
        }
    ],
    "SocialSecurityNumber": null,
    "SubAgent": null,
    "Login": null
}

我想动态遍历JSON并设置每个键值对的值。 如果存在该值,请设置该值,但如果不存在该值,则将其保留原样。

我正在做这样的事情,因为这似乎不起作用

$.getJSON("data.js",function buildjson(json){
                myJSONObject = json;
                        for (var key in myJSONObject) {
                                    if(myJSONObject.hasOwnProperty(key)){
                                    if(typeof(myJSONObject[key]) === 'object')
                                    {
                                    newJson(myJSONObject[key]);
                                    }

                                    if($("#main").find(":input[name="+key+"]") != "") {
                                    modifyJson(key,myJSONObject[key]);
                                    }
                                    else{
                                    setData(key,myJSONObject[key]);
                                    }
                                    $("#keylist").append(key+":"+myJSONObject[key]+"<br />");
                                    //newJson(myJSONObject[key]);
                                }
                    }
                function newJson(myJSONObject) {
                    for (var key in myJSONObject) {
                                        if(myJSONObject.hasOwnProperty(key)){
                                        modifyJson(key,myJSONObject[key]);
                                        newJson(myJSONObject[key]);
                                    }
                        }
        }
        function setData(path, value) {
    if (path.indexOf('.') != -1) {
        path = path.split('.');
        for (var i = 0, l = path.length; i < l; i++) {
            if (typeof(data[path[i]]) === 'object') {
                continue;
            } else {
                data[path[i - 1]][path[i]] = value;
            }
        }
    } else {
        data[path] = value;
    }
};

            function modifyJson(key,value) {
                var theValue = value;
                //$("#keylist1").append(key+":"+theValue+"<br />");
                if($("#main").find(":input[name="+key+"]")) {
                    theValue = $(":input[name="+key+"]").val();
                    setData(key,theValue);
                }
            }

    });

    }

我需要做什么修改?

您在"ServiceCity": null之后使用逗号结尾"ServiceCity": null ,这将导致无效的JSON对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM