1

I have used the following text as input to JSON.parse()

let inputTxt = `{"result":[{"aliasName":null,"name":"SRDD","sort":0,"id":319488404634063872,"parentId":319472086895578112,"level":2},{"aliasName":null,"name":"Noodles","sort":11,"id":350368638463726592,"parentId":350368638434366464,"level":2},{"aliasName":null,"name":"Sushi","sort":21,"id":350368638463726593,"parentId":350368638434366464,"level":2},{"aliasName":null,"name":"Drink","sort":31,"id":350368638463726594,"parentId":350368638434366464,"level":2},{"aliasName":null,"name":"Set","sort":41,"id":350368739890458624,"parentId":350368638434366464,"level":2},{"aliasName":"默认","name":"默认","sort":1,"id":319472086895578112,"parentId":null,"level":1},{"aliasName":null,"name":"Tendongo","sort":0,"id":350368638434366464,"parentId":null,"level":1}],"code":0,"message":"success[OK]","messageUuid":"437fcce5209d4d17b558403d4a8b859c","apiMessage":null}`

console.log(JSON.parse(inputTxt))

Here you can see the id for the category is different in the output.

1 Answers1

-1

The issue is with a big number. When you parse JSON. It is trying to hold a large number.

Max value can be seen as :

Number.MAX_SAFE_INTEGER // (253 - 1) => 9007199254740991

More: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number

const str = "319488404634063872"
console.log(Number(str)) // 319488404634063900

// OR
const num  = 319488404634063872

console.log(num) // 319488404634063900

You can use replace function as workaround, before parsing convert it to string.

let inputTxt = `{"result":[{"aliasName":null,"name":"SRDD","sort":0,"id":319488404634063872,"parentId":319472086895578112,"level":2},{"aliasName":null,"name":"Noodles","sort":11,"id":350368638463726592,"parentId":350368638434366464,"level":2},{"aliasName":null,"name":"Sushi","sort":21,"id":350368638463726593,"parentId":350368638434366464,"level":2},{"aliasName":null,"name":"Drink","sort":31,"id":350368638463726594,"parentId":350368638434366464,"level":2},{"aliasName":null,"name":"Set","sort":41,"id":350368739890458624,"parentId":350368638434366464,"level":2},{"aliasName":"默认","name":"默认","sort":1,"id":319472086895578112,"parentId":null,"level":1},{"aliasName":null,"name":"Tendongo","sort":0,"id":350368638434366464,"parentId":null,"level":1}],"code":0,"message":"success[OK]","messageUuid":"437fcce5209d4d17b558403d4a8b859c","apiMessage":null}`;

const format = (json) => json.replace(/\"id\":(\d+)/g, `"id":"$1"`)

console.log(JSON.parse(format(inputTxt)))
xdeepakv
  • 7,835
  • 2
  • 22
  • 32