附加JSON字符串

时间:2012-05-07 21:22:00

标签: jquery json string append concat

我对一些JS有点麻烦,希望有人可以提供帮助。

我有两个JSON字符串,使用jQuery通过AJAX收集,然后进行相应的解析。我遇到的问题是,如果我想要为我正在创建的应用程序添加新功能,JSON字符串将静态存储在数据库中,如果将新属性添加到默认JSON字符串,则不会更改。

var string1 = {
    "col1": [
        {
            "foo": "bar"
        }
    ],
    "col2": [
        {
            "foo": "bar",
            "bar": "foo"
        }
    ],
    "col3": [
        {
            "foo": "bar"
        }
    ]
}

var string2 = {
    "col1": [
        {
            "foo": "bar"
        }
    ],
    "col2": [
        {
            "foo": "bar"
        }
    ]
}

string2是用户保存的脚本,假设三天前已保存。从那时起,添加了默认字符串string1,并且需要将信息添加到string2

任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:13)

这样做:

// Input:
var json_string = '{"name":"John"}';

// Convert JSON array to JavaScript object
var json_obj = JSON.parse( json_string );

// Add new key value pair "myData": "Helo World" to object
json_obj.myData = 'Hello World';

// Another more dynamic way to add new key/value pair
json_obj['myAnotherData'] = 'FooBar';

// Convert back to JSON string
json_string = JSON.stringify( json_obj );

// Log to console:
console.log( json_string );

输出:

{
    "name": "John",
    "myData": "Hello World",
    "myAnotherData": "FooBar"
}

jQuery JSON解析器:

如果您想使用jQuery解析器或需要IE7支持,您可以替换

var json_obj = JSON.parse( json_string );

var json_obj = $.parseJSON( json_string );

不幸的是,jQuery无法将json_object转换回JSON字符串,您需要另外一个插件或库。

更多主题:

MDN documentation

Browser support

答案 1 :(得分:1)

使用反斜杠:

“ {\” id \“:\” abc123 \“,\”成功\“:true}”

答案 2 :(得分:0)

未经测试,但这应该有效:

function updateJsonString(oldString, newString) {
    var oldObj = JSON.parse(oldString), newObj = newString.parse(newString);
    for(prop in newObj) {
        if(newObj.hasOwnProp(prop)) {
            if(!oldObj.hasOwnProp(prop)) {
                oldObj[prop] = newObj[prop];
            }
        }
    }

    return JSON.stringify(oldObj);
}

var updatedString = updateJsonString(string2, string1);