JSON int и лучшие практики конвертации с плавающей точкой в ​​Ballerina - PullRequest
0 голосов
/ 03 июня 2018

Я реализую простой сервис с вводом, где

{ "a": <float>, "b": <float>, "operation": <string>}

Теперь я хочу, чтобы оба

"a": 10 

и

"a": 10.0 

работали.Если я проверяю только случай с плавающей точкой, я получаю

error: error, message: 'int' cannot be cast to 'float'

, получаю запрос и выполняю следующие действия:

json operationReq = check req.getJsonPayload();

float a = 0;
var intInput = <int>operationReq.a;
match intInput {
    int value => a = value;
    error err => a = check <float>operationReq.a;
}

Над кодом работает.Но это правильно, или это взлом?

1 Ответ

0 голосов
/ 04 июня 2018

Я бы предложил следующее решение вашего вопроса.Вы делаете переключение типа на значение j.a.

import ballerina/io;

function main(string... args) {
    json j = { "a": 10.0, "b": 4, "operation": "ddd"};
    float a = 0;
    var intInput = j.a;
    match intInput {
            int i => a = i;
            float f => a = f; 
            json other => {} //error
    }
}
...