将未定义的JSON转换为新的JSON对象

时间:2016-06-19 20:56:43

标签: javascript json node.js express

未定义的JSON从URL api端点http : // someserver:someport / some_api_url?_var1=1返回到Node.js / Express.js应用程序。这个未定义的JSON输入将始终具有相同的格式,并且需要通过接收代码强制转换为新的JSON对象(如下所示)。然后可以以各种方式处理新的JSON对象,包括传递给HTML。


OP问题:
需要对以下代码进行哪些具体更改,以便:

1。){"1":"descriptive string"}形式的JSON被强制转换为新定义的名为dataElement的JSON对象,其中包含两个属性dataElement.dataKeydataElement.descriptionString

2。)发送回用户网络浏览器的html响应包括UI格式的dataElement.dataKeydataElement.descriptionString

Index is: 1  
Description is: descriptive string  


要修改的示例代码:
首先,需要修改的代码是:

app.get('/', function (req, res) {

  var url = 'http://someserver:someport/some_api_url?_var1=1'  

  http.get(url, function (resInner) {
    var body = '';

    resInner.on('data', function (chunk) {
      body += chunk;
    });

    resInner.on('end', function () {
      var fullResponse = JSON.parse(body); 

    // code to parse JSON into new JSON object, which is passed into HTML
    var indexStr = key;
    var descriptionStr = fullResponse[key];
    var dataElement = {"dataKey" : key, "descriptionString" : descriptionStr};
    var htmlResp = 'Index is: '+${dataElement.dataKey}+'<br> Description is: '+${dataElement.descriptionString};
    res.send(htmlResp);

  });
}).on('error', function (e) {
  console.log("Got an error: ", e);
});

});


当前错误:
目前,上面的代码给出了以下错误:

/home/user/nodejs_apps/express_helloworld/myapp/app.js:139
      var htmlResp = 'Index is: '+${dataElement.dataKey}+'<br> Description is: '+${dataElement.descriptionString};
                               ^
SyntaxError: Unexpected token {
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:142:18)
    at node.js:939:3

2 个答案:

答案 0 :(得分:1)

错误来自你的字符串连接,它似乎使用了一些无效的模板语言,true变量,没有定义,你必须实际获得{{1等等。

尝试这种方式

var answer = prompt('what is your age');

if (answer === '') {
    alert('you did not answer!');
} else if (isNaN(answer)) {
    alert('please enter your age as a number');
} else if (answer >=  21) {
    alert('good to go!');
} else if (answer < 21) {
    alert('sorry not old enough');
}

答案 1 :(得分:0)

在此示例中,您尝试使用template strings,但是您使用错误,导致错误。这是模板字符串的格式:

`Hello World, the expression "1+2" evaluates to ${1+2}` ==> `Hello World, the expression "1+2" evaluates to 3`

模板字符串使用反引号,用于在SE处插入内联代码的内容。所以,你的问题行应该是这样的:

var htmlResp = `Index is: ${dataElement.dataKey}`<br> Description is: `${dataElement.descriptionString}`;

除了语法错误,我看不到你的代码有任何问题,但是谁知道呢? ;)

希望我能提供帮助!