Jak wróciłbym następujący ciąg jako obiekt

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200} 

aktualizacja

Mam plik PHP, który wyjścił JSON. Użyłem AJAX, aby uzyskać dostęp do JSON w moim JS.

Użyłem JSON.PARSE (JSON_STRING), więc teraz mam swój obiekt. To co jest zwracane:

[{"name":"img","attributes":"{src:'img\/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200}","comments":"image element with attributes"},{"name":"triangle","attributes":"{bgColor : '#FF0000', coord : {x:500, y:300}, width:50, height, 50}","comments":"triangle"}] 

Teraz mogę użyć pętli, aby przejść przez bitów.

for(key in json_object) {
 var name_type = json_object[key].name;
 var attrib = json_object[key].attributes;
}

TU umieszcza zwroty

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200}. 

To ten ciąg, który muszę przekształcić w obiekt.

Dzięki Dave.

-1
magicspon 10 grudzień 2013, 02:09

4 odpowiedzi

Najlepsza odpowiedź

Tyle wskazywało, powinieneś naprawdę przechowywać te dane jako ważne JSON w pierwszej kolejności, a gdy inny post wskazał obiekt, nie jest nawet ważnym obiektem JavaScript. Jak wybrać Serialise Twoje dane są ostatecznie do wyboru, ale musisz przynajmniej trzymać się niektórych zasad podczas kodowania go, w przeciwnym razie, jak możesz spodziewać się przeanalizować?

... width:200, height, 200}
                     ^------- Invalid JS Object Notation

To powiedziawszy, jeśli z jakiegokolwiek powodu nie można łatwo zmienić konfiguracji (powinieneś ostatecznie do refunktora), możesz mieć JavaScript ocenić wyrażenie tak długo, jak ufasz źródłem .

var str, obj;
str = "{src:'img/testimage.jpg', coord:{x:17, y:39}, width:200, height:200}";
obj = new Function('return '+str)();

powiązane czytanie:

Dlaczego używanie funkcji eval JavaScript to zły pomysł?

1
Community 23 maj 2017, 11:49

Musisz użyć JSON.parse(string), ale najpierw musisz dokonać swego prawidłowego jsona. co oznacza, że musisz wykonać następujące czynności:

Zamiast {src:'img/testimage.jpg'... powinno być {"src":"img/testimage.jpg"... (Uwaga cytaty na src). Każdy przycisk powinien być owinięty w cytaty "" lub '', a każda wartość powinna być dokładnie tak, jak byłaby reprezentowana jako kod, na przykład: A String zostanie owinięty w cytaty, int nie;

Więc twój ostatni ciąg byłby:

Edytuj : Jak mówi War10CK, ciąg powinien zostać uniknięty.

"{\"src\":\"img/testimage.jpg\", \"coord\":{\"x\":17, \"y\":39}, \"width\":200, \"height\":200}"
1
Christopher Francisco 9 grudzień 2013, 22:31

Twój JSON nie jest prawidłowo sformatowany. Powinien być:

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height: 200} 

(Uwaga okrężnica po wysokości, a nie przecinka)

0
jraede 9 grudzień 2013, 22:22

Ponieważ inne odpowiedzi wskazują, musisz mieć odpowiednio sformatowany prawidłowo uniknąć sznurka JSON, aby użyć JSON.parse(). Spróbuj tego:

"{\"src\":\"img/testimage.jpg\", \"coord\":{\"x\":17, \"y\":39}, \"width\":200, \"height\":200}"

Zgodnie z JSON Spec, wszystkie ciągi muszą być zamknięte w podwójnych cytatach ". Wszystkie łańcuchy w strumieniu JSON powinny odpowiednio uniknąć podwójnych cytatów \".

0
War10ck 9 grudzień 2013, 22:26