2017-02-05 27 views
0

建立新的JSON我收到一個JSON對象,與一些數量從wit.ai快速回復元素,像這樣:如何動態地從舊的JavaScript

"msg": "So glad to have you back. What do you want me to do? 
 
"action_id": "6fd7f2bd-db67-46d2-8742-ec160d9261c1", 
 
"confidence": 0.08098269709064443, 
 
"quickreplies": [ 
 
    "News?", 
 
    "Subscribe?", 
 
    "Contribute?", 
 
    "Organize?" 
 
], 
 
"type": "msg"

然後我需要將它們轉換爲稍微不同的格式,因爲它們按照以下代碼中所述傳遞給FaceBook Messenger。 Wit只公開'msg'和'quickreplies'。你能提出一個很好的方法來做到這一點?據我所知,它追蹤「console.log(element)」。

 if (quickreplies){ 
 
     // got simple array of quickreplies 
 
     // need to format quickreplies for FB: 
 
            // "quick_replies":[ 
 
            //  { 
 
            //  "content_type":"text", 
 
            //  "title":"Red", 
 
            //  "payload":"DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_RED" 
 
            //  }, 
 
            //  { 
 
            //  "content_type":"text", 
 
            //  "title":"Green", 
 
            //  "payload":"DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_GREEN" 
 
            //  }] 
 
     console.log('we got quickreplies, here they are:'); 
 
     var quick_replies = []; // ?? 
 
     quickreplies.forEach(function(element) { 
 
      console.log(element) 
 

 
     }); 
 
     } 
 
     else (console.log('no quickreplies'));       

在上面的例子中,最終的結果應該是這樣的:

// "quick_replies":[ 
 
    //  { 
 
    //  "content_type":"text", 
 
    //  "title":"News", 
 
    //  "payload":"News" 
 
    //  }, 
 
    //  { 
 
    //  "content_type":"text", 
 
    //  "title":"Subscribe?", 
 
    //  "payload":"Subscribe?" 
 
    //  } 
 
    //  "content_type":"text", 
 
    //  "title":"Contribute?", 
 
    //  "payload":"Contribute?" 
 
    //  }, 
 
    //  { 
 
    //  "content_type":"text", 
 
    //  "title":"Organize?", 
 
    //  "payload":"Organize?" 
 
    //  } 
 
    // ]

+0

'quickreplies'中的元素是怎樣的? – JohanP

+0

已更新的問題顯示機智反應json – Jerome

回答

0

最直接的方法,我想,將轉換使用JSON.parse()將JSON轉換爲對象。

然後操縱對象,根據需要刪除和添加元素。

完成後,使用JSON.stringify將對象轉換回JSON字符串。

0

也許這可以幫助你。

function makeReply(text) { 
    return { content_type: 'text', title: text, payload: text }; 
} 

var replies = { quick_replies: [] }; 
    quickreplies.forEach(function(element) { 
     replies.quick_replies.push(makeReply(element); // not sure what needs to be supplied for "title" and "payload" 

    }); 
+0

是的,關閉。總是會有零個或一個元素「quick_replies」,但它由一個或多個由content_type,title和payload組成的答覆組成。 – Jerome

+0

更新了代碼。 – JohanP

+0

content_type始終是「文本」。標題和有效載荷總是等於quickreplies [index']。 – Jerome