比较两个json和在json中添加新对象

时间:2015-03-03 07:06:07

标签: javascript jquery json

我将json数据存储在localstorage中,程序加载时间比较本地存储json和变量声明的json。如果两者不同,请将其添加到localstorage json。

我试过以下

var intial_json_string='{'+
    ' "javascript":{"totmark":0,"outof":100},'+
    ' "html":{"totmark":0,"outof":100},'+
    ' "php":{"totmark":0,"outof":100},'+
    ' "java":{"totmark":0,"outof":100},'+
    ' "Bottel":{"totmark":0,"outof":100}'+
    '}';

function first_load()
{
    var tmp_json=jQuery.parseJSON(localStorage.getItem("localconst_json"));
    var loc_tmp_json=jQuery.parseJSON(intial_json_string);

    var temp_obj={"totmark":0,"outof":100};

    $.grep(tmp_json,function(n,i){
        var found=0;
        $.grep(loc_tmp_json,function(n1,i1){    

            if(n==n1)
                found=1;
        });
        if(found==1)
        {
            loc_tmp_json[n] = temp_obj;
        }
    });
}

实施例

var json1='{'+
    ' "javascript":{"totmark":0,"outof":100},'+
    ' "html":{"totmark":0,"outof":100},'+
    ' "php":{"totmark":0,"outof":100},'+
    ' "java":{"totmark":0,"outof":100},'+
    ' "Bottel":{"totmark":0,"outof":100}'+
    '}';

var json2='{'+
    ' "javascript":{"totmark":1,"outof":100},'+
    ' "html":{"totmark":2,"outof":100},'+
    ' "php":{"totmark":3,"outof":100},'+
    ' "java":{"totmark":5,"outof":100}'+
    '}';

比较两个json对象,如果不存在,则将缺少的对象添加到json2。

var json2='{'+
    ' "javascript":{"totmark":1,"outof":100},'+
    ' "html":{"totmark":2,"outof":100},'+
    ' "php":{"totmark":3,"outof":100},'+
    ' "java":{"totmark":5,"outof":100},'+
    ' "Bottel":{"totmark":0,"outof":100}'+
    '}';

1 个答案:

答案 0 :(得分:0)

var tmp_json=jQuery.parseJSON(localStorage.getItem("localconst_json"));
var loc_tmp_json=jQuery.parseJSON(intial_json_string);

var temp_obj={"totmark":0,"outof":100};


$.each(loc_tmp_json,function(n,i){
    var found=0;
    $.each(tmp_json,function(n1,i1){    

        if(n==n1)
            found=1;
    });
    if(found==0)
    {
        tmp_json[n] = temp_obj;
    }
});


localStorage.setItem("localconst_json",JSON.stringify(tmp_json));
const_json=jQuery.parseJSON(localStorage.getItem("localconst_json"));