2017-02-22 9 views
1

Я работаю над API node.js для приложения с простым TCP-сервером, который принимает NDJSON (по существу, ограниченным «\ r \ n»). Во всяком случае, у меня проблема с JSON stringify. Я создаю объект (см. Ниже) с переменными, а затем преобразую его в stringify. Когда я получаю результат, он расширяет все переменные, кроме «requestParamName». Это единственный ключ, в отличие от того, чтобы быть значение, и это результат:Node.js JSON.stringify переменные нераспространяются

{"jsonrpc":"2.0","method":"Client.SetVolume","id":0,"params":{"client":"00:00:00:00:00:00","requestParamName":10}} 

Это должно быть так:

{"jsonrpc":"2.0","method":"Client.SetVolume","id":0,"params":{"client":"00:00:00:00:00:00","volume":10}} 

Я пытался несколько вещей, но я не уверен, что заставляет его не расширять эту конкретную переменную. Если у кого-нибудь есть предложения, я был бы благодарен.

Функция:

function ClientConnect(requestMethod, requestMacAddress, requestParamName, requestParamKey) { 
    var objectRequest = { 
     "jsonrpc": "2.0", 
     "method": requestMethod, 
     "id": 0, 
     "params": { 
      "client": requestMacAddress, 
      requestParamName: requestParamKey 
     }}; 

    formattedJson = (JSON.stringify(objectRequest) + '\r\n'); 
    console.log(formattedJson); 
} 

P.S. Я новичок здесь, так что если я перепутались форматирование, я извиняться;)

ответ

0

На самом деле делает:

"params": { 
     "client": requestMacAddress, 
     requestParamName: requestParamKey 
    }}; 

точно такой же, что:

"params": { 
      "client": requestMacAddress, 
      "requestParamName": requestParamKey 
     }}; 

Вы должны сделать так (заметим, что это это функция ES6 - это нормально, если вы используете последнюю node.js):

var objectRequest = { 
     "jsonrpc": "2.0", 
     "method": requestMethod, 
     "id": 0, 
     "params": { 
      "client": requestMacAddress, 
      [requestParamName]: requestParamKey 
     }}; 

версия ES5 будет:

var objectRequest = { 
     "jsonrpc": "2.0", 
     "method": requestMethod, 
     "id": 0, 
     "params": { 
      "client": requestMacAddress 
     }}; 
objectRequest[requestParamName]= requestParamKey; 
+0

Ничего себе, я не знал о кронштейнах вещи. Это сработало отлично! Благодаря тонну! –

0

[переменная] является то, что вам нужно, в противном случае он будет таким же, как и выше ^^

+0

Не могли бы вы рассказать? –

Смежные вопросы