2014-10-13 43 views
3

我正在使用node.js和express解析器。我的輸入json對象的格式如下Json對象正在變平坦

{ 
    ObjectA: 
    {  
     objectB : [ 
        actions : [ 
         {       

          conditions : 
           paramA: [ 
           { 
            paramB: 45, 
            paramC: "00:01" 
           } 

它很複雜並且非常嵌套。當我在req.body接收對象我得到它的格式如下

ObjectA.ObjectB.actions.[conditions][paramA][0][paramB] 

直到行動,它有很好的對象格式,但一旦達到條件,整體結構分解和它把整個數據結構在一個對象中。 使用express或節點的嵌套對象是否存在一些限制。

我知道這不是一個代碼問題,因爲如果我減少嵌套,一切工作正常。減少嵌套意味着直接在ObjectA下移動條件。

我使用以下配置服務器

app.use(logger('combined',{stream: expressLogFile})); 
    var customValidator = new CustomValidator(); 
    app.use(bodyParser()); 
    app.use(expressValidator({ 
     customValidators: customValidator.validations 
    })); 

    app.use(methodOverride()); 

快遞版本: 「明示」:「4.9.5」

發生這種情況時,我從req.body得到的數據服務器端。 req.body數據看起來不同於我從客戶端http POST請求傳遞的數據。

OK ......確切的結構如下

{ 

     content: { 
      f: { 
       z: 'b2a98061-9b3b-4ff6-8164-164892d369ad', 
       actions: { 
        myactions: [ 
         { 
          name : 'My message actions1', 
          title : 'This is the title of my message.1', 
          message : 'Have a nice day.1', 
          conditions: { 
           condition1: 
            [ 
             { 
              percentage: 45, 
              timeoutPeriod: "00:01" 
             } 
            ], 
           condition2: [ 
            { 
             start: "12/12/2014", 
             end: "14/12/2014" 
            } 
           ], 
           condition3: [{ 
            from: { 
             time: "10:00", 
             period: "am" 
            }, 
            to: { 
             time: "2:00", 
             period: "pm" 
            } 
           }] 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 

我預計在 content.f.action.myactions格式從req.body數據[0] .conditions.condition1 [0 ] .precentage 但我revceive content.f.action.myactions [0]。 「[條件] [條件1] [0] [PRECENTAGE]」

+0

「一旦達到條件」是什麼意思?請在出現問題時顯示您使用的代碼。 – jfriend00

+0

請發佈完整有效的JSON數據。你顯示的那個是無效的。 – Josnidhin

+0

好吧,現在你已經顯示出實際的json數據改變你的問題來使用這些數據。 – Josnidhin

回答

1

我經歷過同樣的問題,也懷疑身體解析器模塊在nodejs服務器端。就我而言,問題出在JSON一代。我曾經將我的參數(直接javascript對象)作爲數據發送,而不指定內容類型。我改變了初始:

registerHandlers($.ajax({ 
    'url': "/api/" + name, 
    'type': 'POST', 
    'data': args 
}), name, onSuccess, onFailure, onError); 

由以下:

registerHandlers($.ajax({ 
    'url': "/api/" + name, 
    'type': 'POST', 
    'data': JSON.stringify(args), 
    'contentType': 'application/json' 
}), name, onSuccess, onFailure, onError); 

然後JSON被檢索在另一端就好了。