2016-12-01 2 views
0

У меня есть строка JSON, жестко закодированная на моей странице, она используется для настроек в моем приложении.Изменить строку JSON с помощью javascript

Существует прецедент, где мне нужно добавить параметр к этим настройкам, если значение истинно.

Из моего кода под псевдонимом ниже я пытаюсь добавить «настройку» к основной строке, если значение равно 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-объектом. Просто добавьте свойства к нему как обычно:

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);

Если вы получили строку 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" 
 
     } 
 
    }` 
 
    
 
    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);

Смежные вопросы