All Downloads are FREE. Search and download functionalities are using the official Maven repository.

js.prompto.reader.JSONReader.js Maven / Gradle / Ivy

var prompto = require("../../../../../JavaScript-Core/src/main/prompto/index.js");
var any = prompto.type.AnyType.instance;

function jsonRead(text) {
    var node = JSON.parse(text);
    return toValue(node);
}

function toValue(node) {
    if(node===null)
        return prompto.value.NullValue.instance;
    else if(Array.isArray(node))
        return toList(node);
    var typeName = typeof(node);
    var converter = converters[typeName];
    return converter(node);
}

function toBoolean(node) {
    return prompto.value.Bool.ValueOf(node);
}

function toText(node) {
    return new prompto.value.Text(node);
}

function toDocument(node) {
    var values = {};
    for(var name in node) {
        if(node.hasOwnProperty(name))
            values[name] = toValue(node[name]);
    }
    return new prompto.value.Document(values);
}


function toList(node) {
    var values = node.map(toValue);
    return new prompto.value.ListValue(any, values);
}

function fromNumber(node) {
    if (node == Math.floor(node))
        return new prompto.value.Integer(node);
    else
        return new prompto.value.Decimal(node);
}

var converters = {
    "boolean" : toBoolean,
    "number" : fromNumber,
    "string" : toText,
    "object" : toDocument
}

exports.jsonRead = jsonRead;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy