2010-12-13 9 views
15

Mam JSONstring(?), które wróciłem z $.ajax() i nadałem mu nazwę data. Niektóre wartości są puste i muszę dodać wartości do niektórych kluczy i wysłać je z powrotem do mojego skryptu PHP.Dodawanie lub zmienianie wartości klucza JSON za pomocą jquery lub javascript

Uzyskuję dostęp do istniejących wartości przez data.keyName. Jak dodać lub zmienić wartości niektórych kluczy w "danych"?

To właśnie wygląda 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

Jeśli uzyskasz dostęp do wartości za pomocą 'data.keyName', nie masz już ciągu * JSON *. Masz obiekt * JavaScript *. JSON został już sparsowany do obiektu dla ciebie. –

+0

Dzięki za wyjaśnienie tego, Ates. Byłem zdezorientowany. – JCam

Odpowiedz

29

Po dekodowaniu JSON, wynikiem jest obiekt JavaScript. Po prostu manipuluj nim jak dowolnym innym obiektem. Na przykład:

data.busNum = 12345; 
... 
+0

Dlaczego nie próbowałem tego ... Dzięki! – JCam

+1

to duplikat klucza – elvenbyte

0
data.userID = "10"; 
+0

Jeśli identyfikator użytkownika istnieje jako klucz, ta odpowiedź powoduje jego duplikowanie. – elvenbyte

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

+1 Dla wskazania "usuń". –

+1

To może się przydać również. Świetny punkt. – JCam

2

Tak jak ty to dla każdej innej zmiennej, wystarczy ustawić go

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

Wydaje się, czy klucz jest zapisany w zmiennej. data.key = value nie będzie działać.

Należy użyć data[key] = value

Przykład:

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

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

console.log(data); 

Wynik:

{ 
    "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 jest posiadające wszystkie nazwy klucza

przymierzyć jsfiddle

Powiązane problemy