2017-02-05 25 views
0

я получаю объект JSON с некоторым количеством быстрых элементов ответа от wit.ai, как это:как динамически создавать новые JSON из старого в 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, как описано в приведенном ниже коде. Уит раскрывает только «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 в объект с использованием JSON.parse().

Затем следует манипулировать объектом, удаляя и добавляя элементы по мере необходимости.

После завершения работы с использованием 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 и полезной нагрузки. – Jerome

+0

Обновлен код. – JohanP

+0

content_type всегда «текст». заголовок и полезная нагрузка всегда равны quickreplies [index]. – Jerome

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

  • Нет связанных вопросов^_^