将对象嵌入到数组中

2ic8powd  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(324)

我得到了一个现有项目,其中数据结构如下:

[
    {
        "key": "username",
        "value": ""
    },
    {
        "key": "password",
        "value": ""
    },
    {
        "key": "cars",
        "value": [
            {"ABC-1234-1234": "s4LmoNzee9Xr6f7uu/"},
            {"ABC-5678-5678": "s5LmoNzee9Xr5f9uu/"}
        ]
    }
]

汽车的价值是一个对象数组。
要在cars数组中创建初始对象,请执行以下操作:

var encryptedStuff = json.data;
    var carkey = carid;
    var entry = {};
    entry[carkey] = encryptedStuff;
    var carArray = [];

    key="cars";

    carArray.push(entry);

我需要将数组放入另一个函数中,该函数将数组转换为存储变量中的字符串。
我的问题…我对嵌入式对象非常生疏…是做以下事情:
1.)将字符串2.)json.parse返回到一个对象中(我在使用jquery grep时已经做到了这一点,但我更喜欢使用javascript)。
这是我的问题。。。3.)在对象中定位cars键并获取其值。4.)将值转换为数组以删除项或添加项(按照上面我将对象写入数组的代码)。
在添加的情况下,我必须将汽车的价值复制到cararray[]中,然后将新项目推到其中。
在删除的情况下,我将不得不删除该项并将所有内容推回cararray[]。
我会做不同的事情,但我不能改变数据的结构,因为这是公司范围内批准的。
任何帮助都将不胜感激。
谢谢

pbpqsu0x

pbpqsu0x1#

您不需要复制car的值数组来添加新条目,也不需要复制然后“向后推”以删除条目-您可以在解析的对象中直接引用它。
你可以用
json.parse
array.find
array.push
阵列拼接
json.stringify
给:

var source  = `[
    {
        "key": "username",
        "value": ""
    },
    {
        "key": "password",
        "value": ""
    },
    {
        "key": "cars",
        "value": [
            {"ABC-1234-1234": "s4LmoNzee9Xr6f7uu/"},
            {"ABC-5678-5678": "s5LmoNzee9Xr5f9uu/"}
        ]
    }
]`

// convert json to an object
var data = JSON.parse(source);
console.log(data, data.find(e=>e.key=="cars").value)

// add an item to the cars.value
data.find(e=>e.key=="cars").value.push({"ABC-": "s6..." });

// remove an item from the cars.value
data.find(e=>e.key=="cars").value.splice(1,1);

// confirm items added/removed
console.log(data, data.find(e=>e.key=="cars").value)

// convert back to a strng to send back to the service
var result = JSON.stringify(data);
console.log(result);

相关问题