大家好,我正在连接这样的JSON
字符串:
var addresses = "[";
addresses += '{"AddressID":' + adressid + ',"EmailID":' + $('#txtemailData').val() + ',"Hno":' + $('#txthno').val() + ',"StreetName":' + $('#txtstreetname').val() + ',"City":' + $('#txtcity').val() + ',"StateID":' + $('#ddlState').val() + ',"CountryID":' + $('#ddlcountry').val() + ',"Zip":' + $('#txtzip').val() + ',"PhoneNumber":' + $('#txtphonenumber').val() + ',"Fax":' + $('#txtfax').val() + ',"AddressName:' + $('#txtaddresstype').val() + '"},';
对象看起来像这样:
[{
"AddressID":2,
"EmailID":akanilkumar443@gmail.com,
"Hno":Hyderabad,
"StreetName":Gachibowli,
"City":Hyderabad,
"StateID":1,
"CountryID":1,
"Zip":040,
"PhoneNumber":8341516166,
"Fax":23123131,
"AddressName:Store Address"},
{
"AddressID":3,
"EmailID":akanilkumar443@gmail.com,
"Hno":aSAs,
"StreetName":asdasdad,
"City":asdasda,
"StateID":1,
"CountryID":1,
"Zip":asdasda,
"PhoneNumber":asdasda,
"Fax":asdasda,
"AddressName:Store Type"
}]
如何基于它的id更新json对象的这个特定值?
假设我想要更改对象的某些值
其中AddressID=2
。例如,我想更改EmailID
Streetname
个JSON
个AddressID=2
个对象。我怎么能用jQuery做到这一点?
我正在尝试这样,但它不会循环,任何人都可以帮助我吗?
function EditAddress(addressid) {
alert(addressid);
alert(addresses);
var addressobject =JSON.parse(addresses.substring(0, addresses.length - 1) + ']');
jQuery.each(addressobject, function (i, val) {
alert(val.AddressID);
if (val.AddressID == addressid)
{
//update logic
}
});
}
答案 0 :(得分:2)
这很简单。这是一个例子:
var testObject = [
{"id": "1", "name": "Apple" , "isVisible": false},
{"id": "2", "name": "Orange", "isVisible": false}
]
$(testObject).each(function() {
if(this.id == 2){
alert("current " + this.id + " = " + this.isVisible);
this.isVisible = true;
alert("changed " + this.id + " = " + this.isVisible);
}
});
答案 1 :(得分:0)
首先不要手工创建字符串。使用内置功能会更加健壮,所以这样做:
var addressesAsArray = [],
addressAsObject = {}
address;
//assuming some loop or other
address = {
"AddressID": adressid,
"EmailID":$('#txtemailData').val(),
"Hno":$('#txthno').val(),
"StreetName": $('#txtstreetname').val(),
"City": $('#txtcity').val(),
"StateID": $('#ddlState').val(),
"CountryID": $('#ddlcountry').val(),
"Zip": $('#txtzip').val(),
"PhoneNumber": $('#txtphonenumber').val(),
"Fax": $('#txtfax').val(),
"AddressName": $('#txtaddresstype').val()
};
addressesAsArray.push(address);
addressAsObject[address.AddressID] = address;
如果您需要查找具有给定ID的地址,那么该方法将取决于您是在查找addressAsArray还是在addressesAsObject中查找。后者是直截了当的
address = addressesAsObject[addressIDBeingSought];
在数组中你可以简单地循环
for(i = 0, len = addressesAsArray.length;i<len; i += 1){
if(addressesAsArray[i].AddressID === addressIDBeingSought) {
address = addressesAsArray[i];
break;
}
}
完成更新后,您可以通过
将其作为JSONjson = JSON.stringify(adresses);
答案 2 :(得分:-1)
使用linq.js javascript库或jquery插件:http://linqjs.codeplex.com/
<!DOCTYPE>
<html>
<head>
<script type="text/javascript" src="linq.js"></script>
</head>
<body>
<script>
var array = [{
AddressID:2,
EmailID:'akanilkumar443@gmail.com',
Hno:'Hyderabad'
},
{
AddressID:3,
EmailID:'akanilkumar443@gmail.com',
Hno:'aSAs'
}];
Enumerable.From(array).Where("$.AddressID == 3").ToArray()[0].Hno= 'ololo';
// or this:
// Enumerable.From(array).Where(function(x){return x.AddressID == 3}).ToArray()[0].Hno= 'ololo';
alert(array[1].Hno)
</script>
</body>
</html>