Reputation: 326
i want to find a value in JSON stringify array
[{"id":"432","temperature":"1","humidity":"1","createat":"0000-00-00 00:00:00"},{"id":"433","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:49:57"},{"id":"434","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:52:02"},{"id":"435","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:55:26"},{"id":"436","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:58:50"},{"id":"437","temperature":"22.00","humidity":"48","createat":"2015-10-11 20:02:14"},{"id":"438","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:23:15"},{"id":"439","temperature":"22.50","humidity":"50","createat":"2015-10-11 21:24:37"},{"id":"440","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:17"},{"id":"441","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:41"}]
my idea to get this value is to know if what i am adding is not already added
Upvotes: 1
Views: 5125
Reputation: 3160
// stringified JSON
stringifiedJson = '[{"id":"432","temperature":"1","humidity":"1","createat":"0000-00-00 00:00:00"},{"id":"433","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:49:57"},{"id":"434","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:52:02"},{"id":"435","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:55:26"},{"id":"436","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:58:50"},{"id":"437","temperature":"22.00","humidity":"48","createat":"2015-10-11 20:02:14"},{"id":"438","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:23:15"},{"id":"439","temperature":"22.50","humidity":"50","createat":"2015-10-11 21:24:37"},{"id":"440","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:17"},{"id":"441","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:41"}]';
// parse the stringified JSON into a JavaScript object
parsedJson = JSON.parse(stringifiedJson);
// the object in the array you want to check
number = 0
// check if the property exists
if(typeof parsedJson[number].humidity !== 'undefined') {
// set the property
parsedJson.humidity = 1;
}
// stringify your object again
stringifiedJson = JSON.stringify(parsedJson);
EDIT: here is a propertyExists
function:
var propertyExists = function(stringifiedJson, id, property) {
// parse the stringified JSON into a JavaScript object
parsedJson = JSON.parse(stringifiedJson);
// check if the property exists for a given ID
for(var i = 0; i < parsedJson.length; i += 1) {
if(parseInt(parsedJson[i].id) === parseInt(id)) {
return (typeof parsedJson[i][property] !== 'undefined')
}
}
return false;
}
// stringified json
var stringifiedJson = '[{"id":"432","temperature":"1","humidity":"1","createat":"0000-00-00 00:00:00"},{"id":"433","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:49:57"},{"id":"434","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:52:02"},{"id":"435","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:55:26"},{"id":"436","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:58:50"},{"id":"437","temperature":"22.00","humidity":"48","createat":"2015-10-11 20:02:14"},{"id":"438","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:23:15"},{"id":"439","temperature":"22.50","humidity":"50","createat":"2015-10-11 21:24:37"},{"id":"440","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:17"},{"id":"441","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:41"}]';
console.log(propertyExists(stringifiedJson, 432, 'humidity'));
Upvotes: 2
Reputation: 147413
i want to find a value in JSON stringify array
You don't say what value you are trying to find. What you've posted is an Array literal, not JSON. If you want to iterate over the array to determine if it contains an object with a certain property that has a particular value, you can use Array.prototype.some:
function hasPropValue(array, prop, value) {
return array.some(function(obj) {
return obj.hasOwnProperty(prop) && obj[prop] === value;
}
}
some will iterate only over members that exist, and will stop as soon as the callback returns true, otherwise it returns false. If you really do have a string value that is valid JSON, you can do:
hasPropValue(JSON.parse(jsonText), 'id', '432');
var jsonText = '[{"id":"432","temperature":"1","humidity":"1","createat":"0000-00-00 00:00:00"},{"id":"433","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:49:57"},{"id":"434","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:52:02"},{"id":"435","temperature":"22.40","humidity":"48","createat":"2015-10-11 19:55:26"},{"id":"436","temperature":"22.00","humidity":"48","createat":"2015-10-11 19:58:50"},{"id":"437","temperature":"22.00","humidity":"48","createat":"2015-10-11 20:02:14"},{"id":"438","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:23:15"},{"id":"439","temperature":"22.50","humidity":"50","createat":"2015-10-11 21:24:37"},{"id":"440","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:17"},{"id":"441","temperature":"22.50","humidity":"51","createat":"2015-10-11 21:26:41"}]'
function hasPropValue(array, prop, value) {
return array.some(function(obj) {
return obj.hasOwnProperty(prop) && obj[prop] === value;
});
}
document.write(hasPropValue(JSON.parse(jsonText), 'id', '432'));
Upvotes: 0
Reputation: 3763
....
var jsonArray = [{"id":"432","temperature":"1","humidity":"1",.....
var isPresent = false;
$.each(jsonArray, function(i,v){
if(jsonArray[i].id == newObject.id){
isPresent = true;
}
});
if(!isPresent){
jsonArray.push(newObject);
}
....
Upvotes: 1