При прохождении начинайте с 0, получая ошибку 400 Bad Request (SyntaxError: Неожиданный номер в JSON в позиции 17) - PullRequest
0 голосов
/ 05 июля 2019

Я использую документацию по swagger для API узла js. Моя модель тела:

 TransferTokenRequest:
    required:
      - amount
      - currency
      - to
    properties:
      amount:
        description: "Number of amount to be transfer"
        type: number
        minimum: .00000001
        maximum: 100000000

Когда я передаю начало с 0, число в параметре тела в API узла js, тогда я получаю ошибку ниже.

400 Плохой запрос Неожиданный номер в JSON в позиции 17

Я передаю запрос ниже в PostMan

{
    "amount": 01
}

Когда яотправляю запрос в API, затем получаю сообщение об ошибке ниже.

<code><!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Error</title>
    </head>
    <body>
        <pre>SyntaxError: Unexpected number in JSON at position 17
            <br> &nbsp; &nbsp;at JSON.parse (&lt;anonymous&gt;)
            <br> &nbsp; &nbsp;at parse (/home/laxman/CODE/AKEO/LedgefarmNetworkAPi/node_modules/swagger-tools/node_modules/body-parser/lib/types/json.js:84:17)
            <br> &nbsp; &nbsp;at /home/laxman/CODE/AKEO/LedgefarmNetworkAPi/node_modules/swagger-tools/node_modules/body-parser/lib/read.js:102:18
            <br> &nbsp; &nbsp;at done (/home/laxman/CODE/AKEO/LedgefarmNetworkAPi/node_modules/swagger-tools/node_modules/raw-body/index.js:248:14)
            <br> &nbsp; &nbsp;at IncomingMessage.onEnd (/home/laxman/CODE/AKEO/LedgefarmNetworkAPi/node_modules/swagger-tools/node_modules/raw-body/index.js:294:7)
            <br> &nbsp; &nbsp;at Object.onceWrapper (events.js:313:30)
            <br> &nbsp; &nbsp;at emitNone (events.js:111:20)
            <br> &nbsp; &nbsp;at IncomingMessage.emit (events.js:208:7)
            <br> &nbsp; &nbsp;at endReadableNT (_stream_readable.js:1064:12)
            <br> &nbsp; &nbsp;at _combinedTickCallback (internal/process/next_tick.js:139:11)
            <br> &nbsp; &nbsp;at process._tickDomainCallback (internal/process/next_tick.js:219:9)
        

1 Ответ

1 голос
/ 05 июля 2019

Число не может начинаться с не значащего 0. Вы можете проверить его на JSON Documentation Link .Таким образом, вы должны исправить это вручную в значении перед передачей.но в случае, если вы не можете обновить значение вручную, тогда с помощью REGEX вы можете обновить значение JSON.

Это должно быть недопустимо для передачи JSON, например

{
  "amount": 01
}

Так что перед передачей JSON, вы можете применить код как:

var obj = JSON.parse(str.replace(/ 0+(?![\. }])/g, ' '));

это будет выводить как

{amount: 1}
...