2010-12-13 28 views
15

Tôi có JSONstring(?) mà tôi đã trả lại từ $.ajax() và đặt tên là data. Một số giá trị trống và tôi cần thêm giá trị cho một số khóa và gửi lại cho kịch bản PHP của tôi.Thêm hoặc thay đổi giá trị của khóa JSON bằng jquery hoặc javascript

Tôi truy cập các giá trị hiện có theo data.keyName. Làm cách nào để thêm hoặc thay đổi giá trị của các khóa nhất định trong "dữ liệu"?

Đây là hình thức data.

{ 
    "ID":"48", 
    "userID":"0", 
    "address":"750 North High Street", 
    "city":"Columbus", 
    "state":"OH", 
    "zip":"43215", 
    "lat":"39.977673", 
    "lng":"-83.003357", 
    "busNumber":"55", 
    "isClaimed":"N", 
    "whereFound":"", 
    "busNum":"", 
    "email":"", 
    "fname":"", 
    "lname":"", 
    "comments":"" 
} 
+1

Nếu bạn truy cập các giá trị bằng 'data.keyName', bạn không còn có * chuỗi JSON * nữa. Bạn có một đối tượng * JavaScript *. JSON đã được phân tích cú pháp thành một đối tượng cho bạn. –

+0

Cảm ơn bạn đã giải thích rằng, Ates. Tôi đã nhầm lẫn về điều đó. – JCam

Trả lời

29

Khi bạn đã giải mã JSON, kết quả là đối tượng JavaScript. Chỉ cần thao tác nó như bạn sẽ làm bất kỳ đối tượng nào khác. Ví dụ:

data.busNum = 12345; 
... 
+0

Tại sao tôi không thử điều đó ... Cảm ơn! – JCam

+1

nó sao chép khóa – elvenbyte

0
data.userID = "10"; 
+0

Nếu userID tồn tại dưới dạng khóa, câu trả lời này sẽ sao y nó. – elvenbyte

16
var temp = data.oldKey; // or data['oldKey'] 
data.newKey = temp; 
delete data.oldKey; 
+5

+1 Để gợi ý cho 'xóa'. –

+1

Điều này cũng có thể hữu ích. Điểm tuyệt vời. – JCam

2

Cũng giống như bạn sẽ cho bất kỳ biến khác, bạn chỉ cần đặt nó

alert(data.ID); 
data.ID = "bar"; //dot notation 
alert(data.ID);  
data.userID = 123456; 
data["address"] = "123 some street"; //bracket notation 
1

Có vẻ như nếu chìa khóa của bạn sẽ được lưu trong một biến. data.key = value sẽ không hoạt động.

Bạn nên sử dụng data[key] = value

Ví dụ:

data = {key1:'v1', key2:'v2'}; 

var mykey = 'key1'; 
data.mykey = 'newv1'; 
data[mykey] = 'newV2'; 

console.log(data); 

Kết quả:

{ 
    "key1": "newV2", 
    "key2": "v2", 
    "mykey": "newv1" 
} 
0
var y_axis_name=[]; 

for(var point in jsonData[0].data) 
       { 
       y_axis_name.push(point); 

       } 

y_axis_name là có tất cả các tên chính

thử trên jsfiddle

Các vấn đề liên quan