我想从JSON数据数组中获取一个特定的条目并进行一些修改

首先,我通过Web服务器获取JSON数据

$.getJSON(url,function(){ //my callback function; }); 

现在我的数据如下:

 {entries:[{title:'foo',id:'UUID',finished:null},{title:'bar',id:'UUID',finished:null},{title:'baz',id:'UUID',finished:null}]} 

我必须通过它的UUID找到一个特定的JSON条目,然后我需要修改一个部分,例如,创建一个新的json数据:

 {title:'foo',id:'UUID',finished:true} 

并使用发送回服务器

 $.post(url, data); 

我完全迷失了这种情况……任何人都可以帮忙吗?

假设您已将数据放在名为result的变量中,如下所示:

 var result = {entries:[{title:'foo',id:'UUID',finished:null},{title:'bar',id:'UUID',finished:null},{title:'baz',id:'UUID',finished:null}]} 

你可以做一个for循环:

 for ( var i=0; i 

编辑 - 我已经在下面写了完整的解决方案,以进一步说明这个想法并避免误解:

 // Get data from the server $.getJSON("url", function(result) { // Loop through the data returned by the server to find the UUId of interest for ( var i=0; i 

试试这个:

 var modified = false, myUuid = 'some uuid'; for (i = 0; i < data.entries.length; i++) { if (data.entries[i].id === myUuid) { data.entries[i].finished = true; modified = true; break; } } if (modified) { $.post(url, data); } 

您需要遍历数据。 或者,您可以重构您的JSON:

 {"entries":{"UUID1":{"title":"foo", "finished": false }}, {"UUID2":{"title":"bar", "finished":false}}}