2016-12-01 6 views
0

私のページにハードコードされたJSON文字列があります。これはアプリケーションの設定に使用されています。JavaScriptでJSON文字列を変更します。

値がtrueの場合、これらの設定にオプションを追加する必要があるユースケースがあります。

下記の私の擬似コードから、値が真であればメインの文字列に "設定"を追加しようとしています。

JSONを配列として保存してから新しいデータをプッシュしようとしましたが、java-scriptは適切な形式ではないと不平を言っていました。

メインの文字列に追加のjsonデータを追加するにはどうすればよいですか?

var v = true, 
    test = { 
    "copySelected": { 
     "name": "Copy", 
     "icon": "fa-files-o" 
    }, 
    "sep1": "---------", 
    "success": { 
     "name": "Highlight: Green", 
     "icon": "fa-pencil" 
    }, 
    "info": { 
     "name": "Highlight: Blue", 
     "icon": "fa-pencil" 
    }, 
    "warning": { 
     "name": "Highlight: Yellow", 
     "icon": "fa-pencil" 
    }, 
    "danger": { 
     "name": "Highlight: Red", 
     "icon": "fa-pencil" 
    }, 
    "sep2": "---------", 
    "remove": { 
     "name": "Remove Highlight", 
     "icon": "fa-eraser" 
    }, 
    "sep3": "---------", 
    "addNote": { 
     "name": "Add Note", 
     "icon": "fa-file-text-o" 
    } 
} 

// I need to add this section to the above json at the end 
if(v){ 

    "sep4": "---------", 
    "removeUser": { 
     "name": "Remove User", 
     "icon": "fa-user-times" 
    } 

} 
+3

あなたはJSONを持っていません。 JSONは、データに解析できるテキスト形式です。あなたにはオブジェクトがあります。そのため、他のオブジェクトと同じようにプロパティを追加することができます。 –

答えて

3

表示されているのは、通常のJavaScriptオブジェクトです。あなたはJSON文字列を受け取っていたなら、あなたは、単にJSON.parse(string)を呼びたい、

var v = true, 
 
    test = { 
 
    "copySelected": { 
 
     "name": "Copy", 
 
     "icon": "fa-files-o" 
 
    }, 
 
    "sep1": "---------", 
 
    "success": { 
 
     "name": "Highlight: Green", 
 
     "icon": "fa-pencil" 
 
    }, 
 
    "info": { 
 
     "name": "Highlight: Blue", 
 
     "icon": "fa-pencil" 
 
    }, 
 
    "warning": { 
 
     "name": "Highlight: Yellow", 
 
     "icon": "fa-pencil" 
 
    }, 
 
    "danger": { 
 
     "name": "Highlight: Red", 
 
     "icon": "fa-pencil" 
 
    }, 
 
    "sep2": "---------", 
 
    "remove": { 
 
     "name": "Remove Highlight", 
 
     "icon": "fa-eraser" 
 
    }, 
 
    "sep3": "---------", 
 
    "addNote": { 
 
     "name": "Add Note", 
 
     "icon": "fa-file-text-o" 
 
    } 
 
} 
 

 
// I need to add this section to the above json at the end 
 
if(v){ 
 

 
    test.sep4 = "---------"; 
 
    test.removeUser = { 
 
     name: "Remove User", 
 
     icon: "fa-user-times" 
 
    }; 
 

 
} 
 

 
console.log(test.sep4) 
 
console.log(test.removeUser);

と戻り値はあなたがちょうど追加したオブジェクトのようになります。ただ、通常どおりにプロパティを追加プロパティをここに示すように設定します。 (注:オブジェクトは今引用符でカプセル化され、単なる文字列です。)

 var v = true, 
 
     test = `{ 
 
     "copySelected": { 
 
      "name": "Copy", 
 
      "icon": "fa-files-o" 
 
     }, 
 
     "sep1": "---------", 
 
     "success": { 
 
      "name": "Highlight: Green", 
 
      "icon": "fa-pencil" 
 
     }, 
 
     "info": { 
 
      "name": "Highlight: Blue", 
 
      "icon": "fa-pencil" 
 
     }, 
 
     "warning": { 
 
      "name": "Highlight: Yellow", 
 
      "icon": "fa-pencil" 
 
     }, 
 
     "danger": { 
 
      "name": "Highlight: Red", 
 
      "icon": "fa-pencil" 
 
     }, 
 
     "sep2": "---------", 
 
     "remove": { 
 
      "name": "Remove Highlight", 
 
      "icon": "fa-eraser" 
 
     }, 
 
     "sep3": "---------", 
 
     "addNote": { 
 
      "name": "Add Note", 
 
      "icon": "fa-file-text-o" 
 
     } 
 
    }` 
 
    
 
    var result = JSON.parse(test); 
 

 
    // I need to add this section to the above json at the end 
 
    if(v){ 
 

 
     result.sep4 = "---------"; 
 
     result.removeUser = { 
 
      name: "Remove User", 
 
      icon: "fa-user-times" 
 
     }; 
 

 
    } 
 

 
    console.log(result.sep4) 
 
    console.log(result.removeUser);

関連する問題