2016-05-02 32 views
1

私は非常にシンプルで複雑な質問があります。私はFacebookのメッセンジャーボットを開発し、1つの問題にこだわって:私のような構造を持つJSONファイルを持っているループ内でJSONを生成

{ 
    itemname1: 'Name1', 
    itemaddress1: 'Address1', 
    itemtelephone1: 'Telephone1', 
    services1: { 
    service1name1: 'servicename1', 
    service1price1: 'serviceprice2' 
    } 
    itemname2: 'Name2', 
    itemaddress2: 'Address2', 
    itemtelephone2: 'Telephone2', 
    services2: { 
    service2name1: 'servicename1', 
    service2price1: 'serviceprice2' 
    }, { 
    service2name1: 'servicename1', 
    service2price1: 'serviceprice2' 
    } 
} 

そして私はfile.jsonからそれを読んで。

ユーザーにメッセージを伝えるためには、Facebookの理解のためにJSONオブジェクトを生成する必要があります。そのスキームは:

function sendGenericMessage(sender) { 
messageData = { 
"attachment": { 
    "type": "template", 
    "payload": { 
    "template_type": "generic", 
    "elements": [{ 
     "title": "First card", 
     "subtitle": "Element #1 of an hscroll", 
     "image_url": "http://messengerdemo.parseapp.com/img/rift.png", 
     "buttons": [{ 
     "type": "web_url", 
     "url": "https://www.messenger.com/", 
     "title": "Web url" 
     }, { 
     "type": "postback", 
     "title": "Postback", 
     "payload": "Payload for first element in a generic bubble", 
     }], 
    },{ 
     "title": "Second card", 
     "subtitle": "Element #2 of an hscroll", 
     "image_url": "http://messengerdemo.parseapp.com/img/gearvr.png", 
     "buttons": [{ 
     "type": "postback", 
     "title": "Postback", 
     "payload": "Payload for second element in a generic bubble", 
     }], 
    }] 
    } 
} 

}です。

私が達成しようとしているのは、データベースから読み込み、要素数でカードを生成することです。例えば、私はJSONでitemname1とitemname2を持っているので、これは生じるはずである:

"elements": [{ 
    "name": "First card" 
    blah-blah 
    }, { 
    "name": "Second card" 
    blah-blah 
    }] 

同じボタンになります。それを賢明に実行する方法は?ああ、私はExpressでNode.JSを使用しており、DB実装にはLokiJSを使用しています。 (それはより多くのJSアルゴリズムの質問ですが)。

ありがとうございます。

+0

を持っています'要求 'を使ってリクエストのためにオブジェクトをJSONに変換します。 – migg

+0

@ミグそれは私が理解していないものです。私は何をすべきか? for(i = 1; i

+0

node.jsとJSに精通していますか?そうでなければ、以下の答えを見てください。そこに詳細があります。 – migg

答えて

2

を作成する必要はありません。JSONを作成してください。あなたはJSオブジェクトを操作しなければなりませんし、そのままクライアントに送るか、JSON.stringify()を使ってJSONを作成することができます。

この方法で、あなたはあなただけのオブジェクトと、ループ内の要素を生成し、その後、例えば、オブジェクトを送信する必要があり、その後

var elements = []; 
//loop through db elements: 
elements.push(element_from_db); 
//end_loop 

messageData.payload.elements = elements; 
+1

ありがとう、それは私のためにうまくいった。私はJS Object =と一緒に作業しなければならないことを理解していませんでした=) –

+0

私の答えがあなたの問題を解決するのに役立つなら、将来の読者もそれを理解できるようにそれを受け入れてください。 –

+0

Igor Hwang - これに使用したコードを貼り付けてください。 var要素= []; // db要素をループします。 elements.push(element_from_db); // end_loop – ChicagoDude

関連する問題