Jak sprawiasz, że JS myśli, że ciąg to JSON?
Mam funkcję, która działa tylko wtedy, gdy obiekt JSON jest do niego przekazywany. Jeśli przekażę do niego ciąg o tym samym formacie co JSON, to nie zadziała. Chcę więc, aby ta funkcja myślała, że przekazany do niej ciąg to JSON. Ciąg jest rzeczywiście w formacie JSON.
Wypróbowałem również następujące. Wprowadziłem ciąg przez Ajax, z parametrem „uchwyt jako” jako „JSON”, a następnie, gdy przekazałem wynik do funkcji, działa.
Więc wydedukowałem, że problem nie dotyczy sznurka. Jak przekonwertować ten ciąg na JSON? Jeśli otrzymam ten sam ciąg za pośrednictwem żądania Ajax, a następnie przekazanie go do funkcji działa, podczas gdy bezpośrednie przekazanie go nie działa.
Ciąg jest następujący:
{
"data": [
{
"id": "id1",
"fields": [
{
"id": "name1",
"label": "joker",
"unit": "year"
},
{"id": "name2", "label": "Quantity"},
],
"rows": [ data here....
and closing braces..
javascript
ajax
json
Zer0
źródło
źródło
Odpowiedzi:
Gdzie
string
jest twój ciąg json.źródło
Możesz użyć
JSON.parse()
do tego.Zobacz dokumentację w MDN
Przykład:
źródło
Miałem ten sam problem z podobnym sznurkiem, jak twój
Problem polega na strukturze struny. Parser json nie rozpoznał, że w tym przypadku musi utworzyć 2 obiekty. Więc to, co zrobiłem, jest trochę głupie, po prostu przebudowałem mój ciąg i dodałem
[]
z tym, że parser rozpoznałMam nadzieję, że to pomoże,
Jeśli ktoś ma bardziej eleganckie podejście, podziel się nim.
źródło
myString
nieprawidłowo. To nie jest ciąg i jest niepoprawnie sformatowany jako JSON. Twoja druga linia stałaby się wtedy zbędna. Oto, co powinno być:var myString = '[{"id":1,"field1":"someField"},{"id":2,"field1":"someOtherField"}]'
wiem, że to dość stary post, ale pomyślałem, że dodam trochę jasności, jeśli ktoś go znajdzie.$.parseJSON
gdzieJSON.parse
nie działa i wyrzucając błądJSON.parse is not a function
połączyć:-
http://api.jquery.com/jQuery.parseJSON/
źródło
przekonwertuj ciąg na HashMap za pomocą Object Mapper ...
new ObjectMapper().readValue(string, Map.class);
Mapa wewnętrzna będzie zachowywać się jak obiekt JSON
źródło
Przekaż zmienną łańcuchową do analizy Json:
źródło
Data
jest już obiektem, więc nie byłoby potrzeby jego analizowania. Potrzebowałbyś kilku cudzysłowów otaczających wszystkie dane, aby utworzyć ciąg.Po prostu użyj
eval
funkcji.źródło
JSON.parse()
funkcja wystarczy.lub
Używając Jquery,
źródło
Rozważmy, że masz taki ciąg
przykład: „imię: Lucy, wiek: 21, płeć: kobieta”
`
źródło