2011-03-07 29 views
5

我想在json中使用jquery/javascript添加刪除更新元素,並且當文件提交完成到服務器時想要考慮最新的json對象。如何在javascripts/jquery中操作json對象?

你可以建議和方法我卡住了。

+2

'變種JSON = $ .parseJSON( '...'); json.oldVar ='newvalue';'? – 2011-03-07 05:41:14

回答

4

如前所述,您可以使用jQuery的json函數來編輯對象。讓我展示你怎麼可能做到這一點,用少許代碼:

讓我們這個JSON對象:

{ 
"people":[ 
    {"name":"Bob","score":9}, 
    {"name":"Joe","score":6}, 
    {"name":"Tom","score":7} 
    ], 
"projects":[ 
    {"id":2347,"entries":5}, 
    {"id":8563,"entries":3} 
    ], 
"lastUser":"Bob" 
} 

現在,讓我們說你的服務器存儲,作爲一個平坦的JSON文件的某個地方......什麼我們要做的就是使用jQuery的ajax方法將其加載到客戶端,然後使用回調進行編輯。操作物體後,我們將(用於演示目的),立即將其發送回服務器端腳本,這大概會覆蓋當前的平面文件:

$.getJSON(/*path to JSON file here*/,function(response){ 
    response.lastUser="Tom"; //This is where the sample manipulation occurs. 
    $.post(/* path to server-side script*/,response,function(){ 
     alert("Object Saved"); 
    }); 
}); 

希望幫助理解所涉及的格局!

+0

我想要一種操縱方式..!我知道如何將它發送到服務器.. :) – Amit 2011-03-07 06:17:18

+1

該操作在'response.lastUser =「Tom」行顯示; '。直接修改JSON對象,然後將其發回:) – johnhunter 2011-03-07 08:36:01

+0

我在該行上寫了一條評論,以澄清操作發生的位置......對於任何混淆抱歉。 – Trafalmadorian 2011-03-08 05:04:35

0

解析後,可以直接在JavaScript中處理JSON數據。 (請參閱Brad對你的問題的評論)。要將更新的數據發送回服務器,您可以使用$ .post。現在,這不是解決你的問題嗎?如果不是,請詳細解釋您的問題。

9

我使用JSON.parse和JSON.stringify來操作。

json_flat = '{"page":"1","total":"2","ids":[{"id":"3085"},{"id":"3086"}]}'; // your flat json  
json_object = JSON.parse(json_flat); //convert to an object 

//Manipulation 
json_object.page = "6"; //change values 
delete json_object.total; //delete a value 

json_flat = JSON.stringify(json_object); //convert back to flat 

編輯:修改了一些錯別字:JSFiddle

+0

這個例子當前是錯誤的,因爲'json_flat'已經是一個普通的對象,而不是一個字符串。 – 2017-05-31 16:48:22

+0

對不起,修正了我的錯別字 – Soth 2017-06-02 14:01:41