6

一部のJSで少し問題があり、誰かが助けてくれることを願っています。

jQueryを使用してAJAXを介して収集され、それに応じて解析される2つのJSON文字列があります。私が抱えている問題は、作成しているアプリケーションに新しい機能を追加したい場合、JSON文字列はデータベースに静的に保存され、デフォルトのJSON文字列に新しい属性が追加されても変更されないことです。

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

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

string2は、ユーザーがスクリプトを保存したもので、仮想的に3日前に保存されました。それ以降、デフォルトの文字列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_objectJSON文字列に変換して戻すことはできません。そのためには、別のプラグインまたはライブラリが必要になります。

トピックの詳細:

MDNドキュメント

ブラウザのサポート

于 2012-05-07T21:36:49.047 に答える
1

バックスラッシュを使用します。

"{\" id \ ":\" abc123 \ "、\" success \ ":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 に答える