将额外属性附加到JSON对象

时间:2011-12-11 17:17:12

标签: javascript json

我正在尝试将一个元素追加到我的JSON对象中。 JSON的结构如下:

    [
        {
            "newId": "167249-20",
            "title": "El Supremo ordena reabrir la causa por los delitos fiscales de Carlos Fabra",
            "created": "2011-12-01T13:22:00+01:00",
            "priority": "99999",
            "primaryCategoryId": "305",
            "summary": "La sala de lo penal de este órgano ha dejado sin efecto el archivo por prescripción de cuatro de los cinco delitos fiscales que se le imputan al expresidente de la Diputación de Castellón.",
            "image": "http%3A%2F%2Fwww.heraldo.es%2Fuploads%2Fimagenes%2Frec15%2F_reaperuradelcasofabra9558214_d07227b1.jpg",
            "timestamp": "1322742120"
        },
        {
            "newId": "167233-20",
            "title": "Victoria Rodríguez y Claire Morel se imponen en el Open de Andorra",
            "created": "2011-12-01T13:11:00+01:00",
            "priority": "5",
            "primaryCategoryId": "307",
            "summary": "Las patinadoras del Aramón Jaca y del CETDI, Victoria Rodríguez Long y Claire Morel se impusieron en sus respectivas categorías en el Open de Andorra de Patinaje sobre hielo disputado el pasado fin de semana en la pista de Canillo.",
            "image": "",
            "timestamp": "1322741460"
        }
]

所以我想添加和额外的属性(imageLocation)如下:

[
    {
        "newId": "167249-20",
        "title": "El Supremo ordena reabrir la causa por los delitos fiscales de Carlos Fabra",
        "created": "2011-12-01T13:22:00+01:00",
        "priority": "99999",
        "primaryCategoryId": "305",
        "summary": "La sala de lo penal de este órgano ha dejado sin efecto el archivo por prescripción de cuatro de los cinco delitos fiscales que se le imputan al expresidente de la Diputación de Castellón.",
        "image": "http%3A%2F%2Fwww.heraldo.es%2Fuploads%2Fimagenes%2Frec15%2F_reaperuradelcasofabra9558214_d07227b1.jpg",
        "timestamp": "1322742120",
        "imageLocation:" "xxx/xxx/xxx/xxx/xxx/xxx/jpg"
    },
    {
        "newId": "167233-20",
        "title": "Victoria Rodríguez y Claire Morel se imponen en el Open de Andorra",
        "created": "2011-12-01T13:11:00+01:00",
        "priority": "5",
        "primaryCategoryId": "307",
        "summary": "Las patinadoras del Aramón Jaca y del CETDI, Victoria Rodríguez Long y Claire Morel se impusieron en sus respectivas categorías en el Open de Andorra de Patinaje sobre hielo disputado el pasado fin de semana en la pista de Canillo.",
        "image": "",
        "timestamp": "1322741460",
        "imageLocation:" "xxx/xxx/xxx/xxx/xxx/xxx/jpg"
    }
]

2 个答案:

答案 0 :(得分:6)

如果您已将JSON字符串解析为名为jsonObj的javascript对象,则可以轻松遍历集合并添加新属性:

for (int i = 0; i<jsonObj.length;i++)
{
   var singleItem = jsonObj[0];
   singleItem.imageLocation = "http://someUrl/" + singleItem.newId; // example
}

如果您需要将JSON作为字符串,请使用JSON.stringify(jsonObj)

如果您尚未将JSON字符串解析为Javascript对象,则可以轻松完成:

var jsonObj = JSON.parse(jsonString);

答案 1 :(得分:4)

你已经谈到了“JSON对象”,但我的猜测是你没有处理字符串(JSON),你实际上正在处理反序列化的 JavaScript 对象(和数组) )。

如果是这样,只需遍历数组并将新属性分配给对象:

var index;
for (index = 0; index < array.length; ++index) {
    array[index].imageLocation = /* ...value here */;
}

...其中array是您在问题中引用的数组的引用。