Динамически добавлять некоторые значения в объект javascript или файл json с помощью jquery

javascript jquery json iteration

532 просмотра

1 ответ

Я хочу добавить текст в мой файл JSON. Мой файл выглядит так:

{
        "a": "Store Name",
        "b": "Address",
        "c": "Town/City",
        "d": "Prov",
        "e": "Postal Code",
        "f": "Phone",
        "g": "Website",

    },
    {
        "a": "Nutter's Bulk Foods #50",
        "b": "102-400 Main Street",
        "c": " N.E.",
        "d": "Airdrie",
        "e": "AB",
        "f": "T4B 2N1",
        "g": "(403) 948-6354",

    },
    {
        "a": "King Drug Hinton 1982 Ltd.",
        "b": "145 Athabasca Avenue",
        "c": "Hinton",
        "d": "AB",
        "e": "T7V 2A4",
        "f": "(780) 865-2645",
        "g": "http://www.kingdrug.ca/",

    },

и так далее. Я хочу добавить текст (внутри html-тегов) внутри одного значения, чтобы динамически изменить мой файл на:

{
        "a": "King Drug Hinton 1982 Ltd.",
        "b": "145 Athabasca Avenue",
        "c": "Hinton",
        "d": "AB",
        "e": "T7V 2A4",
        "f": "<a href='tel:+1780..'>(780) 865-2645</a>",
        "g": "<a href='http://www.kingdrug.ca/'>http://www.kingdrug.ca/</a>",

}

Например: допустим, я хочу указать имя свойства «a», получить значение «780 ...» и добавить тег привязки html, равный значению в файле. Самая большая проблема для меня - это работа с файлом json, я привык работать и перебирать объекты javascript. Заранее благодарю за любое полезное предложение.

ОБНОВИТЬ:

Вместо использования вызова ajax я могу легко превратить свой json-файл в объект javascript, чтобы избежать проблемы и ускорить процесс, поэтому, скажем, у меня есть такой файл:

{
    "html": '65 Simcoe St',
    "title": 'The Farm To Table Market And Kitchen',
    "lat": '44.501345',
    "phone": '(705) 444-6200',
    "website": 'ccfcoop.ca',
    "lng": '-80.215064',
    "postalcode": 'L9Y 1H5',
    "city": 'Collingwood, ON, Canada'
},

Я ищу, чтобы создать такой файл:

{
        "html": '65 Simcoe St',
        "title": 'The Farm To Table Market And Kitchen',
        "lat": '44.501345',
        "phone": '<a href="tel:+17054446200">(705) 444-6200</a>',
        "website": '<a href="http://ccfcoop.ca/">ccfcoop.ca/</a>',
        "lng": '-80.215064',
        "postalcode": 'L9Y 1H5',
        "city": 'Collingwood, ON, Canada'
},
Автор: Marco Maffei Источник Размещён: 08.11.2019 11:26

Ответы (1)


1 плюс

Решение

Вот пример того, как вы можете манипулировать объектом JavaScript:

var data = [{
    "html": '65 Simcoe St',
    "title": 'The Farm To Table Market And Kitchen',
    "lat": '44.501345',
    "phone": '(705) 444-6200',
    "website": 'ccfcoop.ca/',
    "lng": '-80.215064',
    "postalcode": 'L9Y 1H5',
    "city": 'Collingwood, ON, Canada'
}, // more objects could follow here
];

data.forEach( obj => {
    obj.phone = '<a href="tel:' 
        + (obj.phone.indexOf('+') == -1 ? '+1' : '')
        + obj.phone.replace(/\D/g, '') + '">' + obj.phone + '</a>';
    obj.website = '<a href="' 
        + (obj.website.indexOf(':') == -1 ? 'http://' : '') 
        + obj.website + '">' + obj.website + '</a>';
});

console.log(JSON.stringify(data, null, 2));

Обратите внимание, что в строковом формате JSON двойные кавычки экранируются, потому что они появляются в строке в двойных кавычках.

Это всего лишь пример того, как можно добавить гиперссылку HTML к номеру телефона и URL. Могут быть и другие способы преобразования таких элементов в зависимости от того, как они изначально отформатированы. Но это должно дать вам представление.

Автор: trincot Размещён: 20.08.2016 04:01
Вопросы из категории :
32x32