Skip to content

Commit aa39d38

Browse files
authored
Merge pull request #134 from benvan/backslash-bug
Bug fix: quotes incorrectly parsed by wrapNumbers resulting in broken json
2 parents 3b61cfe + 4c93a70 commit aa39d38

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

extension/src/json-viewer/content-extractor.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,15 @@ function wrapNumbers(text) {
7171
var buffer = "";
7272
var numberBuffer = "";
7373
var isInString = false;
74+
var charIsEscaped = false;
7475
var isInNumber = false;
7576
var previous = "";
7677
var beforePrevious = "";
7778

7879
for (var i = 0, len = text.length; i < len; i++) {
7980
var char = text[i];
8081

81-
if (char == '"' && (previous != '\\' || (previous == '\\' && beforePrevious == '\\'))) {
82+
if (char == '"' && !charIsEscaped) {
8283
isInString = !isInString;
8384
}
8485

@@ -99,6 +100,9 @@ function wrapNumbers(text) {
99100
numberBuffer = "";
100101
}
101102

103+
// this applies to the _next_ character - the one used in the next iteration
104+
charIsEscaped = (char == '\\') ? !charIsEscaped : false
105+
102106
if (isInNumber) {
103107
numberBuffer += char;
104108

tests/test.backslash.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"triple-backslash": "\\\"99\\\"",
23
"path": "C:\\foobar\\",
34
"number": 123,
45
"foo": "bar"

0 commit comments

Comments
 (0)