2016-07-24 8 views
2

Ich erhalte eine Fehlermeldung "Unerwartete Token in JSON an Position 26" für ein WebRTC-Angebot. Ich verwende einen Ajax-Aufruf, um das Angebot von einer db zu nehmen und es als einfachen Text zurückzugeben, um in ein JSON-Objekt zu analysieren. Wenn ich versuche, die Zeichenfolge zu analysieren, erhalte ich den Fehler "Unerwarteter Token in JSON".Unerwartete Token in JSON während JSON.parse()

Hier ist die JSON als einfacher String

{"type":"offer","sdp":"v=0 
o=- 552724588234335198 2 IN IP4 127.0.0.1 
s=- 
t=0 0 
a=msid-semantic: WMS 
m=application 52731 DTLS/SCTP 5000 
c=IN IP4 192.169.2.55 
a=candidate:2144433521 1 udp 2122257663 2002:c0a9:237::c0a9:237 52729 typ host generation 0 network-id 4 
a=candidate:1068658286 1 udp 2122189567 2001::9d38:90d7:88a:6fc:52ce:a035 52730 typ host generation 0 network-id 7 
a=candidate:398976708 1 udp 2122129151 192.169.2.55 52731 typ host generation 0 network-id 3 
a=candidate:827492737 1 tcp 1518277887 2002:c0a9:237::c0a9:237 9 typ host tcptype active generation 0 network-id 4 
a=candidate:1899074206 1 tcp 1518209791 2001::9d38:90d7:88a:6fc:52ce:a035 9 typ host tcptype active generation 0 network-id 7 
a=candidate:1497635380 1 tcp 1518149375 192.169.2.55 9 typ host tcptype active generation 0 network-id 3 
a=ice-ufrag:EHtolesxvVPp2FqI 
a=ice-pwd:CrcvrgKTp6lUbUA81nlGeTFr 
a=fingerprint:sha-256 01:39:AF:9A:67:87:F9:52:E9:20:3C:0D:4A:8B:A0:22:E2:D1:01:65:51:32:E1:5B:8B:9E:BC:CA:6E:DF:E2:46 
a=setup:actpass 
a=mid:data 
a=sctpmap:5000 webrtc-datachannel 1024 
"} 

und den Code

$.ajax({ 
    url: "./php/actions.php", 
    type: "post", 
    dataType: "text", 
    data: {type:'retrieve', roomid:roomid}, 
    success: function(data){ 
     //data is plain text from string of offer retrieved from db 
     $('.termp').text(data); //used to check raw text data for now 
     var offerSDP = JSON.parse(data); //returning error when trying to convert to json 
     remoteConn.setRemoteDescription(new RTCSessionDescription(offerSDP)); //needs an object 
    } 
}); 

ich Erfolg gehabt haben, bevor Sie eine Kopie und Paste-Verfahren in einer anderen Anwendung, wo ich rohe Textdaten erhalten und fügen Sie es in einen Textbereich und dann JSON.parse (text-area.val()) und erfolgreich setupDescription, aber die Methoden sind scheinbar gleich, aber ergeben unterschiedliche Ergebnisse.

+0

können Sie die Frage aktualisieren, um die Kommentare innerhalb der rohen json Zeichenfolge zu entfernen, so dass wir genau sehen können, was die Zeichenfolge? –

+0

Könnten Sie bitte genaue 'json' Antwort posten? –

+0

Volltext-String-Antwort geschrieben, ich habe Ajax verwendet, um eine Zeichenfolge bei Erfolg zurückgeben, so dass ich es anschließend analysieren kann. Dies ist, nachdem ich versucht habe, ein Json-Objekt in Daten zurückzugeben, aber die RTCSessionDescription (Daten) würde nicht funktionieren, weil es sagte, dass das übergebene Argument kein Objekt war. –

Antwort

2

In JSON ist ein einfaches neues Zeichen verboten. Sie müssen es durch \n ersetzen.

Bitte werfen Sie einen Blick auf dieses Thema: Multiline strings in JSON

+0

Ich sehe, jetzt, da ich die beiden Anwendungen vergleiche, gibt es "\ n", "\ r" Zeichen. wie würde ich diese ausgeben oder beim Empfang der Zeichenfolge oder wie würde ich das Objekt an die Datenbank senden, die die Sonderzeichen bewahrt? –

+0

Ersetzen Sie es einfach, wenn Sie es erhalten, wie folgt: 'JSON.parse (data.replace (/ [\ r]? [\ N]/g, '\\ n'))' –

+0

Ja, diese Lösung hat funktioniert. Es sieht so aus, als ob der Newline-Charakter in hübsche Dinge eingefügt wurde, aber wenn man nach json konvertiert, müsste man explizit das \ n haben. Also ich nehme an, dass es einen Unterschied zwischen neuer Zeile und \ n gibt? –