我正在使用key-value
调用商业产品的API。不幸的是,生成的对象有几个id
对,其中包含来自链接表的name
。
我可以轻松获取标准值并编写代码以查找相关的name
值并将其添加到对象中。我希望将id
添加到与原始key
相同的位置。但是,当我添加一个新的name
时,它会被添加到对象的末尾。
我希望id
与var json = {id: 4730183,name: "A A", customer_source_id:123, company: "NE Company"};
位于同一位置,因此当我将其插入工作表时,列仍将按顺序排列。
这是我的目标:
id
将name
替换为var json = {id: 4730183,name: "A A", source:"CRM", company: "NE Company"};
后,这是我想要的对象:
customer_source_id
基本上,我想在对象中找到source
并将其替换为indexOf
。
我无法使用splice
和{{1}},因为该对象不是数组。
最好的方法是什么?我是否必须先将其转换为数组然后再将其转换回来?
答案 0 :(得分:2)
快速回答是:
var obj = {id: 4730183,name: "A A", customer_source_id:123, company: "NE Company"};
var json = JSON.stringify(obj);
json = json.replace("customer_source_id","source")
更好的答案是:
@Waqar Ahmed是对的。 JavaScript对象是无序的。在您的示例中,“var json”是一个不是JSON的对象。您可以使用JSON.stringify(json)
将其设为JSON。但是一旦将JSON解析为对象,它就会变得无序。您不应该使用它来存储有序数据。
答案 1 :(得分:1)
我不确定它是否有效,但您可以遍历这些键并构建一个新的json对象,如下所示:
var newjson = {};
for(var key in json){
if(key === 'customer_source_id'){
newjson.source = [NEW VALUE TO DISPLAY];
}else{
newjson[key] = json[key];
}
}
json = newjson;
但是,就像@Waqar和@Spencer所说的那样,该对象不用于有序数据。
答案 2 :(得分:0)
你只能在java脚本数组中做他的。不是JSON。 JSON意味着通过键来解决,而不是通过index来解决。将你的json改为
var json ={id: 4730183,name: "A A", customer_source_id:null, items : [] company: "ESI"};
现在您可以使用push
数组方法插入项目。
json.items.push('My Item');