JSON解析对象和通配符

JSON parsed object and wild card

本文关键字:通配符 对象 JSON      更新时间:2023-09-26

我有一个函数,应该检查旧数据对数据。我正在解析数据和oldData,以分别获得一个JSON对象,因为dbData和formData只是包含html表单的ID和值的字符串。该函数的目的是检查用户是否对HTML表单中的某些文本区域进行了任何文本更改。我想通过检查每个文本区域的ID来做到这一点,然后检查formData和Data中的值是否相同。在这种情况下,没有进行任何更改,函数将返回true。

解析的数据字符串看起来像这样:

"[{'"texts'":[{'"default'":true,'"bread-texts'":false,'"textarea1'":'"Banana'",'"textarea2'":'"Kiwi'",'"textarea3'":'Apple '",'"textarea4'":'"coffe'",'"textarea5'":'"Tea'",'"signature'":true,'"profile'":'"header'",'"fontsize'":'"26'",'"fontsize-headers'":'"10.5'",'"fontcolor'":'"#0000'",'"textfont'":'"header-large'",'"textsub1'":'"Bold'",'"font'":'"ICA%20Text'",'"textsub'":'"Regular'",'"textsize'":'"20'",'"textsize-signature'":'"9.5'",'"textsizesmall'":'"5.5'",'"textsizesmall-placer'":'"2.75'",'"vers-placer'":'"false'",'"text-colored'":'"%23000000'",'"s-all-customers'":true,'"new-customers'":true,'"undefined'":'"'"}]}]"

因此,例如,我必须检查dbData和formData中的"textarea1"的ID,然后检查值是否相同。这可以使用通配符或有更好的方式来归档?

function CheckValues() {
    var isChanged = false;
    var formData = $.parseJSON(data);
    var dbData = $.parseJSON(oldData);                  
    if(formData !== dbData) {
        var isChanged = true;
    }   
    return isChanged;
}   
The code shown below works in IE9+, Chrome, FireFox but other
browsers yet to test. The example shows two different values, data and 
OldData - data contains "Tea" where as OldData contains "OldTea" so 
isChanged flag is true.
function CheckValues() {
            var data = "{'"disable'":false,'"textarea1 
            '":'"Banana'",'"textarea2'":'"Kiwi'",'"textarea3 
            '":'"Milk'",'"textarea4'":'"Coffe'",'"textarea5'":'"Tea'"}";
            var oldData = "{'"disable'":false,'"textarea1 
            '":'"Banana'",'"textarea2'":'"Kiwi'",'"textarea3 
            '":'"Milk'",'"textarea4'":'"Coffe'",'"textarea5'":'"OldTea'"}";
            var formData = JSON.parse(data);
            var dbData = JSON.parse(oldData);
            var oFormData = Object.keys(formData);
            var oDbData = Object.keys(dbData);
            var isChanged = false;
            if (oFormData.length === oDbData.length)
            {
                for (var i = 0; i < oFormData.length; i++) {
                    var propName = oFormData[i];
                    if (typeof (dbData[propName]) === "undefined") {
                        isChanged = true;
                        break;
                    }
                    else {
                        if (formData[propName] !== dbData[propName]) {
                            isChanged = true;
                            break;
                        }
                    }
                }
            }
        }