2016-04-14 24 views
0

İstemci UI'm için bir test yazmak üzereyim.JSON, tarayıcıda ayrıştırıldı, ancak node.js tarafından değil

garip şey, benim JSON dizesi: tarayıcı tarafından JSON.parse tarafından ayrıştırılması için kullanılan

{"match":"\s?5\.7\s?\<=\>\s?7","success":"null-coalesce-operator"} 

(Krom) ve şöyle görünür:

{ 
    match: "\s?5\.7\s?\<=\>\s?7", 
    success:"null-coalesce-operator" 
} 

herşey yolunda,

ama bu bölümü node.js env içinde mocha tarafından çalıştırdığımda şunu elde ederim:

{"match":"\s?5\.7\s?\<=\>\s?7","success":"null-coalesce-operator"} 
     ^

SyntaxError: Unexpected token s 
    at Object.parse (native) 
    ... 

kimse böyle bir şey yaşadı. herhangi bir tipp için thx.

<!doctype html><html><body><div data-meta="{&quot;match&quot;:&quot;\\s?5\\.7\\s?\\<=\\>\\s?7&quot;,&quot;success&quot;:&quot;null-coalesce-operator&quot;}"></div></body></html> 

sadece tek satır:

düğüm versiyonudur v5.7.1

mocha versiyonu i sınamak 2.4.5

GÜNCELLEME html dizesi olduğunu \ n yeni satırlar ve aynı olmadan dize.

cevap

1

Bunun nedeni, özel karakter karakterlerini (ör. \ N => satır besleme, \ r => satır başı, vb.) Ayrıştırmasıdır. ayrıştırılırken

json_string = json_string.replace(new RegExp('\\\\', 'g'), '\\\\') //we have to use regex, because when using replace with string, it only replaces the first occurence... 

aksi halde, bu anlatacağım à \ s: 'Öyle bir özel karakter Eğer regex içinde bir antislash istiyorum, çünkü Yani, düğümünde ayrıştırma önce, her \\\ tarafından değiştirmeniz gerekiyor , s ile tanımlanmıştır. Ama ben hiç jeton yok. Bu yüzden bir hata atıyorum. "

+0

özür dileriz, ancak RegEx'i de değiştirir, bu nedenle kolaylık nedeni için ifade aynı olmalıdır. Neden sadece bu durumda tarayıcının JSON.parse – zavalit

+0

için bir sorun olmadığını soruyorum Bu regexpr değiştirmez! Test yaptınız mı? Çünkü dize içinde iki ** eğik çizgi yazıyorsunuz, dize bir ** içeriyor! Yani regex '' s 's okuyor ... Ama yapmıyorum neden tarayıcı üzerinde çalışır biliyorum, ben krom üzerinde test ettik, aynı hata – Vincent

+0

jo atar, ben test: {match: '\\ s? 5 \\ 7 \\ s? \\ <=\\> \\ s? 7 ', ...} – zavalit

İlgili konular