Pentaho javacriot代码变量对象

Pentaho javacriot代码变量对象,pentaho,pentaho-data-integration,Pentaho,Pentaho Data Integration,我试图用rest客户机方法的响应来导航我的对象,这个响应理论上是一个JSON对象 {"457": {"2": {"value": "53.8", "timestamp": 1534257707}, "3": {"value": "21.9", "timestamp": 1534257707}, "4": {"value": "255.0", "timestamp": 1534257707}, "21": {"value": "996.0", "timestamp": 1534257707}, "

我试图用rest客户机方法的响应来导航我的对象,这个响应理论上是一个JSON对象

{"457": {"2": {"value": "53.8", "timestamp": 1534257707}, "3": {"value": "21.9", "timestamp": 1534257707}, "4": {"value": "255.0", "timestamp": 1534257707}, "21": {"value": "996.0", "timestamp": 1534257707}, "1": {"value": "4.15", " timestamp ": 1534257707}," 17 ": {" value ":" 156.99062499999997 "," timestamp ": 1534257707}," 5 ": {" value ":" 37.667 "," timestamp ": 1534257707}," 6 ": {"value": "28.900000000000002", "timestamp": 1534257707}, "8": {"value": "4.28", "timestamp": 1534257707}, "15": {"value": "0.83", " timestamp ": 1534257707}," 10 ": {" value ":" 19.31 "," timestamp ": 1534257707}," 22 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 23 ": {"value": "0.0", "timestamp": 1534257707}, "24": {"value": "0.0", "timestamp": 1534257707}, "26": {"value": "0.0", " timestamp ": 1534257707}," 653 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 657 ": {" value ":" - 98.0 "," timestamp ": 1518420299}," 43 " : {"value": "11.824136243472958", "timestamp": 1534257707}, "42": {"value": "326.54049999999995", "timestamp": 1534257707}}}
我用JavaScript创建了一个组件来处理这些数据:

这是我用java脚本编写的代码,它工作正常,因为我曾尝试在另一个环境中对其进行编程

var key = Object.keys (data) [0];
var finalobj = {};
    for (var and in data [key]) {
    finalobj [e] = {
    type: "float"
    , value: parseFloat (data [key] [e] .value)
    , metadata: {
    timestamp: {
    value: parseInt (data [key] [e] .timestamp)
    , type: "Integer"
    }
    }
    };
    }
问题是,如果我给字段赋值,它会按如下方式确定答案的日期:

var data = result_ult_dat;
var data = {"457": {"2": {"value": "53.8", "timestamp": 1534257707}, "3": {"value": "21.9", "timestamp": 1534257707}, " 4 ": {" value ":" 255.0 "," timestamp ": 1534257707}," 21 ": {" value ":" 996.0 "," timestamp ": 1534257707}," 1 ": {" value ":" 4.15 "," timestamp ": 1534257707}," 17 ": {" value ":" 156.99062499999997 "," timestamp ": 1534257707}," 5 ": {" value ":" 37.667 "," timestamp ": 1534257707}," 6 ": {" value ":" 28.900000000000002 "," timestamp ": 1534257707}," 8 ": {" value ":" 4.28 "," timestamp ": 1534257707}," 15 ": {" value ":" 0.83 "," timestamp ": 1534257707}," 10 ": {" value ":" 19.31 "," timestamp ": 1534257707}," 22 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 23 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 24 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 26 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 653 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 657 ": {" value ":" - 98.0 "," timestamp ": 1518420299}, "43": {"value": "11.824136243472958", "timestamp": 1534257707}, "42": {"value": "326.54049999999995", "timestamp": 1534257707}}};
当我抛出代码时,它不工作,但如果我手动将代码分配给它,如果它工作正常,问题出在哪里?我不理解它,result\u\u dat的值与我复制的值相同,它必须进行转换或类似的操作:

var data = result_ult_dat;
var data = {"457": {"2": {"value": "53.8", "timestamp": 1534257707}, "3": {"value": "21.9", "timestamp": 1534257707}, " 4 ": {" value ":" 255.0 "," timestamp ": 1534257707}," 21 ": {" value ":" 996.0 "," timestamp ": 1534257707}," 1 ": {" value ":" 4.15 "," timestamp ": 1534257707}," 17 ": {" value ":" 156.99062499999997 "," timestamp ": 1534257707}," 5 ": {" value ":" 37.667 "," timestamp ": 1534257707}," 6 ": {" value ":" 28.900000000000002 "," timestamp ": 1534257707}," 8 ": {" value ":" 4.28 "," timestamp ": 1534257707}," 15 ": {" value ":" 0.83 "," timestamp ": 1534257707}," 10 ": {" value ":" 19.31 "," timestamp ": 1534257707}," 22 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 23 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 24 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 26 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 653 ": {" value ":" 0.0 "," timestamp ": 1534257707}," 657 ": {" value ":" - 98.0 "," timestamp ": 1518420299}, "43": {"value": "11.824136243472958", "timestamp": 1534257707}, "42": {"value": "326.54049999999995", "timestamp": 1534257707}}};
我怎样才能解决这个问题

我的完整代码如下:

多谢各位

Edit01

这是我的完整设计,您可以看到数据的值与http客户端的响应相同

如果我通过变量传递它,请回答

有趣的是,JSONOutPut是{},而它必须是转换的首选

当我试图将答案放入数据变量中,如果它有效,请看


我不明白为什么我通过将它添加到我的javascript代码中并使用对象来解决这个问题

var object = JSON.parse (result_ult_dat);

问题在哪里?有些字段有空格
(“4”:{“value”:“255.0”…)
,或者您无法在字段中获取
数据的值
?问题是JsonOutput我返回了{},如果改为分配数据={xxxx…},我将不得不返回转换如果我返回了信息,那么我会手动提交,但是通过变量这样做并不起作用data=result\u ult\u dat。奇怪的是,如果我调用data=result\u ult\u dat并显示数据,如果它有http的信息。这给人的印象是,直到完整的代码完成,变量才被加载。因为如果我将信息放在是否添加了变量JsonOutput(类型为String)在步骤窗口底部的小表格中?我编辑了帖子,并在下表中向您展示了我的完整图版。还显示了两个答案,正如我评论的那样,答案的值和附加值为full。我非常绝望,我不知道还有什么可以尝试的,似乎值最终会恢复。