[英]How can I access JSON elements received from an external source using jQuery getJSON()?
[英]How can I add elements to a part of a json by using jquery
我尝试将元素以特定的方式添加到以下JSON:
var data = [{"name":"google",
"ip":"10.10.10.01",
"markets":[{"name":"spain","county":"6002,6017,6018,6019,6020"},
{"name":"france","county":"6003,6005,6006,6007,6008,6025,6026,6027,6028,6029"},
{"name":"japan","county":"6004,6021,6022,6023,6024"},
{"name":"korea","county":"6000,6013,6014,6015,6016"},
{"name":"vietnam","county":"6001,6009,6010,6011,6012"}]},
{"name":"amazon",
"ip":"10.10.10.02",
"markets":[{"name":"usa","county":"10000,10001,10002,10003,10004,10005"}]},
{"name":"yahoo",
"ip":"10.10.10.03",
"markets":[{"name":"japan","county":"10000"}]}];
我想将此元素添加到json:
newData = [{"name":"amazon",
"ip":"10.10.10.02",
"markets":[{"name":"mexico","county":"9000"}]}];
结果可能就是这样:
var data = [{"name":"google",
"ip":"10.10.10.01",
"markets":[{"name":"spain","county":"6002,6017,6018,6019,6020"},
{"name":"france","county":"6003,6005,6006,6007,6008,6025,6026,6027,6028,6029"},
{"name":"japan","county":"6004,6021,6022,6023,6024"},
{"name":"korea","county":"6000,6013,6014,6015,6016"},
{"name":"vietnam","county":"6001,6009,6010,6011,6012"}]},
{"name":"amazon",
"ip":"10.10.10.02",
"markets":[{"name":"usa","county":"10000,10001,10002,10003,10004,10005"},
{"name":"mexico","county":"9000"}]},
{"name":"yahoo",
"ip":"10.10.10.03",
"markets":[{"name":"japan","county":"10000"}]}];
我尝试使用:
$.extend(data.markets, newData)
$.extend(true, data, newData);
//这仅在每个元素都是新元素的情况下才有效。
但没有什么能像我一样假装。
谁能给我解决方案?
提前致谢。
您有一个对象数组,其中每个对象如下所示:
var item = {"name":"...",
"ip":"...",
"markets":[ /*some objects here*/];
}
那么,为什么不创建您的自定义方法来插入元素呢? 它可以在数组中搜索是否存在具有相同名称和ip的项目,然后:
$.extend(true, data[i],newData)
$.extend(true, data,newData)
您尚未创建JSON,尚未创建JavaScript文字对象。
您可以通过以下方式添加特定的新数据
data[1].markets.push({"name":"mexico","county":"9000"})
因为您正在处理javascript对象,所以可以编写一个函数来检查data [n]是否存在并push
数据。
从另一个答案中窃取一些代码:
$.each(data, function(item){
if(item.name == newData[0].name && item.ip == newData[0].ip) {
item.markets.push.apply(item.markets, newData[0].markets);
}
}
假设您知道新对象中的所有市场项目都与现有市场项目不同-否则,您必须进行嵌套的foreach或其他操作。 如果您可以稍微更改对象的表示法,则可以考虑为Markets使用类似字典的对象以使其更加整洁。
实际上,从关联数组更改data
也可能适用。 然后,您可以轻松地通过以下方法检查是否存在:
if(data[myNewDataName]){
//add to markets
} else {
data[myNewDataName] = myNewData;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.