Jak usunąć & bdquo; z mojego Json w javascript?

86

Próbuję wstrzyknąć json do mojej aplikacji backbone.js. Mój json ma "dla każdego cytatu.

Czy jest sposób, abym to usunął?
Poniżej przedstawiam próbkę:

[{"Id":1,"Name":"Name}]
Frankie
źródło
3
Dlaczego nie powstrzymać tego przed tym w pierwszej kolejności? Obecnie w ogóle nie masz JSON, ale coś, co trochę do niego przypomina.
Wyścigi lekkości na orbicie
Zakodował cytaty. To zupełnie inny problem niezwiązany z Json, ale związany z ASP.NET MVC. Możemy chcieć usunąć ten post.
Frankie
użyj tego zamiast zamiany stackoverflow.com/questions/11147468/ ...
harun karaca

Odpowiedzi:

167

Prawdopodobnie masz to w zmiennej i używasz JSON.parse(data);. W takim przypadku użyj:

JSON.parse(data.replace(/"/g,'"'));

Możesz jednak chcieć naprawić skrypt do pisania JSON, ponieważ "nie jest on prawidłowy w obiekcie JSON.

Niet the Dark Absol
źródło
1
Kiedy próbowałem tego, zauważyłem, że mój kod js zmienia się na taki:result.replace(/"/g,'"')
efirat
@kirlisakal, czy udało Ci się obejść ten problem?
turbo2oh
To działa, ale co, jeśli dane mają jakąś wartość tak: 10"6 inch display?
Shyam Kansagra
Wtedy możesz chcieć naprawić swój skrypt do pisania JSON.
Niet the Dark Absol
Widzę to w API, które nie jest moje. Dlaczego miałby generować "zamiast "? (Myślę, że to aplikacja do reagowania)
stevec
18

Przyjęta odpowiedź jest prawidłowa, jednak miałem z tym problem. Kiedy dodałem kod, sprawdzając debuger, zauważyłem, że zmienia się z

result.replace(/"/g,'"')

do

result.replace(/"/g,'"')

Zamiast tego używam tego:

result.replace(/(&quot\;)/g,"\"")

Dzięki tej notacji to działa.

efirat
źródło
Tak to działa! ale muszę dostosować obiekt sesji, aby to naprawić :(
muhammad tayyab
4
var data = $('<div>').html('[{&quot;Id&quot;:1,&quot;Name&quot;:&quot;Name}]')[0].textContent;

to powinno przeanalizować wszystkie potrzebne zakodowane wartości.

Juvil
źródło
To było najlepsze rozwiązanie. Miałem wiele elementów ucieczki. Ta sztuczka nie
uniknęła
0

U mnie działa:

function decodeHtml(html) {
    let areaElement = document.createElement("textarea");
    areaElement.innerHTML = html;

    return areaElement.value;
}
linnx88
źródło
0

Użyłem funkcji zamiany w Notepad ++ i zastąpiłem &quot;(bez cudzysłowów), "a wynikiem był poprawny json

Navin
źródło