6

我在处理一些 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.

有人能帮忙吗?

4

3 回答 3

15

这将做:

// 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 文档

浏览器支持

于 2012-05-07T21:36:49.047 回答
1

使用反斜杠:

"{\"id\": \"abc123\", \"成功\": true}"

于 2020-04-09T17:47:20.807 回答
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);
于 2012-05-07T21:27:43.840 回答