Ваш указанный код / разметка не JSON .(JSON требует, чтобы имена свойств были в двойных кавычках, а строковые литералы были в двойных кавычках.) Это похоже на отрывок из середины литерала массива JavaScript, где каждая запись массива определяется литералами объекта.Например:
var people = [
{title:'Alan', hasChild:true},
{title:'Alice', hasDetail:true},
{title:'Amos'},
{title:'Alonzo'}
];
Я думаю, что в вашем вопросе вы сделали две вещи между первой и второй версиями:
- Вы добавили свойство
header
к первой записи(«Алан») (и «Брэду» и «Кэлли»). - Вы добавили новую запись «Александр» между «Алисой» и «Амосом».
Если у вас есть ссылка на массив, который определяют эти литералы, вы можете легко добавить свойства (# 1 выше):
people[0].header = 'A';
Это создаст новое свойство header
для объекта в позиции0
в массиве.
В JavaScript также есть функция для вставки в массив, называемая splice
, которую можно использовать для вставки в массив посередине (# 2выше):
people.splice(2, 0, {title: 'Alexander'});
То есть: начиная с индекса 2
(запись «Amos»), удалите элементы 0
, затем вставьте этот.Изменение производится на месте.
Если то, что у вас есть, на самом деле является строкой, содержащей JSON, то добавление к ней - это либо упражнение по разбору и объединению строк, либо вопрос десериализации JSON в объект, добавлениесвойства объекта и повторную сериализацию его в JSON снова.
Вот пример массива выше в допустимой форме JSON:
[
{"title":"Alan", "hasChild":true},
{"title":"Alice", "hasDetail":true},
{"title":"Amos"},
{"title":"Alonzo"}
]
Вот как это будет выглядетьв файле, хранящемся в формате JSON, или в сети.Если внутри строкового литерала в программном коде, конечно, он должен быть в соответствующей строковой литеральной форме для этого языка с необходимым экранированием - если таковое имеется - для двойных кавычек.Например, этот JSON как строковый литерал JavaScript:
var jsonString = '[' +
'{"title":"Alan", "hasChild":true},' +
'{"title":"Alice", "hasDetail":true},' +
'{"title":"Amos"},' +
'{"title":"Alonzo"}' +
']';